<div class="public">
<link href='https://fonts.googleapis.com/css?family=Bitter' rel='stylesheet'>
<!--
<$details summary="Doen" open="no">
<<todolist-ui width:80% base:"mijntodos">>
</$details>
-->
<$details summary="Ekklesia" open="no">
{{Let op Ekklesia}}
</$details>
<!--
<$details summary="Kalender" open="no">
<<calendar>>
</$details>
-->
<$details summary="Inhoud" open="no">
<div class="tc-table-of-contents">
<<toc-selective-expandable "TableOfContents" sort[tocnr]>>
</div>
</$details>
<$details summary="Tools" open="no">{{Tools}}
</$details>
</div>

top


1100px
\define clear()
<$button class="clear-btn">Clear
<$set name="digit-pattern" value="[0-9]{2}">
<$list filter="[[$:/newtids/temp]fields[]regexp:title<digit-pattern>]">
<$action-deletefield $tiddler="$:/newtids/temp" $field={{!!title}} />
</$list>
</$set>
</$button>
\end

\define qtempfieldvalue() <$transclude tiddler="$:/newtids/temp" field=<<qualify $(newfield)$>> />

\define setfield()
<$wikify name=qtfv text=<<qtempfieldvalue>>>
<$action-setfield $tiddler='$(tid)$' $(newfield)$=<<qtfv>> />
</$wikify>
\end

\define settags()  <$action-setfield $tiddler='$(tid)$' tags={{$:/newtids/temp!!$(qtemptags)$}} />

\define temptags() {{$:/newtids/temp!!$(qtemptags)$}}

\define tempfieldvalue() {{$:/newtids/temp!!$(newfield)$}}

\define qualtempfield()  <$macrocall $name=qualify title={{$:/newtids/temp!!$(qtempfield)$}}>> />

\define format-item(item)
<$wikify name=newfield text={{$:/newtids/temp!!$(qtempfield)$}} >
<$wikify name=newfieldval text=<<tempfieldvalue>> >
<$wikify name=tid text='{{{ [[$item$]removesuffix[
]] }}}' >
  <$list filter='[<tid>!is[missing]]'>
    <$link to=<<tid>>><$view tiddler=<<tid>> field=title/></$link>
  </$list>
  <$list filter='[<tid>is[missing]]'>
    <$button class="tc-btn-invisible tc-tiddlylink" style="text-align:left;"
         message={{$:/newtids/temp!!navigate}}>
      //<$view field=title/>//
      <<settags>>
      <$list filter='[[$:/newtids/temp]has<qtempfield>]'><<setfield>></$list>
      <$list filter="[[$:/newtids/temp]has[navigate]navigate[tm-edit-tiddler]]">
         <$action-navigate $to=<<tid>> />
      </$list>
    </$button>
  </$list>
</$wikify>
</$wikify>
</$wikify>
\end

\define splitter(list)
<$list filter='$list$ +[count[]!prefix[0]]'>
<$set name=list value='$list$'>
<$list filter="[<list>] +[removeprefix[
]] +[splitbefore[
]]" variable=item>
<$macrocall $name="format-item" item=<<item>>/><br>
<$list filter="[<list>removeprefix[
]removeprefix<item>addprefix[
]]" variable=rest>
<$macrocall $name=splitter list=<<rest>>/>
</$list>
</$list>
</$set>
</$list>
\end

\define newtids(list)
<$set name=qtemptags value=<<qualify temptags>>>
<$set name=qtempfield value=<<qualify tempfield>>>

|newtidshead|k
|>|<$checkbox tiddler="$:/newtids/temp" field="navigate" checked="tm-edit-tiddler" unchecked="no" default="no"> Navigate to new tiddler</$checkbox><<clear>>|
|Tags|<$edit-text tiddler="$:/newtids/temp" field=<<qtemptags>> placeholder=tags size=27 />|
|<$edit-text tiddler="$:/newtids/temp" field=<<qtempfield>> placeholder=Field size=10 />|<$wikify name=newfield text=<<qualtempfield>> ><$edit-text tiddler="$:/newtids/temp" field=<<newfield>> placeholder=value size=27 /></$wikify>|

<<splitter """$list$""">>
</$set>
</$set>
\end
.clear-btn { float:right
} 
.newtidshead {
  width:100%;
  border:0;
  background:#282a36;
  position: -webkit-sticky;
  position: sticky;
  top: 40px;
  z-index:2;
}
.newtidshead td {border:0;
}
.newtidshead input {background:lightyellow; color:black; border:1px solid silver;
}
{
    "Hint for Muffin tutorial": "hide",
    "Muffin 1": "hide",
    "Muffin 2": "hide",
    "Dave Gifford": "hide",
    "Autocompletion": "hide",
    "New tiddler linked here": "hide",
    "Muffin!": "hide"
}
<div class="tc-advanced-search">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]" default="$:/core/ui/AdvancedSearch/System" actions="""<$action-setfield $tiddler="$:/state/advancedsearch/currentTab" text=<<currentTab>>/>""" explicitState="$:/state/tab--1498284803"/>
</div>
20210426
{
    "20210426102720620": "12:27",
    "20210426102750618": "12:27",
    "20210426105056295": "12:50",
    "20210426111814139": "13:18"
}

{
    "20210426107004139": "pending",
    "20210426070041390": "pending"
}
Built from branch 'tiddlywiki-com' at commit 1a6be5ae09de1289727e9a981560d295cf8f361a of https://github.com/Jermolene/TiddlyWiki5.git at 2020-04-15 15:19:44 UTC
yes
yes
[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]
...
yes
hide
hide
hide
show
hide
hide
show
hide
hide
hide
hide
hide
show
hide
hide
hide
hide
show
hide
show
Kookma plugin library is a set of plugins, themes, and scripts, to extend functionality and add new features to Tiddlywiki. For detail information visit the library at [[GitHub|https://github.com/kookma]]. It is recommended to backup your data before installing any plugin, theme, or script. 

To use in other wikis, drag and drop this link to those wikis: [[Kookma Plugin Library|$:/config/KookmaPluginLibrary]]

yes
yes
DD MMM
{{$:/language/OfficialPluginLibrary/Hint}}
show
hide
hide
hide
show
show
hide
hide
yes
yes
no
yes
yes
{{$:/language/Buttons/Bold/Hint}}



shift-alt-Down
shift-alt-C
ctrl-1
shift-alt-P
shift-alt-R
ctrl-shift-I
ctrl-S
55
auto
yes
yes
hide
hide
hide
show
show
hide
hide
hide
hide
enable
<div class="tc-control-panel">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" default="$:/core/ui/ControlPanel/Info" explicitState="$:/state/tab-1749438307"/>
</div>
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/add-comment": {
            "title": "$:/core/images/add-comment",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
        },
        "$:/core/images/gitter": {
            "title": "$:/core/images/gitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
        },
        "$:/core/images/left-arrow": {
            "title": "$:/core/images/left-arrow",
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
        },
        "$:/core/images/linkify": {
            "title": "$:/core/images/linkify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
        },
        "$:/core/images/rotate-left": {
            "title": "$:/core/images/rotate-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
        },
        "$:/core/images/transcludify": {
            "title": "$:/core/images/transcludify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/up-arrow": {
            "title": "$:/core/images/up-arrow",
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "copy to clipboard"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "Copy this text to the clipboard"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/SidebarSearch/Hint": {
            "title": "$:/language/Buttons/SidebarSearch/Hint",
            "text": "Select the sidebar search field"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "wikilink"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "Wrap selection in square brackets"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "rotate left"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "Rotate image left by 90 degrees"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/ToggleSidebar/Hint": {
            "title": "$:/language/Buttons/ToggleSidebar/Hint",
            "text": "Toggle the sidebar visibility"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "transclusion"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "Wrap selection in curly brackets"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration"
        },
        "$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
            "text": "Default focus field for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "Title of new tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
            "text": "Tags for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/RemoveTags": {
            "title": "$:/language/ControlPanel/Basics/RemoveTags",
            "text": "Update to current format"
        },
        "$:/language/ControlPanel/Basics/RemoveTags/Hint": {
            "title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
            "text": "Update the tags configuration to the latest format"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LayoutSwitcher/Caption": {
            "title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
            "text": "Layout"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
            "title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
            "text": "delete this entry from the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
            "title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
            "text": "Show color names that are not part of the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/AlsoRequires": {
            "title": "$:/language/ControlPanel/Plugins/AlsoRequires",
            "text": "Also requires:"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Downgrade/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
            "text": "downgrade"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
            "title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
            "text": "(requires reload)"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Plugins/Update/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Update/Caption",
            "text": "update"
        },
        "$:/language/ControlPanel/Plugins/Updates/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Caption",
            "text": "Updates"
        },
        "$:/language/ControlPanel/Plugins/Updates/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Hint",
            "text": "Available updates to installed plugins"
        },
        "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
            "text": "Update <<update-count>> plugins"
        },
        "$:/language/ControlPanel/Plugins/SubPluginPrompt": {
            "title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
            "text": "With <<count>> sub-plugins available"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/GitService/Branch": {
            "title": "$:/language/ControlPanel/Saving/GitService/Branch",
            "text": "Target branch for saving"
        },
        "$:/language/ControlPanel/Saving/GitService/CommitMessage": {
            "title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
            "text": "Saved by TiddlyWiki"
        },
        "$:/language/ControlPanel/Saving/GitService/Description": {
            "title": "$:/language/ControlPanel/Saving/GitService/Description",
            "text": "These settings are only used when saving to <<service-name>>"
        },
        "$:/language/ControlPanel/Saving/GitService/Filename": {
            "title": "$:/language/ControlPanel/Saving/GitService/Filename",
            "text": "Filename of target file (e.g. `index.html`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Path": {
            "title": "$:/language/ControlPanel/Saving/GitService/Path",
            "text": "Path to target file (e.g. `/wiki/`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Repo": {
            "title": "$:/language/ControlPanel/Saving/GitService/Repo",
            "text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
        },
        "$:/language/ControlPanel/Saving/GitService/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
            "text": "Server API URL"
        },
        "$:/language/ControlPanel/Saving/GitService/UserName": {
            "title": "$:/language/ControlPanel/Saving/GitService/UserName",
            "text": "Username"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
            "text": "~GitHub Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
            "text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
            "text": "~GitLab Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
            "text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
            "text": "Gitea Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
            "text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
            "text": "~TiddlySpot Control Panel"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
            "text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "Permalink/permaview Mode"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "Choose how permalink/permaview is handled:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "Copy permalink/permaview URL to clipboard"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "Update address bar with permalink/permaview URL"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "Default More Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "Specify which More sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "Stylesheets"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "Expand All"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "Restore"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "Defines how requests are authenticated by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "Defines how individual URL patterns are handled by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/menubar-background": {
            "title": "$:/language/Docs/PaletteColours/menubar-background",
            "text": "Menu bar background"
        },
        "$:/language/Docs/PaletteColours/menubar-foreground": {
            "title": "$:/language/Docs/PaletteColours/menubar-foreground",
            "text": "Menu bar foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` element background"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` element text"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "field list"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "Show field list"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
            "text": "Add the new field to the tiddler"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
            "text": "add tag"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/ClearInput/Caption": {
            "title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
            "text": "clear input"
        },
        "$:/language/EditTemplate/Tags/ClearInput/Hint": {
            "title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
            "text": "Clear tag input"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following references to this tiddler will not be automatically updated:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hide-body": {
            "title": "$:/language/Docs/Fields/hide-body",
            "text": "The view template will hide bodies of tiddlers if set to: ''yes''"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/throttle.refresh": {
            "title": "$:/language/Docs/Fields/throttle.refresh",
            "text": "If present, throttles refreshes of this tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/toc-link": {
            "title": "$:/language/Docs/Fields/toc-link",
            "text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Docs/Fields/_is_skinny": {
            "title": "$:/language/Docs/Fields/_is_skinny",
            "text": "If present, indicates that the tiddler text field must be loaded from the server"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SessionTiddlers": {
            "title": "$:/language/Filters/SessionTiddlers",
            "text": "Tiddlers modified since the wiki was loaded"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/deletetiddlers": {
            "title": "$:/language/Help/deletetiddlers",
            "description": "Deletes a group of tiddlers",
            "text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "Import tiddlers from a file",
            "text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "Renders individual tiddlers to files",
            "text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "Saves individual raw tiddlers to files",
            "text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/savewikifolder": {
            "title": "$:/language/Help/savewikifolder",
            "description": "Saves a wiki to a new wiki folder",
            "text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
            "text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "Preview:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "Text"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "Text (Raw)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "Fields"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "Diff"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "Diff (Fields)"
        },
        "$:/language/Import/Listing/Rename/Tooltip": {
            "title": "$:/language/Import/Listing/Rename/Tooltip",
            "text": "Rename tiddler before importing"
        },
        "$:/language/Import/Listing/Rename/Prompt": {
            "title": "$:/language/Import/Listing/Rename/Prompt",
            "text": "Rename to:"
        },
        "$:/language/Import/Listing/Rename/ConfirmRename": {
            "title": "$:/language/Import/Listing/Rename/ConfirmRename",
            "text": "Rename tiddler"
        },
        "$:/language/Import/Listing/Rename/CancelRename": {
            "title": "$:/language/Import/Listing/Rename/CancelRename",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Rename/OverwriteWarning": {
            "title": "$:/language/Import/Listing/Rename/OverwriteWarning",
            "text": "A tiddler with this title already exists."
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin."
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>."
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler."
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler."
        },
        "$:/language/Import/Upgrader/System/Warning": {
            "title": "$:/language/Import/Upgrader/System/Warning",
            "text": "Core module tiddler."
        },
        "$:/language/Import/Upgrader/System/Alert": {
            "title": "$:/language/Import/Upgrader/System/Alert",
            "text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>."
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmAction": {
            "title": "$:/language/ConfirmAction",
            "text": "Do you wish to proceed?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> differences"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/FilterRunPrefix": {
            "title": "$:/language/Error/FilterRunPrefix",
            "text": "Filter Error: Unknown prefix for filter run"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/FormatFilterOperator": {
            "title": "$:/language/Error/FormatFilterOperator",
            "text": "Filter Error: Unknown suffix for the 'format' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/NetworkErrorAlert": {
            "title": "$:/language/Error/NetworkErrorAlert",
            "text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LayoutSwitcher/Description": {
            "title": "$:/language/LayoutSwitcher/Description",
            "text": "Open the layout switcher"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PageTemplate/Description": {
            "title": "$:/language/PageTemplate/Description",
            "text": "the default ~TiddlyWiki layout"
        },
        "$:/language/PageTemplate/Name": {
            "title": "$:/language/PageTemplate/Name",
            "text": "Default ~PageTemplate"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
            "title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
            "text": "Open the ~AdvancedSearch panel from within the sidebar search field"
        },
        "$:/language/Shortcuts/Input/Accept/Hint": {
            "title": "$:/language/Shortcuts/Input/Accept/Hint",
            "text": "Accept the selected item"
        },
        "$:/language/Shortcuts/Input/AcceptVariant/Hint": {
            "title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
            "text": "Accept the selected item (variant)"
        },
        "$:/language/Shortcuts/Input/Cancel/Hint": {
            "title": "$:/language/Shortcuts/Input/Cancel/Hint",
            "text": "Clear the input field"
        },
        "$:/language/Shortcuts/Input/Down/Hint": {
            "title": "$:/language/Shortcuts/Input/Down/Hint",
            "text": "Select the next item"
        },
        "$:/language/Shortcuts/Input/Tab-Left/Hint": {
            "title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
            "text": "Select the previous Tab"
        },
        "$:/language/Shortcuts/Input/Tab-Right/Hint": {
            "title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
            "text": "Select the next Tab"
        },
        "$:/language/Shortcuts/Input/Up/Hint": {
            "title": "$:/language/Shortcuts/Input/Up/Hint",
            "text": "Select the previous item"
        },
        "$:/language/Shortcuts/SidebarLayout/Hint": {
            "title": "$:/language/Shortcuts/SidebarLayout/Hint",
            "text": "Change the sidebar layout"
        },
        "$:/language/Switcher/Subtitle/theme": {
            "title": "$:/language/Switcher/Subtitle/theme",
            "text": "Switch Theme"
        },
        "$:/language/Switcher/Subtitle/layout": {
            "title": "$:/language/Switcher/Subtitle/layout",
            "text": "Switch Layout"
        },
        "$:/language/Switcher/Subtitle/language": {
            "title": "$:/language/Switcher/Subtitle/language",
            "text": "Switch Language"
        },
        "$:/language/Switcher/Subtitle/palette": {
            "title": "$:/language/Switcher/Subtitle/palette",
            "text": "Switch Palette"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Icons/None": {
            "title": "$:/language/TagManager/Icons/None",
            "text": "None"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "Journal\n"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "Copied to clipboard!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "Failed to copy to clipboard!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "Explorer"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "Editor font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "Backlinks"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "title": "$:/core/modules/commander.js",
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "title": "$:/core/modules/commands/build.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "title": "$:/core/modules/commands/clearpassword.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/deletetiddlers.js": {
            "title": "$:/core/modules/commands/deletetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "title": "$:/core/modules/commands/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "title": "$:/core/modules/commands/fetch.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tdata = [];\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        data.push(chunk);\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(Buffer.concat(data),type,options,url);\n\t\t        callback(null);\n\t        } else {\n\t        \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t        \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t        \t} else {\n\t\t        \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t        \t\t\n\t        \t}\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "title": "$:/core/modules/commands/help.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/import.js": {
            "title": "$:/core/modules/commands/import.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "title": "$:/core/modules/commands/init.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/listen.js": {
            "title": "$:/core/modules/commands/listen.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "title": "$:/core/modules/commands/load.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "title": "$:/core/modules/commands/makelibrary.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "title": "$:/core/modules/commands/output.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "title": "$:/core/modules/commands/password.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/render.js": {
            "title": "$:/core/modules/commands/render.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "title": "$:/core/modules/commands/rendertiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/save.js": {
            "title": "$:/core/modules/commands/save.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "title": "$:/core/modules/commands/savetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "title": "$:/core/modules/commands/savetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savewikifolder.js": {
            "title": "$:/core/modules/commands/savewikifolder.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type]  || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "title": "$:/core/modules/commands/server.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "title": "$:/core/modules/commands/setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "title": "$:/core/modules/commands/unpackplugin.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "title": "$:/core/modules/commands/verbose.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "title": "$:/core/modules/commands/version.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "title": "$:/core/modules/config.js",
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "title": "$:/core/modules/deserializers.js",
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "title": "$:/core/modules/editor/engines/framed.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\t\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "title": "$:/core/modules/editor/engines/simple.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "title": "$:/core/modules/editor/factory.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/rotate-left.js": {
            "title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/save-selection.js": {
            "title": "$:/core/modules/editor/operations/text/save-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filterrunprefixes/all.js": {
            "title": "$:/core/modules/filterrunprefixes/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/and.js": {
            "title": "$:/core/modules/filterrunprefixes/and.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/else.js": {
            "title": "$:/core/modules/filterrunprefixes/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/except.js": {
            "title": "$:/core/modules/filterrunprefixes/except.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/filter.js": {
            "title": "$:/core/modules/filterrunprefixes/filter.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/intersection.js": {
            "title": "$:/core/modules/filterrunprefixes/intersection.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/or.js": {
            "title": "$:/core/modules/filterrunprefixes/or.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/reduce.js": {
            "title": "$:/core/modules/filterrunprefixes/reduce.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" +  (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filters/addprefix.js": {
            "title": "$:/core/modules/filters/addprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "title": "$:/core/modules/filters/addsuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "title": "$:/core/modules/filters/after.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "title": "$:/core/modules/filters/all/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "title": "$:/core/modules/filters/all/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "title": "$:/core/modules/filters/all/orphans.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "title": "$:/core/modules/filters/all/shadows.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "title": "$:/core/modules/filters/all/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "title": "$:/core/modules/filters/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "title": "$:/core/modules/filters/backlinks.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "title": "$:/core/modules/filters/before.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "title": "$:/core/modules/filters/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/compare.js": {
            "title": "$:/core/modules/filters/compare.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/contains.js": {
            "title": "$:/core/modules/filters/contains.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "title": "$:/core/modules/filters/count.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "title": "$:/core/modules/filters/days.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/duplicateslugs.js": {
            "title": "$:/core/modules/filters/duplicateslugs.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "title": "$:/core/modules/filters/each.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "title": "$:/core/modules/filters/eachday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "title": "$:/core/modules/filters/editiondescription.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "title": "$:/core/modules/filters/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/else.js": {
            "title": "$:/core/modules/filters/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "title": "$:/core/modules/filters/enlist.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "title": "$:/core/modules/filters/field.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "title": "$:/core/modules/filters/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/filter.js": {
            "title": "$:/core/modules/filters/filter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/format/date.js": {
            "title": "$:/core/modules/filters/format/date.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "formatfilteroperator"
        },
        "$:/core/modules/filters/format/relativedate.js": {
            "title": "$:/core/modules/filters/format/relativedate.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "formatfilteroperator"
        },
        "$:/core/modules/filters/format.js": {
            "title": "$:/core/modules/filters/format.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "title": "$:/core/modules/filters/get.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "title": "$:/core/modules/filters/getindex.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getvariable.js": {
            "title": "$:/core/modules/filters/getvariable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "title": "$:/core/modules/filters/has.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "title": "$:/core/modules/filters/haschanged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "title": "$:/core/modules/filters/indexes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "title": "$:/core/modules/filters/insertbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/binary.js": {
            "title": "$:/core/modules/filters/is/binary.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/blank.js": {
            "title": "$:/core/modules/filters/is/blank.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "title": "$:/core/modules/filters/is/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/draft.js": {
            "title": "$:/core/modules/filters/is/draft.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "title": "$:/core/modules/filters/is/image.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "title": "$:/core/modules/filters/is/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "title": "$:/core/modules/filters/is/orphan.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "title": "$:/core/modules/filters/is/shadow.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "title": "$:/core/modules/filters/is/system.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "title": "$:/core/modules/filters/is/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "title": "$:/core/modules/filters/is/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/variable.js": {
            "title": "$:/core/modules/filters/is/variable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "title": "$:/core/modules/filters/is.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "title": "$:/core/modules/filters/limit.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "title": "$:/core/modules/filters/links.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "title": "$:/core/modules/filters/list.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "title": "$:/core/modules/filters/listed.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "title": "$:/core/modules/filters/listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/lookup.js": {
            "title": "$:/core/modules/filters/lookup.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/match.js": {
            "title": "$:/core/modules/filters/match.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/math.js": {
            "title": "$:/core/modules/filters/math.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "title": "$:/core/modules/filters/minlength.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "title": "$:/core/modules/filters/modules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "title": "$:/core/modules/filters/moduletypes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "title": "$:/core/modules/filters/next.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "title": "$:/core/modules/filters/prefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "title": "$:/core/modules/filters/previous.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/range.js": {
            "title": "$:/core/modules/filters/range.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/reduce.js": {
            "title": "$:/core/modules/filters/reduce.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" +  list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "title": "$:/core/modules/filters/regexp.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "title": "$:/core/modules/filters/removeprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "title": "$:/core/modules/filters/removesuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "title": "$:/core/modules/filters/sameday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "title": "$:/core/modules/filters/search.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "title": "$:/core/modules/filters/shadowsource.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/slugify.js": {
            "title": "$:/core/modules/filters/slugify.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "title": "$:/core/modules/filters/sort.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sortsub.js": {
            "title": "$:/core/modules/filters/sortsub.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "title": "$:/core/modules/filters/splitbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "title": "$:/core/modules/filters/storyviews.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/strings.js": {
            "title": "$:/core/modules/filters/strings.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subfilter.js": {
            "title": "$:/core/modules/filters/subfilter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subtiddlerfields.js": {
            "title": "$:/core/modules/filters/subtiddlerfields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "title": "$:/core/modules/filters/suffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "title": "$:/core/modules/filters/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "title": "$:/core/modules/filters/tagging.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "title": "$:/core/modules/filters/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/then.js": {
            "title": "$:/core/modules/filters/then.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "title": "$:/core/modules/filters/title.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "title": "$:/core/modules/filters/untagged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/variables.js": {
            "title": "$:/core/modules/filters/variables.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "title": "$:/core/modules/filters/x-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset =  (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "title": "$:/core/modules/filters.js",
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\n}\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operands = [],\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/indexers/backlinks-indexer.js": {
            "title": "$:/core/modules/indexers/backlinks-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser =  this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t    oldLinks = [],\n\t    self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/field-indexer.js": {
            "title": "$:/core/modules/indexers/field-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/tag-indexer.js": {
            "title": "$:/core/modules/indexers/tag-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/info/platform.js": {
            "title": "$:/core/modules/info/platform.js",
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "title": "$:/core/modules/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "title": "$:/core/modules/language.js",
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "title": "$:/core/modules/macros/changecount.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "title": "$:/core/modules/macros/contrastcolour.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "title": "$:/core/modules/macros/jsontiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "title": "$:/core/modules/macros/makedatauri.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "title": "$:/core/modules/macros/now.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "title": "$:/core/modules/macros/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "title": "$:/core/modules/macros/resolvepath.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/unusedtitle.js": {
            "title": "$:/core/modules/macros/unusedtitle.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "title": "$:/core/modules/macros/version.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "title": "$:/core/modules/parsers/audioparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/binaryparser.js": {
            "title": "$:/core/modules/parsers/binaryparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "title": "$:/core/modules/parsers/csvparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "title": "$:/core/modules/parsers/htmlparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "title": "$:/core/modules/parsers/imageparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "title": "$:/core/modules/utils/parseutils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "title": "$:/core/modules/parsers/pdfparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "title": "$:/core/modules/parsers/textparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "title": "$:/core/modules/parsers/videoparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/import.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/import.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "title": "$:/core/modules/pluginswitcher.js",
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "title": "$:/core/modules/saver-handler.js",
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "title": "$:/core/modules/savers/andtidwiki.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t    link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "title": "$:/core/modules/savers/beaker.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/custom.js": {
            "title": "$:/core/modules/savers/custom.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t//   Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "title": "$:/core/modules/savers/download.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "title": "$:/core/modules/savers/fsosaver.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitea.js": {
            "title": "$:/core/modules/savers/gitea.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/github.js": {
            "title": "$:/core/modules/savers/github.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitlab.js": {
            "title": "$:/core/modules/savers/gitlab.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/hyperdrive.js": {
            "title": "$:/core/modules/savers/hyperdrive.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "title": "$:/core/modules/savers/manualdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "title": "$:/core/modules/savers/msdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "title": "$:/core/modules/savers/put.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "title": "$:/core/modules/savers/tiddlyie.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "title": "$:/core/modules/savers/twedit.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "title": "$:/core/modules/savers/upload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/server/authenticators/basic.js": {
            "title": "$:/core/modules/server/authenticators/basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/authenticators/header.js": {
            "title": "$:/core/modules/server/authenticators/header.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/routes/delete-tiddler.js": {
            "title": "$:/core/modules/server/routes/delete-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-favicon.js": {
            "title": "$:/core/modules/server/routes/get-favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-file.js": {
            "title": "$:/core/modules/server/routes/get-file.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-index.js": {
            "title": "$:/core/modules/server/routes/get-index.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-login-basic.js": {
            "title": "$:/core/modules/server/routes/get-login-basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-status.js": {
            "title": "$:/core/modules/server/routes/get-status.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler-html.js": {
            "title": "$:/core/modules/server/routes/get-tiddler-html.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler.js": {
            "title": "$:/core/modules/server/routes/get-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddlers-json.js": {
            "title": "$:/core/modules/server/routes/get-tiddlers-json.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/put-tiddler.js": {
            "title": "$:/core/modules/server/routes/put-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/server.js": {
            "title": "$:/core/modules/server/server.js",
            "text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/browser-messaging.js": {
            "title": "$:/core/modules/browser-messaging.js",
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "title": "$:/core/modules/startup/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/CSSescape.js": {
            "title": "$:/core/modules/startup/CSSescape.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "title": "$:/core/modules/startup/favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "title": "$:/core/modules/startup/info.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "title": "$:/core/modules/startup/load-modules.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "title": "$:/core/modules/startup/password.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/plugins.js": {
            "title": "$:/core/modules/startup/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "title": "$:/core/modules/startup/render.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget, recursionMarker: \"no\"});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n   \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "title": "$:/core/modules/startup/rootwidget.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\t\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard  mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "title": "$:/core/modules/startup.js",
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "title": "$:/core/modules/startup/story.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "title": "$:/core/modules/startup/windows.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t    srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "title": "$:/core/modules/story.js",
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "title": "$:/core/modules/storyviews/classic.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "title": "$:/core/modules/storyviews/pop.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "title": "$:/core/modules/storyviews/zoomin.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "title": "$:/core/modules/syncer.js",
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\" ? true : false);\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "title": "$:/core/modules/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "title": "$:/core/modules/upgraders/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "title": "$:/core/modules/upgraders/system.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
            "text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/crypto.js": {
            "title": "$:/core/modules/utils/crypto.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/csv.js": {
            "title": "$:/core/modules/utils/csv.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
            "text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&amp;\").replace(d,\"&lt;\").replace(e,\"&gt;\").replace(f,\"&para;<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "title": "$:/core/modules/utils/dom/animator.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "title": "$:/core/modules/utils/dom/browser.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "title": "$:/core/modules/utils/dom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "title": "$:/core/modules/utils/dom/http.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "title": "$:/core/modules/utils/dom/modal.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "title": "$:/core/modules/utils/dom/notifier.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "title": "$:/core/modules/utils/dom/popup.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n        \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "title": "$:/core/modules/utils/dom/scroller.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t    srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "title": "$:/core/modules/utils/edition-info.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "title": "$:/core/modules/utils/fakedom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "title": "$:/core/modules/utils/filesystem.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/linkedlist.js": {
            "title": "$:/core/modules/utils/linkedlist.js",
            "text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\tthis.index = Object.create(null);\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = this;\n\tthis.prev = this;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_removeOne(this,value);\n\t}\n};\n\nLinkedList.prototype.push = function(/* values */) {\n\tfor(var i = 0; i < arguments.length; i++) {\n\t\tvar value = arguments[i];\n\t\tvar node = {value: value};\n\t\tvar preexistingNode = this.index[value];\n\t\t_linkToEnd(this,node);\n\t\tif(preexistingNode) {\n\t\t\t// We want to keep pointing to the first instance, but we want\n\t\t\t// to have that instance (or chain of instances) point to the\n\t\t\t// new one.\n\t\t\twhile (preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\tpreexistingNode.copy = node;\n\t\t} else {\n\t\t\tthis.index[value] = node;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tthis.push.apply(this,value);\n\t} else {\n\t\tvar node = _removeOne(this,value);\n\t\tif(!node) {\n\t\t\tnode = {value: value};\n\t\t\tthis.index[value] = node;\n\t\t} else {\n\t\t\t// Put this node at the end of the copy chain.\n\t\t\tvar preexistingNode = node;\n\t\t\twhile(preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\t// The order of these three statements is important,\n\t\t\t// because sometimes preexistingNode == node.\n\t\t\tpreexistingNode.copy = node;\n\t\t\tthis.index[value] = node.copy;\n\t\t\tnode.copy = undefined;\n\t\t}\n\t\t_linkToEnd(this,node);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\tcallback(ptr.value);\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\toutput.push(ptr.value);\n\t}\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar node = list.index[value];\n\tif(node) {\n\t\tnode.prev.next = node.next;\n\t\tnode.next.prev = node.prev;\n\t\tlist.length -= 1;\n\t\t// Point index to the next instance of the same value, maybe nothing.\n\t\tlist.index[value] = node.copy;\n\t}\n\treturn node;\n};\n\nfunction _linkToEnd(list,node) {\n\t// Sticks the given node onto the end of the list.\n\tlist.prev.next = node;\n\tnode.prev = list.prev;\n\tlist.prev = node;\n\tnode.next = list;\n\tlist.length += 1;\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
            "module-type": "utils",
            "type": "application/javascript"
        },
        "$:/core/modules/utils/logger.js": {
            "title": "$:/core/modules/utils/logger.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "title": "$:/core/modules/utils/parsetree.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "title": "$:/core/modules/utils/performance.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "title": "$:/core/modules/utils/pluginmaker.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/transliterate.js": {
            "title": "$:/core/modules/utils/transliterate.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "title": "$:/core/modules/utils/utils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date),4);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call(null,match);\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s, rawUnicode) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(regex, exports.escape);   // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/\\x08/g, '\\\\b')           // backspace\n\t\t.replace(/\\x0c/g, '\\\\f')           // formfeed\n\t\t.replace(/\\t/g, '\\\\t')             // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-confirm.js": {
            "title": "$:/core/modules/widgets/action-confirm.js",
            "text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "title": "$:/core/modules/widgets/action-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-log.js": {
            "title": "$:/core/modules/widgets/action-log.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "title": "$:/core/modules/widgets/action-navigate.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-popup.js": {
            "title": "$:/core/modules/widgets/action-popup.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "title": "$:/core/modules/widgets/action-setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "title": "$:/core/modules/widgets/browse.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "title": "$:/core/modules/widgets/button.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = \"button\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\n}\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "title": "$:/core/modules/widgets/checkbox.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "title": "$:/core/modules/widgets/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "title": "$:/core/modules/widgets/count.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/diff-text.js": {
            "title": "$:/core/modules/widgets/diff-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "title": "$:/core/modules/widgets/draggable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "title": "$:/core/modules/widgets/droppable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "title": "$:/core/modules/widgets/dropzone.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "title": "$:/core/modules/widgets/edit-binary.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "title": "$:/core/modules/widgets/edit-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "title": "$:/core/modules/widgets/edit.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "title": "$:/core/modules/widgets/element.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "title": "$:/core/modules/widgets/encrypt.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "title": "$:/core/modules/widgets/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/eventcatcher.js": {
            "title": "$:/core/modules/widgets/eventcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent handler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "title": "$:/core/modules/widgets/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "title": "$:/core/modules/widgets/image.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "title": "$:/core/modules/widgets/importvariables.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "title": "$:/core/modules/widgets/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "title": "$:/core/modules/widgets/link.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "title": "$:/core/modules/widgets/list.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/log.js": {
            "title": "$:/core/modules/widgets/log.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
            "type": "application/javascript",
            "module-type": "widget-subclass"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "title": "$:/core/modules/widgets/macrocall.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "title": "$:/core/modules/widgets/navigator.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t\tnewFields[\"suppressed-\" + title] = \"yes\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\");  \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "title": "$:/core/modules/widgets/password.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/qualify.js": {
            "title": "$:/core/modules/widgets/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "title": "$:/core/modules/widgets/radio.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/range.js": {
            "title": "$:/core/modules/widgets/range.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\",   handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\",    handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\",     handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) {  // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "title": "$:/core/modules/widgets/raw.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "title": "$:/core/modules/widgets/reveal.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t    defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "title": "$:/core/modules/widgets/scrollable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "title": "$:/core/modules/widgets/select.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "title": "$:/core/modules/widgets/set.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "title": "$:/core/modules/widgets/text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "title": "$:/core/modules/widgets/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "title": "$:/core/modules/widgets/transclude.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "title": "$:/core/modules/widgets/vars.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "title": "$:/core/modules/widgets/view.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "title": "$:/core/modules/widgets/widget.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning  that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "title": "$:/core/modules/widgets/wikify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "title": "$:/core/modules/wiki-bulkops.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "title": "$:/core/modules/wiki.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t//         indexOf unless we have a new\n\t\t\t\t\t//         position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\")                                       // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\")                                 // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\")                                     // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\")                                         // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\");                                        // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/CupertinoDark": {
            "title": "$:/palettes/CupertinoDark",
            "tags": "$:/tags/Palette",
            "name": "Cupertino Dark",
            "description": "A macOS inspired dark palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
        },
        "$:/palettes/DarkPhotos": {
            "title": "$:/palettes/DarkPhotos",
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DesertSand": {
            "title": "$:/palettes/DesertSand",
            "tags": "$:/tags/Palette",
            "name": "Desert Sand",
            "description": "A desert sand palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #E9E0C7\ndropdown-tab-background: #BAB29C\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"
        },
        "$:/palettes/GruvboxDark": {
            "title": "$:/palettes/GruvboxDark",
            "name": "Gruvbox Dark",
            "description": "Retro groove color scheme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "https://github.com/morhetz/gruvbox",
            "text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
        },
        "$:/palettes/Nord": {
            "title": "$:/palettes/Nord",
            "name": "Nord",
            "description": "An arctic, north-bluish color palette.",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
            "text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarizedDark": {
            "title": "$:/palettes/SolarizedDark",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision dark colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedDark",
            "text": "alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"
        },
        "$:/palettes/SolarizedLight": {
            "title": "$:/palettes/SolarizedLight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedLight",
            "text": "alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"
        },
        "$:/palettes/SpartanDay": {
            "title": "$:/palettes/SpartanDay",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Cold, spartan day colors",
            "name": "Spartan Day",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
        },
        "$:/palettes/SpartanNight": {
            "title": "$:/palettes/SpartanNight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Dark spartan colors",
            "name": "Spartan Night",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
        },
        "$:/palettes/Twilight": {
            "title": "$:/palettes/Twilight",
            "tags": "$:/tags/Palette",
            "author": "Thomas Elmiger",
            "type": "application/x-tiddler-dictionary",
            "name": "Twilight",
            "description": "Delightful, soft darkness.",
            "text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-raw": {
            "title": "$:/core/templates/canonical-uri-external-raw",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "condition": "[<count>compare:lte[1]]",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
        },
        "$:/core/save/all-external-js": {
            "title": "$:/core/save/all-external-js",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
        },
        "$:/core/templates/tiddlywiki5.js": {
            "title": "$:/core/templates/tiddlywiki5.js",
            "text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
        },
        "$:/core/templates/tiddlywiki5.js/tiddlers": {
            "title": "$:/core/templates/tiddlywiki5.js/tiddlers",
            "text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
        },
        "$:/core/templates/tiddlywiki5-external-js.html": {
            "title": "$:/core/templates/tiddlywiki5-external-js.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
        },
        "$:/core/templates/html-div-skinny-tiddler": {
            "title": "$:/core/templates/html-div-skinny-tiddler",
            "text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/server/static.sidebar.wikitext": {
            "title": "$:/core/templates/server/static.sidebar.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
        },
        "$:/core/templates/server/static.tiddler.html": {
            "title": "$:/core/templates/server/static.tiddler.html",
            "text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
        },
        "$:/core/templates/server/static.tiddler.wikitext": {
            "title": "$:/core/templates/server/static.tiddler.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/Actions/new-image": {
            "title": "$:/core/ui/Actions/new-image",
            "tags": "$:/tags/Actions",
            "description": "create a new image tiddler",
            "text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-journal": {
            "title": "$:/core/ui/Actions/new-journal",
            "tags": "$:/tags/Actions",
            "description": "create a new journal tiddler",
            "text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-tiddler": {
            "title": "$:/core/ui/Actions/new-tiddler",
            "tags": "$:/tags/Actions",
            "description": "create a new empty tiddler",
            "text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
            "text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>>  filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "first-search-filter": "[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Updates": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
            "caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
            "text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"&#91;&#91;<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/GitHub": {
            "title": "$:/core/ui/ControlPanel/Saving/GitHub",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/GitLab": {
            "title": "$:/core/ui/ControlPanel/Saving/GitLab",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
        },
        "$:/core/ui/ControlPanel/Saving/Gitea": {
            "title": "$:/core/ui/ControlPanel/Saving/Gitea",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Stylesheets": {
            "title": "$:/core/ui/ControlPanel/Stylesheets",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
            "second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-current": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from current",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from shadow (if any)",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/state/showeditpreview": {
            "title": "$:/state/showeditpreview",
            "text": "no"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n  tabindex={{$:/config/EditTabIndex}}\n  focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n  cancelPopups=\"yes\"\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "first-search-filter": "[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/linkify": {
            "title": "$:/core/ui/EditorToolbar/linkify",
            "caption": "{{$:/language/Buttons/Linkify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Linkify/Hint}}",
            "icon": "$:/core/images/linkify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((linkify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/rotate-left": {
            "title": "$:/core/ui/EditorToolbar/rotate-left",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/rotate-left",
            "caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
            "description": "{{$:/language/Buttons/RotateLeft/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/transcludify": {
            "title": "$:/core/ui/EditorToolbar/transcludify",
            "caption": "{{$:/language/Buttons/Transcludify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Transcludify/Hint}}",
            "icon": "$:/core/images/transcludify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((transcludify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/SessionTiddlers": {
            "title": "$:/core/Filters/SessionTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[haschanged[]]",
            "description": "{{$:/language/Filters/SessionTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>>  default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button  class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button  class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Diff": {
            "title": "$:/core/ui/ImportPreviews/Diff",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Diff}}",
            "text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
        },
        "$:/core/ui/ImportPreviews/DiffFields": {
            "title": "$:/core/ui/ImportPreviews/DiffFields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
            "text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
        },
        "$:/core/ui/ImportPreviews/Fields": {
            "title": "$:/core/ui/ImportPreviews/Fields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Fields}}",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Text": {
            "title": "$:/core/ui/ImportPreviews/Text",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Text}}",
            "text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
        },
        "$:/core/ui/ImportPreviews/TextRaw": {
            "title": "$:/core/ui/ImportPreviews/TextRaw",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
            "text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
        },
        "$:/core/ui/KeyboardShortcuts/advanced-search": {
            "title": "$:/core/ui/KeyboardShortcuts/advanced-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((advanced-search))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
            "title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((change-sidebar-layout))",
            "text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-image": {
            "title": "$:/core/ui/KeyboardShortcuts/new-image",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-image))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-journal": {
            "title": "$:/core/ui/KeyboardShortcuts/new-journal",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-journal))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-tiddler": {
            "title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-tiddler))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/save-wiki": {
            "title": "$:/core/ui/KeyboardShortcuts/save-wiki",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((save-wiki))",
            "text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
        },
        "$:/core/ui/KeyboardShortcuts/sidebar-search": {
            "title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((sidebar-search))",
            "text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
        },
        "$:/core/ui/KeyboardShortcuts/switcher": {
            "title": "$:/core/ui/KeyboardShortcuts/switcher",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((layout-switcher))",
            "text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
        },
        "$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
            "title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((toggle-sidebar))",
            "text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
        },
        "$:/snippets/LayoutSwitcher": {
            "title": "$:/snippets/LayoutSwitcher",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
            "text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Explorer": {
            "title": "$:/core/ui/MoreSideBar/Explorer",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Explorer/Caption}}",
            "text": "<<tree \"$:/\">>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/drafts": {
            "title": "$:/core/ui/PageTemplate/drafts",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"  tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "name": "{{$:/language/PageTemplate/Name}}",
            "description": "{{$:/language/PageTemplate/Description}}",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
        },
        "$:/PaletteManager": {
            "title": "$:/PaletteManager",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
        },
        "$:/core/ui/RootTemplate": {
            "title": "$:/core/ui/RootTemplate",
            "text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
        },
        "$:/core/ui/SideBarSegments/page-controls": {
            "title": "$:/core/ui/SideBarSegments/page-controls",
            "tags": "$:/tags/SideBarSegment",
            "text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
        },
        "$:/core/ui/SideBarSegments/search": {
            "title": "$:/core/ui/SideBarSegments/search",
            "tags": "$:/tags/SideBarSegment",
            "text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-subtitle": {
            "title": "$:/core/ui/SideBarSegments/site-subtitle",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-title": {
            "title": "$:/core/ui/SideBarSegments/site-title",
            "tags": "$:/tags/SideBarSegment",
            "text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
        },
        "$:/core/ui/SideBarSegments/tabs": {
            "title": "$:/core/ui/SideBarSegments/tabs",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
        },
        "$:/core/ui/SwitcherModal": {
            "title": "$:/core/ui/SwitcherModal",
            "subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
            "class": "tc-modal-centered",
            "text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagPickerTagTemplate": {
            "title": "$:/core/ui/TagPickerTagTemplate",
            "text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoFocus": {
            "title": "$:/config/AutoFocus",
            "text": "title"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultMoreSidebarTab": {
            "title": "$:/config/DefaultMoreSidebarTab",
            "text": "$:/core/ui/MoreSideBar/Tags"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditMode/fieldname-filter": {
            "title": "$:/config/EditMode/fieldname-filter",
            "first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
            "second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
        },
        "$:/config/EditTabIndex": {
            "title": "$:/config/EditTabIndex",
            "text": "1\n"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/webp": {
            "title": "$:/config/EditorTypeMappings/image/webp",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heic": {
            "title": "$:/config/EditorTypeMappings/image/heic",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heif": {
            "title": "$:/config/EditorTypeMappings/image/heif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/NewImageType": {
            "title": "$:/config/NewImageType",
            "text": "jpeg"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "https://tiddlywiki.com/library/v5.1.23/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/RegisterPluginType/plugin": {
            "title": "$:/config/RegisterPluginType/plugin",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/theme": {
            "title": "$:/config/RegisterPluginType/theme",
            "text": "no"
        },
        "$:/config/RegisterPluginType/language": {
            "title": "$:/config/RegisterPluginType/language",
            "text": "no"
        },
        "$:/config/RegisterPluginType/info": {
            "title": "$:/config/RegisterPluginType/info",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/import": {
            "title": "$:/config/RegisterPluginType/import",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
            "title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
            "text": "yes"
        },
        "$:/config/ShortcutInfo/add-field": {
            "title": "$:/config/ShortcutInfo/add-field",
            "text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search": {
            "title": "$:/config/ShortcutInfo/advanced-search",
            "text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search-sidebar": {
            "title": "$:/config/ShortcutInfo/advanced-search-sidebar",
            "text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/change-sidebar-layout": {
            "title": "$:/config/ShortcutInfo/change-sidebar-layout",
            "text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
        },
        "$:/config/ShortcutInfo/delete-field": {
            "title": "$:/config/ShortcutInfo/delete-field",
            "text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/input-accept": {
            "title": "$:/config/ShortcutInfo/input-accept",
            "text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
        },
        "$:/config/ShortcutInfo/input-accept-variant": {
            "title": "$:/config/ShortcutInfo/input-accept-variant",
            "text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
        },
        "$:/config/ShortcutInfo/input-cancel": {
            "title": "$:/config/ShortcutInfo/input-cancel",
            "text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/input-down": {
            "title": "$:/config/ShortcutInfo/input-down",
            "text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
        },
        "$:/config/ShortcutInfo/input-tab-left": {
            "title": "$:/config/ShortcutInfo/input-tab-left",
            "text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
        },
        "$:/config/ShortcutInfo/input-tab-right": {
            "title": "$:/config/ShortcutInfo/input-tab-right",
            "text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
        },
        "$:/config/ShortcutInfo/input-up": {
            "title": "$:/config/ShortcutInfo/input-up",
            "text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/layout-switcher": {
            "title": "$:/config/ShortcutInfo/layout-switcher",
            "text": "{{$:/language/LayoutSwitcher/Description}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/linkify": {
            "title": "$:/config/ShortcutInfo/linkify",
            "text": "{{$:/language/Buttons/Linkify/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/new-image": {
            "title": "$:/config/ShortcutInfo/new-image",
            "text": "{{$:/language/Buttons/NewImage/Hint}}"
        },
        "$:/config/ShortcutInfo/new-journal": {
            "title": "$:/config/ShortcutInfo/new-journal",
            "text": "{{$:/language/Buttons/NewJournal/Hint}}"
        },
        "$:/config/ShortcutInfo/new-tiddler": {
            "title": "$:/config/ShortcutInfo/new-tiddler",
            "text": "{{$:/language/Buttons/NewTiddler/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/save-wiki": {
            "title": "$:/config/ShortcutInfo/save-wiki",
            "text": "{{$:/language/Buttons/SaveWiki/Hint}}"
        },
        "$:/config/ShortcutInfo/sidebar-search": {
            "title": "$:/config/ShortcutInfo/sidebar-search",
            "text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/toggle-sidebar": {
            "title": "$:/config/ShortcutInfo/toggle-sidebar",
            "text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
        },
        "$:/config/ShortcutInfo/transcludify": {
            "title": "$:/config/ShortcutInfo/transcludify",
            "text": "{{$:/language/Buttons/Transcludify/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SwitcherTargets/layout": {
            "title": "$:/config/SwitcherTargets/layout",
            "text": "$:/snippets/LayoutSwitcher"
        },
        "$:/config/SwitcherTargets/language": {
            "title": "$:/config/SwitcherTargets/language",
            "text": "$:/snippets/languageswitcher"
        },
        "$:/config/SwitcherTargets/palette": {
            "title": "$:/config/SwitcherTargets/palette",
            "text": "$:/core/ui/ControlPanel/Palette"
        },
        "$:/config/SwitcherTargets/theme": {
            "title": "$:/config/SwitcherTargets/theme",
            "text": "$:/core/ui/ControlPanel/Theme"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
        },
        "$:/config/SyncSystemTiddlersFromServer": {
            "title": "$:/config/SyncSystemTiddlersFromServer",
            "text": "no"
        },
        "$:/config/Tags/MinLength": {
            "title": "$:/config/Tags/MinLength",
            "text": "0"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/input-tab-left": {
            "title": "$:/config/shortcuts-mac/input-tab-left",
            "text": "ctrl-Left"
        },
        "$:/config/shortcuts-mac/input-tab-right": {
            "title": "$:/config/shortcuts-mac/input-tab-right",
            "text": "ctrl-Right"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-mac/new-image": {
            "title": "$:/config/shortcuts-mac/new-image",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-mac/new-journal": {
            "title": "$:/config/shortcuts-mac/new-journal",
            "text": "ctrl-J"
        },
        "$:/config/shortcuts-mac/new-tiddler": {
            "title": "$:/config/shortcuts-mac/new-tiddler",
            "text": "ctrl-N"
        },
        "$:/config/shortcuts-mac/save-wiki": {
            "title": "$:/config/shortcuts-mac/save-wiki",
            "text": "meta-S"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts-not-mac/new-image": {
            "title": "$:/config/shortcuts-not-mac/new-image",
            "text": "alt-I"
        },
        "$:/config/shortcuts-not-mac/new-journal": {
            "title": "$:/config/shortcuts-not-mac/new-journal",
            "text": "alt-J"
        },
        "$:/config/shortcuts-not-mac/new-tiddler": {
            "title": "$:/config/shortcuts-not-mac/new-tiddler",
            "text": "alt-N"
        },
        "$:/config/shortcuts/add-field": {
            "title": "$:/config/shortcuts/add-field",
            "text": "enter"
        },
        "$:/config/shortcuts/advanced-search": {
            "title": "$:/config/shortcuts/advanced-search",
            "text": "ctrl-shift-A"
        },
        "$:/config/shortcuts/advanced-search-sidebar": {
            "title": "$:/config/shortcuts/advanced-search-sidebar",
            "text": "alt-Enter"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/change-sidebar-layout": {
            "title": "$:/config/shortcuts/change-sidebar-layout",
            "text": "shift-alt-Down"
        },
        "$:/config/shortcuts/delete-field": {
            "title": "$:/config/shortcuts/delete-field",
            "text": "shift-alt-D"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/sidebar-search": {
            "title": "$:/config/shortcuts/sidebar-search",
            "text": "ctrl-shift-F"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/input-accept": {
            "title": "$:/config/shortcuts/input-accept",
            "text": "Enter"
        },
        "$:/config/shortcuts/input-accept-variant": {
            "title": "$:/config/shortcuts/input-accept-variant",
            "text": "ctrl-Enter"
        },
        "$:/config/shortcuts/input-cancel": {
            "title": "$:/config/shortcuts/input-cancel",
            "text": "Escape"
        },
        "$:/config/shortcuts/input-down": {
            "title": "$:/config/shortcuts/input-down",
            "text": "Down"
        },
        "$:/config/shortcuts/input-tab-left": {
            "title": "$:/config/shortcuts/input-tab-left",
            "text": "alt-Left"
        },
        "$:/config/shortcuts/input-tab-right": {
            "title": "$:/config/shortcuts/input-tab-right",
            "text": "alt-Right"
        },
        "$:/config/shortcuts/input-up": {
            "title": "$:/config/shortcuts/input-up",
            "text": "Up"
        },
        "$:/config/shortcuts/layout-switcher": {
            "title": "$:/config/shortcuts/layout-switcher",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/linkify": {
            "title": "$:/config/shortcuts/linkify",
            "text": "alt-shift-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/save-wiki": {
            "title": "$:/config/shortcuts/save-wiki",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/shortcuts/toggle-sidebar": {
            "title": "$:/config/shortcuts/toggle-sidebar",
            "text": "alt-shift-S"
        },
        "$:/config/shortcuts/transcludify": {
            "title": "$:/config/shortcuts/transcludify",
            "text": "alt-shift-T"
        },
        "$:/config/ui/EditTemplate": {
            "title": "$:/config/ui/EditTemplate",
            "text": "$:/core/ui/EditTemplate"
        },
        "$:/config/ui/ViewTemplate": {
            "title": "$:/config/ui/ViewTemplate",
            "text": "$:/core/ui/ViewTemplate"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/copy-to-clipboard": {
            "title": "$:/core/macros/copy-to-clipboard",
            "tags": "$:/tags/Macro",
            "text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
        },
        "$:/core/macros/diff": {
            "title": "$:/core/macros/diff",
            "tags": "$:/tags/Macro",
            "text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
        },
        "$:/core/macros/dumpvariables": {
            "title": "$:/core/macros/dumpvariables",
            "tags": "$:/tags/Macro",
            "text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "created": "20170715180840889",
            "modified": "20170715180914005",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/keyboard-driven-input": {
            "title": "$:/core/macros/keyboard-driven-input",
            "tags": "$:/tags/Macro",
            "text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
            "second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
            "text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "title": "$:/core/macros/timeline",
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n    <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n      <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n        <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n          <li class=<<toc-item-class>>>\n            <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n              <<toc-caption>>\n            </$list>\n            <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n          </li>\n        </$set>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\"  tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n    <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n    </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n    <li class=<<toc-item-class>>>\n      <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n          <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-selective-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=<<__selectedTiddler__>>>\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=<<__template__>>>\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tree": {
            "title": "$:/core/macros/tree",
            "tags": "$:/tags/Macro",
            "text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/utils": {
            "title": "$:/core/macros/utils",
            "text": "\\define colour(colour)\n$colour$\n\\end\n"
        },
        "$:/snippets/minifocusswitcher": {
            "title": "$:/snippets/minifocusswitcher",
            "text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/snippets/peek-stylesheets": {
            "title": "$:/snippets/peek-stylesheets",
            "text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/PluginLibrary": {
            "title": "$:/tags/PluginLibrary",
            "list": "$:/config/OfficialPluginLibrary"
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/SideBarSegment": {
            "title": "$:/tags/SideBarSegment",
            "list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        }
    }
}

<svg width="22pt" height="22pt" class="tc-image-chevron-left tc-image-button" viewBox="0 0 128 128"><g fill-rule="evenodd"><path d="M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z"/><path d="M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z"/></g></svg>
<svg width="22pt" height="22pt" class="tc-image-down-arrow tc-image-button" viewBox="0 0 128 128"><path d="M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z"/></svg>
<tgeel>M</tgeel>
<svg width="22pt" height="22pt" class="tc-image-new-button tc-image-button" viewBox="0 0 128 128"><path fill-rule="evenodd" d="M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z"/></svg>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
 width="256.000000pt" height="256.000000pt" viewBox="0 0 256.000000 256.000000"
 preserveAspectRatio="xMidYMid meet">

<g transform="translate(0.000000,256.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M675 2529 c-42 -25 -55 -51 -55 -121 l0 -68 -128 0 c-118 0 -132 -2
-180 -26 -56 -28 -94 -79 -107 -144 -6 -31 -3 -29 22 20 49 96 112 122 280
118 l108 -3 2 -95 c4 -124 7 -137 46 -160 25 -16 50 -20 114 -20 77 0 85 2
115 29 l33 29 3 111 4 111 336 -2 337 -3 5 -112 c7 -150 13 -157 144 -161 92
-4 94 -3 127 26 l34 30 3 112 4 112 141 -4 c106 -3 150 -8 172 -20 37 -20 90
-75 105 -108 10 -23 10 -22 5 10 -7 47 -51 100 -105 128 -40 20 -59 22 -181
22 l-137 0 -4 70 c-3 60 -8 74 -31 98 -24 24 -36 27 -107 31 -136 6 -170 -21
-170 -131 l0 -68 -339 0 -339 0 -4 70 c-3 60 -8 74 -31 98 -25 25 -35 27 -115
30 -52 1 -95 -2 -107 -9z"/>
<path d="M198 2335 c-21 -14 -43 -35 -49 -48 -9 -18 -7 -18 13 5 12 15 39 36
58 47 19 12 30 21 25 21 -6 0 -27 -11 -47 -25z"/>
<path d="M2361 2323 c17 -15 40 -41 50 -58 11 -16 19 -25 19 -19 0 22 -73 103
-93 104 -5 0 6 -12 24 -27z"/>
<path d="M361 1750 c-23 -44 -40 -87 -37 -95 9 -23 35 -18 48 10 10 21 18 25
57 25 37 0 49 -5 66 -26 14 -17 26 -23 38 -19 9 4 17 10 17 14 0 3 -20 42 -44
86 -37 69 -47 80 -73 83 -27 3 -32 -3 -72 -78z m99 -22 c0 -5 -14 -8 -30 -8
l-31 0 17 32 16 32 14 -25 c7 -13 13 -27 14 -31z"/>
<path d="M940 1815 c0 -11 7 -15 23 -13 12 2 22 8 22 13 0 6 -10 11 -22 13
-16 2 -23 -2 -23 -13z"/>
<path d="M1032 1738 c3 -85 5 -93 23 -93 18 0 20 8 23 93 l3 92 -26 0 -26 0 3
-92z"/>
<path d="M582 1686 c2 -73 6 -91 18 -91 10 0 16 12 18 31 3 31 4 32 36 22 71
-22 131 44 89 100 -18 25 -26 27 -92 28 l-72 2 3 -92z m118 49 c14 -17 5 -51
-16 -59 -35 -13 -73 41 -47 67 12 12 50 7 63 -8z"/>
<path d="M792 1712 c3 -59 5 -67 23 -67 17 0 21 8 25 50 5 50 5 50 43 53 63 5
39 27 -32 29 l-62 1 3 -66z"/>
<path d="M940 1716 c0 -67 7 -81 35 -70 13 5 15 18 13 68 -3 55 -5 61 -25 64
-22 3 -23 0 -23 -62z"/>
<path d="M110 948 c0 -374 4 -566 11 -593 16 -56 43 -91 96 -122 42 -24 60
-28 177 -33 98 -5 112 -7 56 -9 -113 -2 -273 -20 -283 -30 -59 -59 1539 -83
2057 -30 101 10 138 20 118 33 -13 8 -182 25 -277 28 -38 1 -5 4 75 7 171 7
223 25 268 94 l27 41 3 583 2 583 -1165 0 -1165 0 0 -552z m925 307 c119 -34
192 -151 165 -263 -18 -74 -68 -133 -202 -233 -68 -51 -136 -104 -151 -118
l-28 -26 179 -5 c159 -4 182 -7 201 -24 26 -24 27 -66 2 -97 -19 -24 -21 -24
-262 -27 -134 -2 -259 0 -277 3 -19 3 -45 17 -58 30 -51 51 -20 121 98 225 46
40 118 97 160 127 164 115 199 207 107 276 -37 26 -121 27 -158 0 -14 -11 -39
-45 -56 -77 -35 -66 -47 -76 -97 -76 -46 0 -78 31 -78 75 0 43 46 131 84 160
92 70 233 89 371 50z m735 3 c87 -28 150 -95 150 -161 0 -68 -88 -93 -136 -39
-85 95 -80 92 -126 92 -84 0 -143 -65 -155 -173 -6 -51 -6 -52 13 -35 54 48
165 65 257 39 57 -16 129 -77 160 -135 32 -62 31 -174 -4 -241 -90 -175 -397
-209 -530 -58 -76 87 -109 230 -89 380 15 114 42 182 96 242 87 97 229 132
364 89z"/>
<path d="M1573 850 c-63 -38 -81 -125 -43 -200 49 -96 186 -94 231 3 24 53 24
91 0 144 -32 70 -120 95 -188 53z"/>
</g>
</svg>
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAABcWlDQ1BpY2MAACiRdZG9S8NAGMaftoofrRTUQUQhQxWHFoqCOGoduhQptYJVl+SatEKShkuKFFfBxaHgILr4Nfgf6Cq4KgiCIoi4+A/4tUiJ7zWFFmnvuLw/ntzzcvcc4E/pzLC74oBhOjyTTEiruTWp5x1Bmn0Yx6DMbGshnU6h4/h5hE/Uh5jo1Xlf2xHMqzYDfL3Es8ziDvE8cWrLsQTvEQ+zopwnPiGOcjog8a3QFY/fBBc8/hLMs5lFwC96SoUWVlqYFblBPEUcMfQya5xH3CSkmivLVEdpjcFGBkkkIEFBGZvQ4SBG1aTM2vvidd8SSuRh9LVQASdHAUXyRkktU1eVqka6SlNHReT+P09bm5n2uocSQPer635OAD37QK3qur+nrls7AwIvwLXZ9Jcop7lv0qtNLXIMhHeAy5umphwAV7vAyLMlc7kuBWj5NQ34uAAGcsDQPdC/7mXV+I/zJyC7TU90BxweAZO0P7zxB7QSZ+fnNt68AAAACXBIWXMAAAsSAAALEgHS3X78AAAgAElEQVR4Xu19edAlRbVnQe90Qy8KSG+IQtNNd7PKJsO+CfJcns9wmflniBfhjGE4T30xOug4hAsRLzSMmHGehi8cI3T+QGAMeWqwyPYQ2VH2hl6CXuh9p/vrfZv8Vd9zOV/ezMqTWZlVde9XFVHw9a3MkyfP8jsnl8rKsvZqJdBKoJVAK4FWAq0ERp4Ejhl5XS7u8c9+9rOfn3DCCaePHz9+RqhsduzY8er69etf/frXv/4/Qmm09bLspz/96S+mTp26YMyYMdNC5HH48OE9Q0NDyzZs2PDaN77xjf8eQmPQ67QA0NEwHH/GjBmfHD16dJCxmQxl586dz7311lsPtEDg50Y///nP7zzppJNuGDVqVDRdKCB4fvHixb/59re//U9+3Ax26RYAlH7vueeeZ48//viLUqgaUWjFihX/8sUvfvEfUtAfJJrf+c53vj537ty/TamLJUuW/O+vfOUr/3WQ5FamLyMeAH7zm988owzu4jJClNRdtmzZ/2xBoFhS995771I19DpdIs/QMgBklQm0INAR4KhQQQ5CvbvuuusPaox59THHHJOlvqdNm3bOnDlz9jz22GNPD4LsYvfh7rvvflQB8QWp9XDssceOUbqYd+aZZx5Rungqdj/6jd6x/cZwLH5/8IMffFMZwjWpDY7oK8ObsHDhwk/H4n+Q6EAXVQEx9IFJRTXUuGmQZBjalxELAB/4wAeuUZNME6oCALSjVhcu+eEPf/jfQpU1qPVOP/30W6rUA9pSgHPJd7/73a8Oqkyl/RotLTho5SZPnnyOisqVd2vmzJnnVt5owxucNGnSOXDKKi/V3oRTTz31nCrbbGJbIxIAvve97/0Xtdz3njoUosa5c+pot6lt/vjHP/6OSskn1MGf0kXwXo86+E3R5ogEALXGPKvqiEPKU8OO41Iosl9pjhs3rjZ5TJgwYVa/yi0W3yMSAFTqf6iO9B9KUwBwJJbyBoVOXWA8KPIr048RCQAQWGt0ZcymrTsoEhixAFCXAlvgGS75NhuryxKPttsCQL3yb1tvs7FabWBEAoCKOofVWLwWwau22zmAWiTf22ibjWVZ9QvhDVF+XWy0RleX5Nt2TRKodveF4kBt+/xfag1+/KZNm/6+LpWMPuaYXTfdcsukOtrfvmHDmieee256HW03sc06dbFN6eLPzdDFkRNPPPH/7NmzZ9ttt9329Sr1lBwA4PCqc+evWrbsogOHDo05VPGOL5Mwjz1yJLvl4x+vUs7dtt589tlsyYYNtbTdxEahi49+7GO1sPaG0sWyjRtradsYjZUs1MD0yLixY4dOnDHj8c2bNy9KDQjJ5gDUaS73HNy16/rNW7ZM3rZt29H+NsD5G6PtlpFWApoEjij/OKi85OCBA8fvWrHilomjRt3yL//8zx8d2rfvma9+9atJMuboAPCjH/3o5ydOmXLLsqVLTz4Ah2+dvjV0hwTqmhc5tuG2uevQoWzXmjXzFRDM/+Uvf3n+8uXL77v99tu/FdOgog4BfvGLXzy5cdWqD+/Yv9+bRzByjEqBxiilTFAz9ONHR8emLk+TJkzIFlx1lTePMSrs3bQpe+mFF2KQGgga0MVZV1xRS1/2bt6cvfKXv1TS9o59+7IDyr4PqdYOBwAPfOP906fv33PkyP/78pe//O9jMR1lFUCh0vfuvPPOtSuXLvV2/lGqY1OUw588blx20vjx2VT1/5TOH0twLZ1WAj4SOEHZ9XuUfcPG36f+xgsQmP+QXhgeLF+3buzurVs/r85MfERaz1WuNADA+dXpKrcueuWVU/KUX3jB8d+jovyJSiCtwwuFNqDF8F5GLbeHvcYWPQABYIDgh+guvZBdb1i58ho1JPirtE5RuVJ5Nnd+6ew+IGKyIcU/iPRI3QcOH87UakH+t1wsfqKAEBf4VYlW+h01Ibpp795o9Pqd0EjQBaIshrZwev1C8MO9TQ0R9gmVibmB1cuWnYch96233nqZsJqxWCkAOO20025G5Bc7v3LqkxXq0QUn368cfq/q0EH1/8MePcnBIRDB96q26rq2bt2aSeVVF49VtjsSdIFx/wF171ZOjgCI7HdSx/FJ1hj6IvBtPXhQFPgAAphv+8lPfvIbddjsp0J1FjwEQMMrlyw5T2rMY5jzw/H3qA5sU5F4x4EDOQjAJeHU+a0c23izXtKkYeaRPoUKqa3XSiCWBGDfB5V9b4cDq0wQ9g9fwK2WALPjPYYEyJ7279jxse9///s/DOUvKANA6j/60KFb9gqdD86PCRBc+5Sz71Yoh1SfUnw4u+gCMFBBRTMHAfwbwwUpjU59dTy0qMnYhQ7V1G7sfrT0AiXQsdvcbNUNx0cGPErNg+TnIqrfxikQ2Kd+k2S5m955Z/Tcs866WVX7xxCOgjKA2bNnX71y7dqxkgYxwUHOj87mqNVxforyEjo9ZShL6DzIJ1KEgBTUXqRKdR1EEon9lkyIBOD0dLP6lO1iWRBLhPn8F4bF6oadUJZbNEmYrw68+eY87L8JYc07A0D037x69cXSiEtj/iEV9RH5Kc0PHb8bgQCZACGrIBvIeagJLOrKPEKMo6o6dcmkimxMd94iv9HtMt8g1bFTomOqj0x85sSJN4boyzsDOOWUU857Z88e0bu0kzppOZx/Fzl/ot2BXDA+yyohQitT53BNwFOG55R1U630SHhOmo11Ij7xEZLt8vkwV39WrVw5M2QuwBsAdmzadKUk+mOTw6SxY/MxDiJ/PubxHKe7Oq0/7xcQ8O1XW76/JNDNRjs2H8PucwChTNcw3MXeWxWcL/WVlNcQ4I477vinHTt3TpSk71PGjMnH+kNqlpOQzJe5kPIQVDcDgKAsoHNIAVN7NUMCdQ3HDiawAZ59xnD8YRriIABw0dT39ltvXeirUa8MQH1N5QOSZT8IYbSaxIDz0/KeL2NlypPghWsLZZryrluXsXsz2lbwlkB3nJ4427UBiwK0Mb5MewHAutWrRd9Tm6icH8t9mNHMr8Spv6nThI5Nmw+oc8zraxxteQ8J8LmdCux9WKbbYRPB2Xc1wGsIoGYke/cyGmR0nEr/t3beCIyeBkl1wmZQjQBR12RcXe1K5VZDubqGYzGzMco2q7R3U1u7duy40keFXgCgdvBht0IhfUTc/LVHLMf5cJKgbD5pArqGuYC6lp6Cuwl5soyKv0Of/07LoIlWWYL5bnDFWPZZtERXdff37d8/26dNLwBQiOMcMmB9cCedB1BBKlSMRkfXUQECurJjor+PwL2WAcnpMbHZuU1t5WDAZN0FhBo+fuojCypbly6ibBzrgHIsMAmRH6+j5ty8fNrp0L4MqUMevV7q8aXvW74pivHmG1uG4fSdLaI+9XOw6Dj/EcnWY1pWaocnPmLOy3bz4bqD3buce/m0F1pIpAPjA6I3xvFoLkAbBtQ1BHBGOzgsnD5S9AYdtJkbqmlexDRk0IEgsXHXpQuvbKzA+Btj60d59GInOgDEEqoEbHzK6MMApyP6EPcoWyQfROtYjs9Z6s4XFOyLGNYF3eETr+bUpQsPtZmLJpZLaf4EBKIDACb/juZGTVyFf1ciTTO6VM5f6NgCAxmmyz7RrbRbZW2gkRbu2Smv8YJEsF75h4RghDImnvJhSg23qTupnN/TFtySpuFC5LkCDAFquSP0o0n2TqsR6lsCu93KPFoiegbQJIHYhID107rWnndrx4Glcv6jSViiGMXnEiK0ER2ohNa/dccOYcn+KMZ8T6z4EZEBmNS3bd26WrS6c8+ebrspnT9558jxS0ZRgPGud96pJRvbH+NdgAgAmFxXBQ2MWABYsmxZLUaH46DyCzPzkWb6azOgSCDw6ksv1aILyXstVtmWBL7adKY1HH0I8G54s7+JV3XnTRuB8K5C1ctPi19+mYlHAUCfR4+8M44t1xJd71YvjVU9JPvLU09JWBv4MtEzgKbP/nc1qgz3uSefrCzy7Nm5M9us7oGJ/tw1SoIAhgHPPvFEZc4GXeCAmihXn2cC6TKAKNKNQKRAQTiqecXixdnsM86I0FAxiZcQ/TsRP9+YMwjR3wQCgf3ap2Sy4o03slPnzk2uixf+qr6pEcgnDyBRthIn721xA0kAgF7CadSKgEXha7dsydR32bM5CxcmU8Xzzzwz7HtwfT/2TySpVeq7iQDH2WeemaSFfbt2ZX958cXkJ1MlYd6PqNj1kgBAk+YBTON/XZbbdu/OXlBOOn/+/GzcxIl+oi4ovez117NtyuiGRRvpbrxoXFRIiIYCJaLr2+qDnevVvfDss7PxkyZFYx7zL1uGhspHfsaR2Mui9aKYENm6OrkLnx4UXWkAoPM+gMT5RFyGFvLYuYYZ4VcWLco/2DhBnWV48kknZdNOOcW7ZTj9LrXWjy8d5e9ra84wkOk/l1IEgMPQ7K+vvJJ/Qec49cWcGTNmZFNOPtlbF0tefTUbUuCOo+lyPZQAJlvjuY1H6LN35/QK79q6eA8ASKQBgMgGESSczgswviiNM9p3qVnpt9asye/gK4GxBfNSZcWI/QYo49XyN5cvzzLcoVdEnoaxUHLyM7Q7MevFXwUg7pAFqL+7B3LE5NqHVirl+/DAyg78+H8AnMJHtV0b96kUu+zwYNegDKAuYwiM/rH1MqLpFb1SLHnG0+qGgbhRr00YBgTIKfkQoLsiUJWAuPMHCGREO22sztvkTjZQpBd6Rv9HHY+5nFhdENPh811V2bg2xC4z15ZuCFDHUKB1frHd1lIwBJBp8o6yySZuvAnpVwwFRLD39ACAjrL5gGQf8YwgjBg6aWkklACBAXTNM4OETUpJ1zHf5TXYt3SkGgBgIJD/if/EQvKOMXTToLrQWGgpojP6hLRGbLFOQMltqWFAkOsklm0XKbjTRr7KVcLmk88BDOsDGy8RCAR3oCOA7nnsJQUxYp2pXzveMXo677CWtfhO1tkjwhIO6VQHazPYd1gj1QIAzwQ6HRkGBBIn7nPHj5G2OY1kJBVgQQWRd9i+j1SOqDl+t81U7ZE+Izs/yFYPANQZSuM4ELD0Sd/AoztOZUKP7UwRzwAY+F2FUtkzW8pjCHOY7p/M7qRkjeUSOKGTn4RBrz4AMABB9yeuxM6PlSC7UxNxCsQ6CWjg3igsK14aFhgAgINCUOo8YI5PIqofAAzI7Lt9t6zdVF2/ddyKJM5S8tymeCSl4YIkba/S+bVon7MdK3sxiL05AFCRTTSiGaSsib4B0Ij+NZUJNnFIQwX+vcWilD8oawiUw7CNPRKACmwH1apbBizB5CBWbbOAGrXa2U9Aa/fWZelIS23BPU3s/C0ABGsmQsVOFhCBUksiVAKdycOeTTy00ShPE9K8RmxlmW2aq2I/QZsBhBpPhHr5d/skH++M0FZLwiIBNnGITAAbi5qwqayqtwxbAKjZM/KPqbYgUK8WGAjA8aoc7xs7zlczEu8qbCcB6zW9o58Ah9G1k4L1aqKC8bZXB8FPYudv5wC8NJKwMECgzQQSCrjPSScEgv4YAtALP3xyps91mrOvTTa1cwKDoNSIfaggK2n8EGCMkuenPve5YVJdrg57fFYdvtnP17Tx47MbPvGJvAu71bfx/nDfffnR4fmRYdikAnAI3DbcbhHuZ8uolvdGZwA4ofdTn/1sj0ROU2f4z1MnxfbzRc6PPhw3eXJ25syZ73anAwSjAiNAPpxImDb2s9z7kveErzw3GgCuuewyq77Oufzy/Njofr2QxfBryerVPV2ZM3169lkFgJcpOUyYMOHoqMGyYoDf82e0lZQmkfpYRv2q237iu7FDADj3e2fPLpTl1coxHu7TjzxiCPPca68ddWr8pyDaz5o1K8ON69e//rVRJsbhAtEECARmE/1kzAPJa2K9NTYDuEqL/hgnP/Xgg8N0DIDwyQLyTR6WiEjPisqYDIzX48+H/R4Yhfs3vxlIVxzITjUyA8DE34la9H9MOf/OQ4eyD2tq+OjNN2e/u/9+p3I+dtNN+VgbF00iwklPUb9doWiYrgfvvTfbrr4bmH/hx3BNHDUq+5tPf7r75O4778zX9METtUUPX1Jfv12s0nyiNVfNYZyrhjF0oS4mAdurlUCVEmhkBnCTclZ+Ifrv7Hze6dHf/W7YMzjaOIfjwNG5Q2IScYaq9xm1umBzfjRyo5qlRxlblsGdH+UvXLAg+7Qqrzs/nsHZp0+Z0uWdOz9+nMMnAau0gLatES2BxgEAnFl3oEdZ6r8RH9vUrhs/8hFvJV7eARmAyyP/+q/ZH+6+O783rVrVQwtOLRlqAFjoWqHG9zqtjaqtWq42s6hF7FEaDRw+Sttu3BBAd2Y46BCf+VbGDIe99uMf7/YRgDFFfURy+7590n7n5d5SM/HPafsJHlGTiuPV/Qlt+VE61IDTP/rkk+8OGxQtZCCuiT4vxkMKtxOBIVIb+DqNygBc0Z+0sUl98VW/PvLJT3rtnQaw6M5PNPeqP/QJR4CMJAv4N+78HYKmrwTr/JvW7du1/IH3v9o72BwAUBHqk5/5TI9AhtTEX8/VyQL03zGhJ73+9PDDhUXXbtnS83z8aHfChC/atlcrgegSSGRXbouO3hMzwSlqa6zp+qy2DbiInSvV7PtdajbdNmvP6x40AQsroLbU9Fwz1TfqF69da2XBNH9QkfjaZgZRAonH/xBZMzIA1dE8hY9wzUm4RXiDISvgLK9esSJCDxKRqOj10kTct2QTSaARAGCL/iF9Pu+KKzK8Q+C6Lr7kksIiJ6hJRf3a5TnJ6OKhfd5KwCoBbsOJ0n+0XfsQADPkpuj/a5XKS7avTlVDB6zX8wtbhDGbX3Rho9GJL76YbVIbffRrtFp1+MinPtXz+4F+n0mnLCChQbUu3V8SqD0DMKXsD/z2tyLnh6i3GRwYzi2ZscdS4ofOOivD7MOxyunh+Cced1z2d5//fI8Wf3fPPU6eyszat6sA/eU4SbmtKPo3IgNAyq5f2/eqhThplFLlABh6FvFB9SbdknXrrHratX17NlHtzDv97LPzu+j66+OPZ7sdk4ZJDSIm8TYLiCnNJtJyj38Z17VnAHBEfv1eEGlNgKHTWbNxY6Fy/qDeH/jtXXdlej1eCc9QxgYkAAZ+udrkZTdoE4Yr16/v4Xfj1q3DfntcHRoS5WonBKOIMQmRCqM/+PdatL7tttu80EUkINXhcZ2Tbw6rvw+IKvUWwlzC2A6dgyqV5+vxeIY9/fzqLheqZ6PUg9Ha6TsHFA3nyzlleGd1dX67fKoyY5SzHqvuXDYx5yDI0KSZVqBe2moeEojj/EfuuOMOcWCvfRIQqf4+way9S4xY++/S8TFqVRZbjQ7pPEholOFdwq8qkwNiCmelLCAmqLiU1D63SyCO83tLWIwU3pTbCs2XAD8wpPncDiaHcPyanB8CrT8DGEy19k+vdBCQZD7907tmcxqSdUbukT8AREjXI/fBmxwm9/jnor0JDHKFWEOCFMOW2HKv0wFNfhTDtzwB3B8AYiuhAnpwdpy4QxN9mOBrrwIJhKakNqP2NMrkurE5Wizwc3UghqO72hA+HxEAAFnA5fe3ji80C1YshrHGygZMvPiAi6QvsXg1SVrSvr+GStUYMQBQSkpt5TgS8M0sJA5TlMZL6tt6FjMbKMNHHMlbqbQAkFjALXmLBFI5RUy6ZbOBmLwkMqQWABIJtiU7QBLwBYI+cHzSTgsAA2SnbVcSS6CPHFsqiXYjkFRSbblWAgMogRYABlCpbZdaCUgl0AKAVFJtuVYCAygBvzkAdWqFen3Q6w3CAZRZ26VWAo2VAN4s8GHOCwDOPe+8t8aPH//BogaO1V6rpbL4Zn3IZaMHWqE0iY8i2pxXaTvScmVlosvRt90QPfA6ZU4+IjohNKR1JOUOR9gUVtROKH0bTSm9rVu3PuKj36hDAKlDSRmMTU/abojzh9COUadq548BvLFolJFfE2yrDP+x6kYFgFhM9SOdOhyxH+VUBc+tLuRSbgFALquoJWMYaQwaoZ2qs+1Qntt6vRJoAaC1ir6RQD+BTuwhRmx63XmwvtG+xmg/GUMKGQ9C/wehDyl0WyXNSjKAVtFVqrS6tlq9VifrVC1VAgCpmG/pthJoJVBOAiMWAFKNqcqpo63dSqBaCYxYAKhWzG1rrQSaKYEWAJqpl0Ku2rF3HyqtoSy3ANBQxbRstRKoQgItAFQh5chtSPa6R26yJTegEhixACB9uSKF3tsUPoVUW5ohEvB6GzCkgZFQR3doiYOjTBvJ5W90kqxaucX1qBYAAuUZ4vR6U0VAMYjgYOqvtJ9UF+U5HWn9QDUPfLVKAEBXWgyppqBZ5KCSqC7tl4SWXkY39Cr67+qPy/kk/XS14XrukpOr/kh/XgkA9KOQybAkRowyknJcDnwjkmQ+gkfAJsvTVw6+5dH3IuBpSnYg0WkT9NgCgKYFl0G6nhM5n52GprI2A5K2n9q4dCeU8OXqp+s59Uk6lOgX0JToKhWgtADQkX6RAdue8d99HF6icJ1eKgOQ8FJUpkhuEpm4yhTJgYNQUeQfJCAoqy+9fqMBAEbvMpAYAjEZsWkIoJcrw5s0iukZhQkIwEfVAFHW8VHfNYdg0m3R0EkHBFuWEtJuDDtrIo2oAFCVw8YSZJHj8zYkkd5EywYQ5Ky6MUsmtKiO7vB1gIBtTsOkH6mspQ6ONorkxydJTUDQgsBRLUUFgFiOWQUdGA83Em6g+t/Sk46ffeaZnPWhoaHs4KFD1m6MHjUqmzRpUj5xeNZZZ2WTp0wxZjrcyXWD5UBAwFsXCEjko5dB37dt3Zq98cYb2fZ33ilU+YTx47Nx48ZlM2bMyGbOmtUty2ViA44iIKhLXlXYt7SNEQcAJmM1OT/9xsvTb+8og335pZeyPXv3SuU8rBzAgYz+yaeeGvYMbcxShr7g7LN7IhwK2oBAMlQIYragksvx+fMdSmYvvvhitnvPHm82IGfckNnrixZ16wMYzjn33Gzy5Mk9cqEhBh//m4YdoSAwKBlEXwOA71q4KQrpY32b48PpX3j++cLI7m3Zhgro06rVq/Mb13ETJmRXXnVVFwwoK3AZYKhhS/tQBKT0DDJ77tlnk8kMoPBMJ+tCVnXtddfl7OvDJLITWzaQWlZSmbp0KqXjU64yAPB1Vp9OSMqGOv+i117LVq9dK2kiSRlEzPvvvz+nvXDBgm4KbAMCPr+QwrAljr/67bezV5XcqryQVT344IN5k5dcfHF2gsoKOBBwEEAZPRuIKauqJ2TLyLkyACjDZNm6JucnmjAEU9RH5HKNTcvy5VsfToX70ksuyaZMnZrP/NsMmQNBLIO0yZF+R5qvD2l8+xij/DNKd7huuOGGbkZgmk9JCQIx+lEFjcYDQNmVBZvR6ql/14h37OimlVUoIKSNp1XaS0MD1IeM9AkxMngf57etq6MNl/M/8MADQct6If2X1vnjH/+YzZw+PTtLZU4U4fX9AqHLkVIeYpTz0aFve9FfB07JrG/n9PKm8T4Mg4z7iT/9qfHOT32iocH2bdty/iV7FODgRTfPirjsipwfUR9DlDrGrxJ7wPANQFAEYpJlXt5WU/sqkYdeJjoAhDBRpo5LGQRIJufnioeRhM7ql+G/bF1kA5hsk4CAaS3eBpL0u8n5CTRff/XVRqT8EhlyEODDPolMJPT7tUzfA4BE8DbnJ+Mm45DQamKZp9RSYgwQcGUReE4ye0gBJq1UNFEmJp5sIICysYAgNAN2BbJUMq4UAEI7GSpUnvZxEOCG3O/OT4bhAwISY7JFftSF8xdtdJLQr6uMru+Rng1UCgB1KZ3aJWUPSuTX5QkQINArimimZ67yPPL3q/OTvAAC+pBJmgGEBrFQ2y8T/CRtJgGA1EzrHbMphUcxXcEPPfSQRD59V4b2DOhprW0fBI+ApnE/lxvG/P3u/NTHt1et6oKA1Pn7zhgEDCcBAEG7yYuQwespHn5/Xa2lV43kyTvMGnjm6aeN7xaYNvHofJnK4DfM9vfbmL9I5m+8+WZ0lYQGvjptsfJ9AKE7AsvuB+DzAWtS7+xTy21qVik3MOxXBwh198CzZ9EtsENw2/bteZu09h1qYEQD/0+5wQfbeOepl6JmsRd9upFa7SoEYB+G3CJfr6mMZsHChdkhtYuQ7wew7QoMlWNktqOSqxwAonLPiHFg4dGfilCa9+gjj6RiIYMhX6y2oeLtPlxkMKYU898eeyzbvXt3FyhiM/VHtS32+s5OOE67aMurPmSif/NhRUw+pyo5XfrhDw8jqTsZQIGA4QG13yAmEKxdty4HAO78MfvXD7QGBgBs4zh9jJtiDAvHv+HGG7tODyM2va/Pweiqq6/O//m0mrhDxI59oZ8+WYBteIDUP0Xku/nmm7td5vSL5PaRm27KXnvllSRDkRR9LKvT0CGFT7vJ5gBSMO9D07SmnSL64wUdOD/tsAOPtDWX77pDmqk/g6IQAS+77DIfnYnLvvLyy8ayurPblvxSpP6zZ87MyPl1mUFG+k5FkhllVHhN+jItaxALxFBQugzsAggf2+RsuOiW6ZukbjIAKGo8Zaf1NJZnALGjPwxx1uzZudGanFuXgQkkUAbvs/OIKFGcpMzqNWu6xUJmujFTHvOC88OByZlDZYYh1kx1ZkKKK0ROKfgIoRniV7UAQEjnytaJbcxwfrxySs5Pzk18knHr/yfjx//1l3hSZAJ80xOXIW3nLYr+MV/pxctLuvNzWZA8uLxMkZJktrADJGXtQuchhF5o9C9qKwVNU3tJASBFJ1w0Tc9h5EuXLg3RrbEOJq/g/GiL0lbd8cmwTMDAn3EQQCYwTb3mG/NatXJlELnYgElzHnx+hCIWT/M5s/rvevkF8+cH9a2okimKhkRWCWOp6ErapjJJAcBX0D6M87J62sb/TX9HS/9Vun/JpZf2RG+KYNy59QjGhwC6oZMxgHbMaw0bBrjo8mW/mNGfMhub85vkpMuH/s0BFcOvstd1nVOEykgP29YAACAASURBVNKpu34omNQGAFUILMV4boJKZXnU5ikrN059MosryOQIXB7HdvYQxJARX2FIIQ8Jj8hsdCfngMmdu4gez+5IhjgcpczlchzXc1dGWoa3KuomB4AUAnLRdCmtjGAplS2KWrb2bSBAzkDPp3T2EZTh01RXKpfHHn00WtML1To7Lg560YgrQhiKhU4IXnjhhV3euGxc9hWD/yJdVNE+9SE5ABQJS2qQoQKPTR8RVI/+1AaP+L591vnErrg6r5jnIui7+4p0Qis2pkzF5BREa75aivWdD7hIOf8JJ5wwbI+Dr71U6aip7KFWACjTKZfwuWOWaYfXxS4/osuBQAcBntLyYYEUGPSUORb/RXTI6WIOE8aMLt5nFvpugqkfmA+4SW0UmqINN/Sy+aYttUMSmYOuJ8rE+O9VyL5sG77Axdvz3gmIxnyNBM4iUXaoIHSe9PZcYCFt13T+vAloyigEvGC3Wx0XdISdibGuefPm5aSK5CG1C1c50vnFbE4Aby/Sic50UjA5uTRjiyULTqcp6T948gaA2AIJARTiwQUsZWjr/bxEGZYp+psMnMr5ACUvu3nLlthiFtOLuS2Zf8VHzIChoM35dfnqQI/DQHHzizI3nplxvUqjf6ygUkYuMer27RBA2nlS9Nwzz5RW6SkHQ8N4kUcPW2Tj6B6aCYR8PcfWOexZcF0+QOWiZXquL8sWtVc0DwDarudFDsydP6QfqeuEgEqojVFfgjKAkMhaFK1D6LmyAN4ejAbRaPGSJUEvtlx//fVd59cNzKWAMn2LYXD4np7k0k/IkdQpKmNayqRIDt2YQAAp+9CuXcZvK6L85A4I628QEjD78KwP3fQlxiJaIY4qzSx8+hCjbBAAxGg4Ng2bo/FU79prr80efvhhr6YxW0wK1yf0dOd3gQFFMP5/nRm8xhvzwuSY1GBjjv+nqh2No9SEG3ZKUn9JPgQEeCVauuKAuvShFv56Mib15s6dm81Q7xm4Lol+XDQG7XmlAFBXFsAVj51fzz/3XPaO+gBI0QXDukYBhsn5faI6RTpTHX5uAUXgaDsWtc5JjD/ml5BoAlAHgdiv80Jer73+en5DZx9SgI3JWsid91kKgi4HL0Mn9uSfRKeu/gQDgI8TuJiI9dzEkwl0YCQwEBylvWTx4rz5ffv25Z+gnq6+JENR07bUh/KS6G8b69pe0LnvvvtiiSKng9OIXBfnMYZBUXtTp03rNg0QeFl9GXiVOt2HTkpy8RXyHGBAHwvFpK1p1SaE7iDXCQaApgmlKLuwPcPEHsCAX/pmH+7s+rgRz0xOLv2N6ufnFKrxb+wLuxbLRKwy/FAE3rZ1a/bnJ588SiriFmcXbwAC+mIw9KYfj6ZnCC56eF5Glk2M/uhTKQAIyQJSDQNIgTaeXEuGen3bbL4p8rs20ejP9dQfmUiKAzd5BlNk4LEnAKmtp5Tjb1EAUNdFXwyer3ZW0hwBH5IRAOs6NYFDGeevq/+SdgdqGZCP102d11N6mtTT/y+d9HOBDs8QikACjhL70l+SQZ/4zXmXAoUPj3/4/e9rdX7O6+uLFmX42rPpsBifPoWWjR39i/hQuvTyaa/CoQLQ6xWhadlxqBQEuNNzZ6Df9WUhF1+mKKI7PR/709/5jHbk1BipLx1WItVZ7Pf/Yx7eKe1DUTlMcOJIOGm2w4dxTYv+NlsM4bM0ALgcI4byQmlIBUVOr7ejH/Yh5cO08cXq/FKi0nJqvKufBiwxjNWrV0tb6NtyGBJwEOAAbdptSPNBZTpcZfQP4bM0AIQ0ijpVZAFox+bcekps+reLz6K+6zvW+LifPqkdKruiegvU1ldbSt9ksE4hCxNNGwigrAkEXO8gVMU3z1JjthkFAFIYVlmaOsDYgEAiTEkE1aM+6FLU586Pj1zgk94pLiz7YbKLy04fEtEzvU9DQ0MpWGokTYDAsx0dFG0tLmuDVUZ/iY2alOG1CqAaOfq5m0iXdGY+UnM5GdNYXUK/iFfTBJ++1o9/P6J2Iaba6IM+6Mt+rvkQ3u+UfEnkW3UZbARDJkZzJaTDog+nVM2j3l5ZQDLxHyUDMDlWDGGV7bAEFX3a0OlR9KBoT//Xs4EdytgeVFt8kzmZGvfjXXie+vs4fwxdRaGBz3/RHYVgMZHnnn8+L2DbsEW1Q4YB/RD90T+vDAAVYkft2PR0lUvoh+xnMM3wkzFxg0GqGXOLrcmkL7UcUuoDbhX4m7EJDFvOP//8YQd08II+7wuE9OHPTzyR/bvLLzdWDdks1NRgaJONNwAUCTnEkVygEkqT81klCJDzI718Rq09p76w5VVf8tMnAQkIXJEuNa+cPr6oROcF0AQsByzi9Yorr8wn57Zv25Zk7mSv2gIO+vTSkk0GsYYGkqzURw9l6QUNAco26tPBVIhq4sEVMfWNJBTxaShAz5/405+qc352rh30wj+vVaXspDrFAZ4YrsD5uePrsuf7NFAOIId6kvMNpLxQOSwN8uGcSc9Smi4bktLh5VLQJPpRMwAyuJBII4nSIcKjOlL6toyDz+QTTd3xq4r6aD+P/J334ymLIkOxzfTr8pPKpIzceV36mpJpfsIUVEjmvD/4bsKr6sg0/tmzsvxhbkaSBbjacTlq7MAZg15QBkAG5xJIzOcu4UraChWY7vymaIHlvSpSfqnzm+QVQ4YSOZvKcOen6E4ZgOmjoCjDP6hKwQV1cAqw6/BPXz7pHMaQ4CVpK9T2UussGACKOh3KtEtIoXQ5r642uAHA8W3Oz0EAKeSatWsldlCqDNq8UX2J2BX5Y8ipFKNaZaT99Ck1Hs0JCMi5edpvymZobgPP+OGfMXhdu359dzXAtITrspuqZe7iRyqTUgAQiwkfB5V2rKiciW/u0HpdvlmEp/0AB3xeOtnyHmMEToTjrLmh8ck+3WFSAHSo7PEhT86rzrfu+Lwv+jM+fCj7VSBTf0wZgMu5Xc9D/cRFN1QfvF4pAKjDyGIJhSulKO3T1/opOmC8L/22fFlFwdCR9vLoGer8Jl5AV3J4SEg/wLvE+XXa3PF5fV6On+0fwpteZ5EaxuGKOQwIdX7fABba/9IAUNTBUGd1CS2UrhTxUc706ig5f1Xj/W7K3/kMOfjSJ9BskZ87kMQ4cBpSimuK5WvHPP1Hu6YswDZESJUFbNy0qSsCKQjEtEUu/1R0dR1HXwWIZUSuGWoISKokV6ai0+GvjPINP/gd4/1KUn51NBnOtNfHzNQXbiC6sVRlPC5dI6swRf8i3jnIERCTrk39ipkFQK8+m39ccnYFMpf8TM9j0yydAegKM6VyIR1NXce2vVN3fj7mr2q8jyU+/kELPd3nk2ES53cZKmQde1INNM8991yrGk080aoAr6RnPPQstiPwNk0goNuLS6Zl+HPRjukbXhlAEWOuiB3CtItmSBagK1Kf9beN+asY7/Mz7PR0X0/1bQ5EcrYBXIjMQnSHOkj/yRE4aJmymFCHQX8gt5hZWZUy8gmYoTIq0p8XAIQaQhmBxgSBIudH30zOj8k+emkktP+SejMLUn5f5zdlZTZAIPlGjzp4qcdy8bYkRs1tgNsS/T5p0qTk71vwrrhkJemTxCaqKBMVAIqctSkgQEI1jfv5MzxfpM6aX7tuXXI9YG1fdwqb07sif3JmPRuwOQt+D3UUohljDsgnAku6Hton0HZl2JL2fctEBQDfxmOWlwAMAZRt0o8yAJxj/5o6pju182M320XaJ8fJEHQAsBlIWYNL4URFekW/XBE0pl1USausLmy8lqHr6n90AKgrCyAH8TVomvTjm32qmOnne/n5JB93dO4oqZyGIjHkAECK9upy56BTmlAr6/g28HYZuO9z2ypASif05TFm+SirADpDRcIqY8hllaCPg03Oj/fPY04omZTFt/MWzfBT3TIysxmLiebcefNi2lZOKwXv0Zl0EJTYnaSMjy6obBm6EjklAQBJw6FlXAKxGZy+p9/k/PhwaErnR4Tl433d+blMKGK6HCjktBqb7Pk7BqH64fXw1h5d+gRrDPpEw/WdR5+2dHm75A/aLpssar+OcT/nJxkApMoCQgRuepUXdHja7/vVYB+jQllsicVaOymcy8c03tfp8+U0Xbb00hJ/ecmXvxTl16sXbPRLX3Yt067+unAZWnpdieOH2GJMHk20pHxT3WQA4BKOL6M2h5AK1LTej7o4ry+18+cpP9vOSzz7yECP9EUAqwNC0SYWfWyO5chYF+2sM9EjfUgzGJ6xEXjH4tPk/JKoLilTZfT3sadKAMCloBCGXTT153xnH55xQ9q5c2f2fOdgSF+6kvLYoIJTbHD59tU2mcmd2wSK3Cjxt+nm9QgAqB7fgSjpo6sMvnuoy913olZvg9dfE/GDJpM7B6xIdNU053fpwfY8aQaARssKqqhjJtpFxlWl82Mf/A0q8psufdafyui88yEK/9uqTHZ+gcsgaPafyun/dtWXPsdXek064XMCLlqm6E+ZA777F+u68KKLhgG1CQhiyEkCML59CqWZHABcIBDKOAnIB2DI6HaqtD9l5J+tPs5x9TXXiHXIHcTk9KYIKAGH0DmBeXPninmXFFz99ts9WQCvV/Rehp7BcVlhl2bMy7RUqduXj72F8BZCv4wPeQNAaGNVTAoW7e7jUfb5F14I0Y2oDpx/gToAw3VJoz3K8bTf5vhFwOGaJOQrDtDTrNmzXex7PUeUdmUBtnmLon7FPIINm7/04ZDeyVDb53TqnvXX++QNACAQQxAphGuySn2y6ck//9nLeH0Kv//UU7NzzjvPWMU0+60bNwcpm6PrjlKUCfik2TrTNB726X9RWXqZyrT8KgU1og8aOHk55nW+0luRXcew+RTOX5avIAAIBQFXelO2M7w+Tyu50eEc+BQXnB9HX5ku0zKkKeIhCuE2PbP9hvJFDgR+iuZF+BIkj4CxXw8GbeywxKWDgA0UePqPPpBscCDLnr17o6rx+M4EINkoH+uTjFz2W8RQWds20Y5BM/pWYJdWIMSipR90quwsMY+knJ/HH3/cxV7w8xUrV2a4674gu7lnnplNV2cI0sVl6mM0yAJibrLBsuBDDz2UXX/99V0bIKcC35w3+reewT2nPrYSbbtyR0AXfuhD+V8+svHRs4tuGWDx4cMYnMoQcHXMRrvqDlOEdH39pYwsmlIXOnnjzTezR1S0xR4HffXABK5VZQHkZBgO0PIdz2woAyIeeTZEZzDGdn7whOjPbdn2d4iOXT4S6gsuulJeS2cAoRG7KBMIpWlEODVexJUy+kuFXXU5rHS87+SThx0oaktnTVkZdIQVAQBK7AsTg7ix8Wj+woXDHJDzAqCIudSn9+MatVrDhz70PMbsv8tJUzi/atPrC96lAaCMYcQCAcluspEQ/U26WL9hQzZLfYaLxrhFWRnkqBvtDLWq8ebixcnS49Xqewq467gAjrrDm8b+IbzV4fwhgBI8CciF4upsiAApXQyt29Z7VwJ82bNofsVmQBizD+J11vz53ehvi/z4PcSxiuQVm14ZHr0AQDFuTS9CQcAlDAldF42Y20X71RF8lgQpJeap8UUXXtivXTfyfe211/ak/jxLlNidTSBFdV22WiTkMjzZ6HoBgAtpQhl0CUVCt4jGOsNbaQNlzRE7w5fBOBDgZaZBAQHTuN/m/C7b1EUvsdUQdaUCFW8AaDIImAQLBX6os8wTIviRWIcb/aCBwAXnn5+rNOZMP9mIy/l9wURCN5Qm0Q4CgFRO4eqMRMCmMq56qfrTz3ShC5LboIAA0v7JU6YMS/35pJ8ODC575Pp12ZgPLSndUJqcfjAAFDXuEkaZCRIpbW7AaA9ryiP5ksiNHJ3kBBnyT3fj37ixonBhH80JQPd8zE9OH8P5dZnZstDYthfD+cFTMACkGgq46OoobRIsGTsJCf+//PLLY+ugb+gR+BEo2lJ8W8pJ9YZlAgoErrvuuvyjHI291KYoLPVdeeWV3XMRAGg2Ofj2QwKqZRxVQt+XZ718KQBwOWuZDrgEJ6XNy53fGf+VFVpf1VdOAAfQQdEFpLp8bZODV119dSOzgTzqK4DiS328DzoIcp26bM8lO55BhdpK6KSf1C+Ir9IAUDcIFBkq8UapHg69zEGg4Ks1oQprar0LLrigZ61byqtJtno2gH9DrsgGpr/vfVLSScthbz9FffSBR/2itN9ly7YMydQZCYjYhBDq/CFCjbYTEB227chDh0Jf8CmiyxXi2uAC3shYEbWeeOKJ3DAG+aLlLlNEsgEnynI9UjkuX5tO5qmNNThSDAeAYPdgZZeyr1GjR+dOT9GZhiu2qK9HcanDSiKslJZJPlU6P9qPBgAuZVcJAmSgvE36jZSDOQEYNTYJrVRv8e3bv9/VhcY/R39OPumk7t5/PkFVZJT6M/q3DgRFIMCBAm8iYgsxLpy/kOoVbKT5Z5x+et4W7yuP8qahT+v875pyVACQROtQL5LQNjm86Tee6sFY6dVZWxYRmr2gnTJ1fWWlG3tZ49dlroO4DhwmwPjwZZd1ZYC3E5eozGCHOow15w135wtCxr7SUK1TZtzYsdlU9cVhjOv5VTS2NwGfTS4hKbkpu/LVmw5Iev0yGYWLl6gAQI6VYijgok0dlYAAytJhEzbhmtJglzBtz6sAAZ462vokSV+lxmc65MSUOZBxQwbHH398doEan5vkQb9xHkmXOt96GQ7oRc4tkZHef4nMyjqopI1Q23PViw4ALkctMxTgipYeKsKHAzwic6XpB0/ydlwCDHkueXtRStdlfCFGL2nbJldddtRXrnd9XqHIAUzOboq6rqjuem7qs8QxXfJ3ydLVRln6rvaTAEBqEHDR51FHL6sbnxRUTIIMjeyplUr9NzmKyyB8nvOIb5KrCUgJEGzZgql9V0ZTJM9QAHQ5Zowg4WqjCjtJBgAuJy2bCbjom0AAv/GIRMZGjhwq8FgRPRRQbIYU2h8fENABlPOi9wfPbBOOPm2a6Oj1Uzr+oDg/+pEUAFxOWjUIFKWnugH5OGMqRwsBllS8SBzU1bbpwBEJXWkmowOhi58i0LDx5UvTRCdV5HfRNfHiBQAhDUhAAGV8HE7viCudlKanOt0QByzbF85DDGPzcbDUZYv6YzuSzMVTjOxHatcx9OFqK7QNF12bHL0AQE+rXcrRjVk6cedD17cNHwfVJwqlfOnKKANu0jarKCcxstC+ugxf0rae4UlkkopuXZF///792yX9pjJeALBnz57l48aNOy00daeZYxuDoXR9QIBAzAcIuGGFZAW2DMRHUbys1GhD6ZepVwb8QvvlAo8QZ6Q6IbRD2gttR5fZvn37tvnozwsAfNHFxEhVIIC2Xc4a4pihitJl4eLNR4lNLmtyatOav7QPMeQvBZoYbfGAY+tjaDumfqjNVuulskQ5LwDYvn378pPUVlPqVJl0L/VwgKK2xNFCgMBHyDYg5L9L+CzbZhPqhxp7DN6ljs8zvrLtutoMlYeJ7oEDB9bdfvvt3/Lh2ettwG9+85v/iEaoAVfnihhxdbwMbd4u2nG1xfsTq10fJZDBEa9Sfn3bqKM871Nd/YJOpXr1sReXPF1thsrDRnfv3r3LXTz1ZKK+FVSK8SKv4+pkE0DAF9F9DMZXftLyTXAcKa8mwI3pSCF8UJbqY5+hDqnzJ7Gf0LaK+rNu3bqnfWXllQGA+JYtW94wddi3YSrvEoREmNK2fY3Sx3ikPISW0wHBty+h7drqNY0fPSj56C6mLF3tlmmriLaa/FuODN1Xz94AgEZ27do1LAsgtPVtXAoCZenrfLlAp4wxhcogtJ7NEU2/u9qIScvVVornvsGijDOa+Jc4f2i/i2jj2YYNG4K+fOsNAOjAihUr7lON9nyf2SWAos5LlFGGvgkEQoAgJg+hxhBaz+XgoXTrrufr+ODXR/eS/rnsokx7LudX0X/F1772tf8o4VMvEwQAmGncunXroyEo6GLSJSiXoF30ywIBZSOx+fDluy1/9Gx/Xz1IAo2PbCU8uGy6qD2X8yvae9WBNvf68MzLen1JVG/kV7/61aIJEybMMzUeukRItCTLYmXbMPEtaVevl4KPUIWOhHq+Tp8i4lMgcMk7lfNT+xs3brz3S1/60iddfNielzrT+ZxzzjlZndAyRx3NdHxsEICSJY4lKeMjHEL0ULqh9Xx4HIllQ5yeHD+0rk3OEnpwfEm5kDaIrpqLe+kLX/jC1WXsIRgAbrvtNhyq+f5t27atmzJlygcVCEyyMRLqFD7OGNpGkQKkIBQb/MoodNDqhjpRWQcMcUyqUybquzILksfQ0NBLt95663ll9e0cAsDRHddVY8aM+fScOXP+duzYsdZzocs6qCQ1L9tGUT8l7ccGQJfgB/V5qNOnSvVJzhK+qnB+FflfXrp06d8rvpaqe4+6D6r78B133OFtEj0AIHD4vBHN2b4zevToM2bNmnXG5MmTL0jlCFInbCoQGOTmrbBBrSBxrqK+l3W8ItoS3mK0L5nw27Rp0yNqw89/VvyugdMX8D1JAcKQy166AGBzfA9nAq3/oIYDn5sxY8ZlKis4wdS4Bz0r7xIgiNFOqoyA003Np8sA6noucSoJbzEcz9aOlMcYPLicX23zXa1m+59X/79f8ft/1e1ahoc/qmOXs6woM8gBQHd+m1FKjFWVwQtG33rve997s3pxaJ7KDHrmBiR0XMqXgEBVEVfKi6tPVfEr4SN2GakzSdqN4XCudqT8xuClqC31Cv669evXv6m24N/Tcfxd5Njog62u6XcTEByjnB97AfJUQndMk6N6gAMmGM+ZOHHif1JZwY3qSOgTVVYwgQQfAwRAS+p8sdorMhwpLy7j48+r4NuHH0lZqfNIaPEyMZzN1aaU9xi82NravXv35p07dz6m3r79B/UK/r5Oua3c8W3Or9PU/62DAAAgTxW4oUn+ljgyo5NnGspBjowfPz6vOmnS0cSAyiiB0nDkWMW0vjqBVAYgpY95jnCng1I69MaqsshE8H/9Au0tLkNwPCde8xTLdHEZlllNKMlnP1Qfo5icrMlI/fMIdI1odwD2maAjaJcC0r5OO9QM9Et87VQ2hnQbPHT5sAGA6dxD00G0vD8HDx7MVGqff6oO/+9c3RSefjABRoHDHwMhmupyEICTGJ2fDFj/f5e7gi+6GKJWzgj4USlNToL+z8oSs/hgX/BH+zr08J0v3LsNhhO0+1Gj422Q/RjJEzidiSQcfLM08kbkCe3itl2wwb0x+ZLQYmDRY2NkQ5wOflP/xiEdcKydzOFzv6ay/G/e4WEHgqCQzfElwwMJONikndJBNNpFM6cR7asl5SOBlPqX8mFy0Bh8cSeU8mJzWEP9sarsVNVGz4w/ZVV6v5D1qywgB5jRqjJSDfyv6xhFQCB18rKCK1m/J32SCj6wXC5DdY9T93HqnqxupJDIQt5R9w51I6J4Zw6B/LTVAiRQ0ua6LeoO50vXEzAOqPJLVBvD0n1TtsBEgqExhj3dcXKeCtmiPP/d1BmPDlL6PQxsAnTlqlK1o9H4EGkYbswxVA1CLpm0zyuSQJE/SIYBpvp62k9dwTifO3vBMCH37w6d7hwbhgC4czQwgQCXWUnnB6nDHRpgIHicX5EeyzZTNQh1Vaj+oLYpM6F/+/JUtFOUaPP/A+ARTEJ065xYLauQJtTXfUgCCOSX0rKCfnZnGuH8SFO7V9GMtemZDZlsTHTK9xiIRxYxDJM464KO93MRAmvuZPiN/o2sijs++jps5rqg86eoZ6C1uePAvnKidsBDiPMTr77t9k35Ms5rqJuDrvq9m0lTGWE73UAApXcV1nHwHImRWujIY5qY4I5bZhJFyHjOUsfo8f/c6Pn4p28swo9R6iuBNTkcoi3t4wiJ8hR1N5Is/dgaOaU97DNYKK422PMusPM6HAQMv/NlQcxV5VnAaD5T2HFwEM/nBl0MuXoaQkPLBGDcACkYKg1TwN+wKFOWT1c/9OeB2YpvM7y8LZL3yELQCGTKhwb6smvfDM+q1rtAtj1FQni01TH9bgOAThAnfmiCmlL/qepBfro3nIunEXB8BP8cBDpEjJMMRNl3yFAkRANggLdhQxSJElI7aIhSBXxj1SAXuVYW/+bpvYsUH0ubJiJNy6BwetwT1Q3jeMvVSOTnVU6Y8gwSb9EZr5g69qEV6vzc4Q2gME39Rp8MwxJg92j/fB8AS/2PU3/D4Wj3FQHEsLFG0USGzzNd8kVgIjW4kKxDStsFXtpzGJrrvAVydsj5PeqGkpDpmEDA1Lw+SUeRnTIkAnKK+qbdlOR8cAYsWXp9Wy6G7Az9BVmepdCINLQ5ioCQB/opmhvxcdwOv7k7cSYFNJCFQz/GQBcKCBoI4HNh5MPY/djdINfdCKQqQEhnKAfCRNCajsQhLBjxMIR2Rf1ce4adgqbOuGZFfaN5DBDxtTIL6FDkJnL6BB0ZC6XxQOWiWXoCEx7Bi8b/KA/9YrwHhdv2IYicodMJip7c0F0rC67nPXM6TP7DshWBM3HV8UwIPPS8PVekZ9YW3zlKNAncwR98pAvEnXrWPmt9QNY3bBWuayzv7uLtYTMAFEiOY1T0H7Y7Nme88zYgKSI3CG1irWeJRuKYkjLUO5+yukRcdQ3PSak+xl+ICy4efEGFORxVJZ5Ns+x4VtQn7kjc4VBHKgPfoUhXteoPgJGejVA0Fu3M9HR+b3F3AiAHNs4/ojQiJ3jGPg9ycPHQzId/V1nX87wTwwEEOh+rnL+73M87l//tOgikY+BeYzVfp/At7wkE5CTWcZ+P1bh4dT33aUtQltJlFLU5FJwQO8Awxp+ubhg03jBbrm7TsMPUrD7kcLEGmeOtr9PUjUwEwwvsV0d7+Nu6F99l5B2HdWUXPXaufqA+mOTUY98uPlwCwHNfGrHLO88D0DuhwICWB3UBWwGghMHT+JSGDWJUNVqo/SUlMsQVqh5Q3DQeluhzWJkS/fZue140dgAAAfVJREFUy6MCn3+AfOF80CVP/8gRfNftXS9T6Y7Vkz169KOnqK9zdAiY5kpy3+w8NwJJYFu+PIuCqi8v0uPBxIjOhgmIJKWiqGGpTxeaNC3tEbbDIXXjdaWfLuXk8sPSSQdQbLbNh1e8jE8/KcrzaE9GzOcXAN545xrRlV5j5cZu4pEvDdr6EAUwa3D+4CZ9nc6jodweFH2supyq7tXqxkRd8CV1eL0BMQDYOHMNHYJ7NLxijyNGiry6Y/J3FWzOWTQfojtnjg/qpjGwHm19AIBo6SKVpsFF4GTi29QOb0ufcyjLh9NUEjqks+1hqF0wQedFqNg2ekiFOnkRT6UBQNLhikDCZeD8OTk+3tybpW6Mh3H4xFp14809Y2aggY7uNARSvk4tEWHTykRN6zud021RDChNAQaBkgr7mMLBXTxVAgAuJvTnkQDDNVY1seUaEugggn+LDdVXDjWVJ7mZbMN3vqCmLjSj2Toc2rfnjQQA306YykcCkRis6KDBM4XY9IlemQhdNBzwAUhX31zzK676yZ73g+PG6vzAAkAsAfnQcYAODTtAstRKh6oPWpjsO1HdmOHfoG5M+mFjCX7DgSQog81F2N1nOlfPpHvJ8IX2DqAfmNuYpm5MZmH41LPObJAf6oNPenPQlkF1fx9JDuljbzHK/n9j+xUjLc09wwAAAABJRU5ErkJggg==
\define toc-caption()
<$set name="tv-wikilinks" value="no">
  <$transclude field="caption">
    <$view field="title"/>
  </$transclude>
</$set>
\end

\define toc-title()
<$set name="tv-wikilinks" value="no">
  <$transclude field="title">
    <$view field="title"/>
  </$transclude>
</$set>
\end

\define toc-text()
<$set name="tv-wikilinks" value="no">
  <$transclude field="text">
    <$view field="text"/>
  </$transclude>
</$set>
\end

\define toc-body(tag,sort:"",itemClassFilter,exclude,path)
<ol class="tc-toc">
  <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
    <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
      <$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
        <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
          <li class=<<toc-item-class>>>
            <$list filter="[all[current]toc-link[no]]" emptyMessage="<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>">
              <<toc-caption>>
            </$list>
            <$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
          </li>
        </$set>
      </$set>
    </$vars>
  </$list>
</ol>
\end

\define toc(tag,sort:"",itemClassFilter:"")
<$macrocall $name="toc-body"  tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />
\end

\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
<!-- helper function -->
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
  <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
    <li class=<<toc-item-class>>>
    <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>
      <$reveal type="nomatch" stateTitle=<<toc-state>> text="open">
        <$button setTitle=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
          {{$:/core/images/right-arrow}}
        </$button>
      </$reveal>
      <$reveal type="match" stateTitle=<<toc-state>> text="open">
        <$button setTitle=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep">
          {{$:/core/images/down-arrow}}
        </$button>
      </$reveal>
      <<toc-caption>>
    </$link>
    <$reveal type="match" stateTitle=<<toc-state>> text="open">
      <$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
    </$reveal>
    </li>
  </$set>
</$qualify>
\end

\define toc-unlinked-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
<!-- helper function -->
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
  <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
    <li class=<<toc-item-class>>>
      <$reveal type="nomatch" stateTitle=<<toc-state>> text="open">
        <$button setTitle=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
          {{$:/core/images/right-arrow}}
          <<toc-caption>>
        </$button>
      </$reveal>
      <$reveal type="match" stateTitle=<<toc-state>> text="open">
        <$button setTitle=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep">
          {{$:/core/images/down-arrow}}
          <<toc-caption>>
        </$button>
      </$reveal>
      <$reveal type="match" stateTitle=<<toc-state>> text="open">
        <$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
      </$reveal>
    </li>
  </$set>
</$qualify>
\end

\define toc-expandable-empty-message()
<$macrocall $name="toc-linked-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>
\end

\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path)
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
  <$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
    <ol class="tc-toc toc-expandable">
      <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
        <$list filter="[all[current]toc-link[no]]" emptyMessage=<<toc-expandable-empty-message>> >
          <$macrocall $name="toc-unlinked-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="""itemClassFilter""" exclude=<<excluded>> path=<<path>> />
        </$list>
      </$list>
    </ol>
  </$set>
</$vars>
\end

\define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
  <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item" >
    <li class=<<toc-item-class>>>
      <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>
          <$list filter="[all[current]tagging[]$sort$limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
          <$reveal type="nomatch" stateTitle=<<toc-state>> text="open">
            <$button setTitle=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
              {{$:/core/images/right-arrow}}
            </$button>
          </$reveal>
          <$reveal type="match" stateTitle=<<toc-state>> text="open">
            <$button setTitle=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep">
              {{$:/core/images/down-arrow}}
            </$button>
          </$reveal>
        </$list>
        <<toc-caption>>
      </$link>
      <$reveal type="match" stateTitle=<<toc-state>> text="open">
        <$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
      </$reveal>
    </li>
  </$set>
</$qualify>
\end

\define toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
  <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
    <li class=<<toc-item-class>>>
      <$list filter="[all[current]tagging[]$sort$limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>">
        <$reveal type="nomatch" stateTitle=<<toc-state>> text="open">
          <$button setTitle=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
            {{$:/core/images/right-arrow}}
            <<toc-caption>>
          </$button>
        </$reveal>
        <$reveal type="match" stateTitle=<<toc-state>> text="open">
          <$button setTitle=<<toc-state>> setTo="close" class="tc-btn-invisible tc-popup-keep">
            {{$:/core/images/down-arrow}}
            <<toc-caption>>
          </$button>
        </$reveal>
      </$list>
      <$reveal type="match" stateTitle=<<toc-state>> text="open">
        <$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
      </$reveal>
    </li>
  </$set>
</$qualify>
\end

\define toc-selective-expandable-empty-message()
<$macrocall $name="toc-linked-selective-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>
\end

\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path)
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
  <$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
    <ol class="tc-toc toc-selective-expandable">
      <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
        <$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>> >
          <$macrocall $name="toc-unlinked-selective-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
        </$list>
      </$list>
    </ol>
  </$set>
</$vars>
\end

\define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"")
<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
  <div class="tc-tabbed-table-of-contents">
    <$linkcatcher to=<<__selectedTiddler__>>>
      <div class="tc-table-of-contents">
        <$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]"/>
      </div>
    </$linkcatcher>
    <div class="tc-tabbed-table-of-contents-content">
      <$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
        <$transclude mode="block" tiddler=<<__template__>>>
          <h1><<toc-caption>></h1>
          <$transclude mode="block">$missingText$</$transclude>
        </$transclude>
      </$reveal>
      <$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
        $unselectedText$
      </$reveal>
    </div>
  </div>
</$tiddler>
\end

\define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"")
<$linkcatcher to=<<__selectedTiddler__>>>
  <$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>
</$linkcatcher>
\end

/*\
title: $:/core/modules/filters/has.js
type: application/javascript
module-type: filteroperator

Filter operator for checking if a tiddler has the specified field

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

/*
Export our filter function
*/
exports.has = function(source,operator,options) {
	var results = [],
		invert = operator.prefix === "!";

	if(operator.suffix === "field") {
		if(invert) {
			source(function(tiddler,title) {
				if(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {
					results.push(title);
				}
			});
		} else {
			source(function(tiddler,title) {
				if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {
					results.push(title);
				}
			});
		}
	} else {
		if(invert) {
			source(function(tiddler,title) {
				if(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === "") || (tiddler.fields[operator.operand].length === 0)) {
					results.push(title);
				}
			});
		} else {
			source(function(tiddler,title) {
				if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === "" || tiddler.fields[operator.operand].length === 0)) {
					results.push(title);
				}
			});				
		}
	}
	return results;
};

})();
\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$
<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>
<$wikify name="journalTitle" text="""<$macrocall $name="now" format=<<journalTitleTemplate>>/>""">
<$reveal type="nomatch" state=<<journalTitle>> text="">
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>
</$reveal>
<$reveal type="match" state=<<journalTitle>> text="">
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>
</$reveal>
</$wikify>
</$vars>
\define lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="$beforeafter$" defaultState="$:/core/ui/AdvancedSearch/System" actions="""<$action-setfield $tiddler="$:/state/advancedsearch/currentTab" text=<<nextTab>>/>"""/>

\define cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]" />"""><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=""".tc-advanced-search input"""/>

\define input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"""><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>

\define input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>"""><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>

<<lingo System/Hint>>

<div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
<$macrocall $name="keyboard-driven-input" tiddler="$:/temp/advancedsearch/input" storeTitle="$:/temp/advancedsearch"
		refreshTitle="$:/temp/advancedsearch/refresh" selectionStateTitle="$:/temp/advancedsearch/selected-item"
		type="search" tag="input" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter="[[$:/core/ui/AdvancedSearch/System]]"
		inputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> 
		inputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>
</$keyboard>
</$keyboard>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$button class="tc-btn-invisible">
<<cancel-search-actions>>
{{$:/core/images/close-button}}
</$button>
</$reveal>
</div>

<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">

<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">

<$set name="resultCount" value="""<$count filter="[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]"/>""">

<div class="tc-search-results">

<<lingo System/Matches>>

<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]">
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span>
</$list>

</div>

</$set>

</$list>

</$reveal>

<$reveal state="$:/temp/advancedsearch" type="match" text="">

</$reveal>
\whitespace trim
<$button actions=<<cancel-delete-tiddler-actions "delete">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/delete-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>
</$list>
</$button>
\whitespace trim
\define journalButton()
<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/new-journal-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>
</$list>
</$button>
\end
<<journalButton>>
\whitespace trim
<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/new-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>
</$list>
</$button>
<$button message="tm-print" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/print-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Print/Caption}}/></span>
</$list>
</$button>
<$button message="tm-browser-refresh" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/refresh-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>
</$list>
</$button>
\define save-tiddler-button()
\whitespace trim
<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>
<<save-tiddler-actions>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/done-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span>
</$list>
</$button></$fieldmangler>
\end
<<save-tiddler-button>>
<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
<$wikify name="site-title" text={{$:/config/SaveWikiButton/Filename}}>
<$action-sendmessage $message="tm-save-wiki" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>
</$wikify>
<span class="tc-dirty-indicator">
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/save-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>
</$list>
</span>
</$button>


<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="''"
	suffix="''"
/>
<$action-sendmessage
     $message="tm-edit-text-operation"
     $param="replace-selection"
     text="✔"
/>
<$action-sendmessage
     $message="tm-edit-text-operation"
     $param="wrap-selection"
     prefix=<<now "0DD-0MM-YY ">>
     suffix=""
/>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="[["
	suffix="]]"
/>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="<tgeel>"
	suffix="</tgeel>"
/>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="|^ <$checkbox field='"
	suffix=""" "">>|"""
/>

<$action-sendmessage
     $message="tm-edit-text-operation"
     $param="wrap-selection"
     prefix=<<now "hh0mm0ss' checked=1></$checkbox>|<<">>
     suffix=""
/>

<$action-sendmessage
     $message="tm-edit-text-operation"
     $param="wrap-selection"
     prefix=<<now "0hh:0mm ">>
     suffix=""
/>

<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="{{"
	suffix="}}"
/>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="__"
	suffix="__"
/>
\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]"/>
\define save-tiddler-actions()
<$action-sendmessage $message="tm-add-tag" $param={{{ [<newTagNameTiddler>get[text]] }}}/>
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<<delete-edittemplate-state-tiddlers>>
<$action-sendmessage $message="tm-save-tiddler"/>
\end
\define cancel-delete-tiddler-actions(message)
<<delete-edittemplate-state-tiddlers>>
<$action-sendmessage $message="tm-$message$-tiddler"/>

\end
<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>
<$fieldmangler>
<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify "$:/temp/NewTagName">> newFieldNameTiddler=<<qualify "$:/temp/NewFieldName">> newFieldValueTiddler=<<qualify "$:/temp/NewFieldValue">> newFieldNameInputTiddler=<<qualify "$:/temp/NewFieldName/input">> newFieldNameSelectionTiddler=<<qualify "$:/temp/NewFieldName/selected-item">> newTagNameInputTiddler=<<qualify "$:/temp/NewTagName/input">> newTagNameSelectionTiddler=<<qualify "$:/temp/NewTagName/selected-item">> typeInputTiddler=<<qualify "$:/temp/Type/input">> typeSelectionTiddler=<<qualify "$:/temp/Type/selected-item">>>
<$keyboard key="((cancel-edit-tiddler))" actions=<<cancel-delete-tiddler-actions "cancel">>>
<$keyboard key="((save-tiddler))" actions=<<save-tiddler-actions>>>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem">
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
<$transclude tiddler=<<listItem>>/>
</$set>
</$list>
</$keyboard>
</$keyboard>
</$vars>
</$fieldmangler>
</div>
\define lingo-base() $:/language/EditTemplate/
\define config-title()
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end

\define config-filter()
[[hide]] -[title{$(config-title)$}]
\end

\define current-tiddler-new-field-selector()
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input
\end

\define new-field-actions()
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]"/>
<$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/>
\end

\define delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>

\define cancel-search-actions-inner()
<$list filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]" variable="ignore" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>""">
<<delete-state-tiddlers>>
</$list>
\end

\define cancel-search-actions()
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[<newFieldNameTiddler>get[text]!match<userInput>]" emptyMessage="""<<cancel-search-actions-inner>>""">
<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
</$list>
</$set>
\end

\define new-field()
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
<$reveal type="nomatch" text="" default=<<name>>>
<$button tooltip=<<lingo Fields/Add/Button/Hint>>>
<$action-sendmessage $message="tm-add-field"
$name=<<name>>
$value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]"/>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
<$reveal type="match" text="" default=<<name>>>
<$button>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
</$vars>
\end
\whitespace trim

<div class="tc-edit-fields">
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>
<tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<config-filter>> variable="temp">
<tr class="tc-edit-field">
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>""">
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</td>
<td class="tc-edit-field-remove">
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>
{{$:/core/images/delete-button}}
</$button>
</td>
</tr>
</$list>
</$list>
</tbody>
</table>
</div>

<$fieldmangler>
<div class="tc-edit-field-add">
<em class="tc-edit tc-big-gap-right">
<<lingo Fields/Add/Prompt>>
</em>
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
<div class="tc-edit-field-add-name-wrapper">
<$macrocall $name="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
		selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}
		focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}
		focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups="yes"
		configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> />
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$set name="tv-show-missing-links" value="yes">
<$linkcatcher to=<<newFieldNameTiddler>>>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/User>>
</div>
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type"  variable="currentField">
<$list filter="[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$list>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>>
</div>
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$list>
</$set>
</$linkcatcher>
</$set>
</div>
</$reveal>
</div>
<span class="tc-edit-field-add-value tc-small-gap-right">
<$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}>
<$keyboard key="((add-field))" actions=<<new-field-actions>>>
<$edit-text tiddler=<<newFieldValueTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</$set>
</span>
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
</span>
</$vars>
</div>
</$fieldmangler>
\whitespace trim

\define lingo-base() $:/language/EditTemplate/

\define tag-styles()
background-color:$(backgroundColor)$;
fill:$(foregroundColor)$;
color:$(foregroundColor)$;
\end

\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:"tags")
\whitespace trim
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
<span style=<<tag-styles>> class="tc-tag-label tc-tag-list-item">
<$transclude tiddler="""$icon$"""/><$view field="title" format="text" />
<$button class="tc-btn-invisible tc-remove-tag-button"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter="-[{!!title}]"/>{{$:/core/images/close-button}}</$button>
</span>
</$vars>
\end

\define tag-body(colour,palette,icon,tagField:"tags")
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon="""$icon$""" tagField=<<__tagField__>>/>
\end

\define edit-tags-template(tagField:"tags")
\whitespace trim
<div class="tc-edit-tags">
<$list filter="[list[!!$tagField$]sort[title]]" storyview="pop">
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>
</$list>
<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups="yes">
<$macrocall $name="tag-picker" tagField=<<__tagField__>>/>
</$vars>
</div>
\end
<$set name="saveTiddler" value=<<currentTiddler>>>
<$macrocall $name="edit-tags-template" tagField=<<tagField>>/>
</$set>
<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus="true" tabindex={{$:/config/EditTabIndex}}/>

<$reveal state="!!draft.title" type="nomatch" text={{!!draft.of}} tag="div">

<$list filter="[{!!draft.title}!is[missing]]" variable="listItem">

<div class="tc-message-box">

{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}

</div>

</$list>

<$list filter="[{!!draft.of}!is[missing]]" variable="listItem">

<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>

<$checkbox tiddler="$:/config/RelinkOnRename" field="text" checked="yes" unchecked="no" default="no"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>

<$list filter="[all[relinkable]relink:references<fromTitle>limit[1]]" variable="listItem">

<$vars stateTiddler=<<qualify "$:/state/edit/references">> >

<$tiddler tiddler=<<fromTitle>> >

<$set
	name="prompt"
	filter="[all[relinkable]relink:impossible<toTitle>]"
	value="EditTemplate/Title/Impossibles/Prompt"
	emptyValue="EditTemplate/Title/References/Prompt" >
<$reveal type="nomatch" state=<<stateTiddler>> text="show">
<$button set=<<stateTiddler>> setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}
<$macrocall $name=lingo title=<<prompt>> />
</$button>
</$reveal>
<$reveal type="match" state=<<stateTiddler>> text="show">
<$button set=<<stateTiddler>> setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}
<$macrocall $name=lingo title=<<prompt>> />
</$button>
</$reveal>
</$set>

<$reveal type="match" state=<<stateTiddler>> text="show">
<$list variable="listItem" filter="[all[relinkable]!title[$:/StoryList]relink:references<fromTitle>sort[title]]" template="$:/plugins/flibbles/relink/ui/ListItemTemplate">
</$list>
</$reveal>
</$tiddler>

</$vars>

</$list>

</$vars>

</$list>

</$reveal>
\define lingo-base() $:/language/EditTemplate/
\whitespace trim
<div class="tc-type-selector"><$fieldmangler>
<em class="tc-edit"><<lingo Type/Prompt>></em>&nbsp;&nbsp;<$edit-text field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}}/>&nbsp;<$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>
</$fieldmangler></div>

<div class="tc-block-dropdown-wrapper">
<$set name="tv-show-missing-links" value="yes">
<$reveal state=<<qualify "$:/state/popup/type-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$linkcatcher to="!!type">
<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>
<div class="tc-dropdown-item">
<$text text={{!!group}}/>
</div>
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]"><$link to={{!!name}}><$view field="description"/> (<$view field="name"/>)</$link>
</$list>
</$list>
</$linkcatcher>
</div>
</$reveal>
</$set>
</div>
<$list filter="[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]" 
emptyMessage="""<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" text="fixed-fluid"/>""">
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" text="fluid-fixed"/>
</$list>
<$action-sendmessage $message="tm-show-switcher" switch="layout"/>
<div class="tc-menu-list-item">
<$link />
</div>
\whitespace trim
\define config-title()
$:/config/SideBarSegments/Visibility/$(listItem)$
\end

<$scrollable fallthrough="no" class="tc-sidebar-scrollable">

<div class="tc-sidebar-header">

<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes" retain="yes" animate="yes">

<$list filter="[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]" variable="listItem">

<$reveal type="nomatch" state=<<config-title>> text="hide"  tag="div">

<$transclude tiddler=<<listItem>> mode="block"/>

</$reveal>

</$list>

</$reveal>

</div>

</$scrollable>
<div class="tc-more-sidebar">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical tc-sidebar-tabs-more" explicitState="$:/state/tab/moresidebar-1850697562"/>
</div>
\whitespace trim
\define lingo-base() $:/language/CloseAll/

\define drop-actions()
<$action-listops $tiddler=<<tv-story-list>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
\end

\define placeholder()
<div class="tc-droppable-placeholder"/>
\end

\define droppable-item(button)
\whitespace trim
<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>
<<placeholder>>
<div>
$button$
</div>
</$droppable>
\end

<div class="tc-sidebar-tab-open">
<$list filter="[list<tv-story-list>]" history=<<tv-history-list>> storyview="pop">
<div class="tc-sidebar-tab-open-item">
<$macrocall $name="droppable-item" button="""<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini tc-small-gap-right">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field="title"/></$link>"""/>
</div>
</$list>
<$tiddler tiddler="">
<div>
<$macrocall $name="droppable-item" button="""<$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button>"""/>
</div>
</$tiddler>
</div>
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/>
\define lingo-base() $:/language/ControlPanel/
\define config-title()
$:/config/PageControlButtons/Visibility/$(listItem)$
\end

<<lingo Basics/Version/Prompt>> <<version>>

<$set name="tv-config-toolbar-icons" value="yes">

<$set name="tv-config-toolbar-text" value="yes">

<$set name="tv-config-toolbar-class" value="">

<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">

<div style="position:relative;" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>

<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>>/> <i class="tc-muted"><$transclude tiddler=<<listItem>> field="description"/></i>

</div>

</$list>

</$set>

</$set>

</$set>


\whitespace trim
\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<div class="tc-tiddler-title">
<div class="tc-titlebar">
<span class="tc-tiddler-controls">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>
</span>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link>
<$set name="foregroundColor" value={{!!color}}>
<$list filter="[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]">
<span class="tc-tiddler-title-icon" style=<<title-styles>>>
<$transclude tiddler={{!!icon}}>
<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>
</$transclude>
</span>
</$list>
</$set>
<$list filter="[all[current]removeprefix[$:/]]">
<h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}>
<span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/>
</h2>
</$list>
<$list filter="[all[current]!prefix[$:/]]">
<h2 class="tc-title">
<$view field="title"/>
</h2>
</$list>
</$link>
</$set>
</div>

<$reveal type="nomatch" text="" default="" state=<<tiddlerInfoState>> class="tc-tiddler-info tc-popup-handle" animate="yes" retain="yes">

<$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]" variable="listItem"><$transclude tiddler=<<listItem>> mode="block"/></$list>

</$reveal>
</div>
[tag[#agenda]!sort[created]limit[7]]
\define pdfembed(url)
<embed src='$url$' type="application/pdf" width='100%' height='915'/>
\end

JosBeishuizen

index.html
/
JosBeishuizen/josbeishuizen.github.io
JosBeishuizen
\define icon(icon navigate tooltip) 
<$button to="$navigate$" tooltip="$tooltip$"class="tc-btn-invisible"><<__icon__>></$button>
\end

\define _icon(icon) 
<button class="tc-btn-invisible"disabled><<__icon__>></button>
\end


* ''Version'': 1.0.0
* ''Date'': 2020/02/27
* ''Creator'': HC Haase. Inspired by [[Bimlas|https://bimlas.gitlab.io/tw5-locator/#%24%3A%2Fbimlas%2Fmacros%2Ficon]].

!! Function
This macro make transcluded icons follow the line height of the text with the option of a link and a tooltip. 
This makes prettier references to buttons (like this <<_icon {{$:/core/images/new-button}} "link" "tooltip text">> instead of  this  {{$:/core/images/new-button}}) in documentation text.

There is a'' simple macro'' without a button and an ''extended macro'' with a button.

!! Use

;Syntax, simple macro  (note the `_`)
:`<<_icon <transclusion> >>`<$button message="tm-copy-to-clipboard" param="<<_icon <transclusion> >>"}>Copy</$button>

;Syntax, extended macro
:`<<icon <transclusion> <link> "<tooltip text>" >>`<$button message="tm-copy-to-clipboard" param="<<icon <transclusion> >>"}>Copy</$button>

|! Attribute|!Option|!Description|
|transclusion|required|a transclusion of an icon|
|link|optional|name of tiddler to link to (omit with `""`)|
|tooltip text|optional|text of tooltip|


;Example
:`<<icon {{$:/core/images/new-button}} "link" "tooltip text">>` 
:will produce <<icon {{$:/core/images/new-button}} "link" "tooltip text">> that links to "link".
NB: if you want no link, but at tooltip, use `""` for a empty link.

!! Code

```
\define icon(icon navigate tooltip) 
<$button to="$navigate$" tooltip="$tooltip$"class="tc-btn-invisible"><<__icon__>></$button>
\end

\define _icon(icon) 
<button class="tc-btn-invisible"disabled><<__icon__>></button>
\end
```
The following tiddlers were imported:

# [[$:/_TWaddle/newtids]]
# [[$:/_TWaddle/newtids/Stylesheet]]
<$reveal state="$:/state/sidebar" type="nomatch" text="no">
<$button set="$:/state/sidebar" setTo="no" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no">
<$button set="$:/state/sidebar" setTo="yes" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-left}}</$button>
</$reveal>
no
zondag
maandag
dinsdag
woensdag
donderdag
vrijdag
zaterdag
januari
oktober
november
december
februari
maart
april
mei
juni
juli
augustus
september
$:/core/ui/PageTemplate
/*\
title: $:/macros/buggyj/misc/location.js
type: application/javascript
module-type: macro

<<location field>>
use:
<<location "show">> to see the all the fields
then 
<<location "href">> for url

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";


exports.name = "location";

exports.params = [
	{ name: "field" }
];
/*
Run the macro
*/

exports.run = function(field) {
if (field === "show") {
	alert (JSON.stringify(window.location));
}else try {
		return window.location[field].toString();
	} catch(e){}
}


})();
\define inmysocksMobileMenusMakeState(MenuName)
$:/state/Menu/$MenuName$/$(CurrentTiddler)$
\end

\define inmysocksMobileMenusMakeParentState(MenuName)
$:/state/Menu/$MenuName$/$(ParentTiddler)$
\end

\define inmysocksMobileMenusEmptyMessage(MenuName MenuType)
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!normal_menu" text="""$MenuType$""">
	<$tiddler tiddler={{$:/state/Menu/$MenuName$/current}}>
		<$button class='tc-btn-invisible'>
				{{$:/core/images/chevron-left}}
				''<$view field=caption>
					<$view field=title/>
				</$view>''
				<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=''/>
		</$button>
	</$tiddler>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents" text="""$MenuType$""">
	<$button class='tc-btn-invisible'>
		{{$:/core/images/chevron-left}}
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=''/>
	</$button>
	<$link to={{$:/state/Menu/$MenuName$/current}}>
		''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler='$:/state/Menu/$MenuName$/current' field=text/></$view>''
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective" text="""$MenuType$""">
	<$button class='tc-btn-invisible'>
		{{$:/core/images/chevron-left}}
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=''/>
	</$button>
	<$link to={{$:/state/Menu/$MenuName$/current}}>
		''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler='$:/state/Menu/$MenuName$/current' field=text/></$view>''
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical" text="""$MenuType$""">
	<$button class='tc-btn-invisible'>
		{{$:/core/images/chevron-left}}
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=''/>
	</$button>
	<$link to={{$:/state/Menu/$MenuName$/current}}>
		''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler='$:/state/Menu/$MenuName$/current' field=text/></$view>''
	</$link>
	<br>
</$reveal>
\end

\define inmysocksMobileMenusEmptyMessage2ListItem(MenuName MenuType)
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!normal_menu" text=$MenuType$ tag=span>
	<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<currentTiddler>>>
		{{$:/core/images/right-arrow}}<$view tiddler=<<currentTiddler>> field='caption'><$view tiddler=<<currentTiddler>> field='title'/></$view>
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
	</$button>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents" text=$MenuType$>
	<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<currentTiddler>>>
		{{$:/core/images/right-arrow}}
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
	</$button>
	<$link to=<<currentTiddler>>>
		<$view tiddler=<<currentTiddler>> field='caption'><$view tiddler=<<currentTiddler>> field='title'/></$view>
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective" text=$MenuType$>
	<$list filter='[tag{!!title}limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
		<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<currentTiddler>>>
			{{$:/core/images/right-arrow}}
			<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
		</$button>
	</$list>
	<$link to=<<currentTiddler>>>
		<$view tiddler=<<currentTiddler>> field='caption'><$view tiddler=<<currentTiddler>> field='title'/></$view>
	</$link>
	<br>
</$reveal>
\end

\define inmysocksMobileMenusEmptyMessage2(MenuName MenuType ListField)
<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
	<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical' text="""$MenuType$""">
		<$list filter='[tag<CurrentTiddler>]'>
			<<inmysocksMobileMenusEmptyMessage2ListItem """$MenuName$""" """$MenuType$""">>
		</$list>
	</$reveal>
	<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical' text="""$MenuType$""">
		<$set name=Filter value="""[prefix[$:/state/Menu/$MenuName$/]has[text]]-[[$:/state/Menu/$MenuName$/current]]""">
			<$set name=TagsFilter value="""[!is[system]]+[tag{$:/state/Menu/$MenuName$/current}]""">
				<$list filter=<<Filter>> emptyMessage=<<inmysocksMobileMenusHierarchicalEmptyMessage1 """$MenuName$""">>>
					<<inmysocksMobileMenusTemplateHierarchicalListMacro1 """$MenuName$""">>
				</$list>
			</$set>
		</$set>
	</$reveal>
</$reveal>
<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
	<$tiddler tiddler={{$:/state/Menu/$MenuName$/current}}>
		<$list filter='[list[!!$ListField$]]'>
			<<inmysocksMobileMenusEmptyMessage2ListItem """$MenuName$""" """$MenuType$""">>
		</$list>
	</$tiddler>
</$reveal>
\end

\define inmysocksMobileMenusTemplateListItemTOCSelectiveIsSpecial(MenuName MenuType ListField)
<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
	<$list filter='[tag<ThisTiddler2>limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
		<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<ThisTiddler2>>>
			{{$:/core/images/right-arrow}}
			<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ThisTiddler2>>/>
		</$button>
	</$list>
</$reveal>
<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
	<$tiddler tiddler={{$:/state/Menu/$MenuName$/current}}>
		<$list filter='[list[!!$ListField$]limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
			<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<ThisTiddler2>>>
				{{$:/core/images/right-arrow}}
				<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ThisTiddler2>>/>
			</$button>
		</$list>
	</$tiddler>
</$reveal>
\end

\define inmysocksMobileMenusTemplateListItem(MenuName MenuType ListField)
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!normal_menu" text=$MenuType$>
	<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<ThisTiddler2>>>
		{{$:/core/images/right-arrow}}<$view tiddler=<<ThisTiddler2>> field='caption'><$view tiddler=<<ThisTiddler2>> field='title'/></$view>
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ThisTiddler2>>/>
	</$button>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents" text=$MenuType$>
	<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<ThisTiddler2>>>
		{{$:/core/images/right-arrow}}
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ThisTiddler2>>/>
	</$button>
	<$link to=<<ThisTiddler2>>>
		<$view tiddler=<<ThisTiddler2>> field='caption'><$view tiddler=<<ThisTiddler2>> field='title'/></$view>
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective" text=$MenuType$>
	<<inmysocksMobileMenusTemplateListItemTOCSelectiveIsSpecial """$MenuName$""" """$MenuType$""" """$ListField$""">>
	<$link to=<<ThisTiddler2>>>
		<$view tiddler=<<ThisTiddler2>> field='caption'><$view tiddler=<<ThisTiddler2>> field='title'/></$view>
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical" text=$MenuType$>
<!--THIS PART HERE NEEDS TO BE DONE -->
</$reveal>
\end

\define inmysocksMobileMenusTemplate(MenuName MenuType ListField)
<$set name=CurrentTiddler value={{$:/state/Menu/$MenuName$/current}}>
	<$list filter='[text<CurrentTiddler>removeprefix[$:/state/Menu/$MenuName$/]]-[[current]]+[limit[1]]' variable=ParentTiddler emptyMessage=<<inmysocksMobileMenusEmptyMessage2 """$MenuName$""" """$MenuType$""" """$ListField$""">>>
		<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical' text="""$MenuType$""">
			<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
				<$list filter='[tag<CurrentTiddler>]' variable=ThisTiddler2>
					<<inmysocksMobileMenusTemplateListItem """$MenuName$""" """$MenuType$""" """$ListField$""">>
				</$list>
			</$reveal>
			<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
				<$tiddler tiddler={{$:/state/Menu/$MenuName$/current}}>
					<$list filter='[list[!!$ListField$]]' variable=ThisTiddler2>
						<<inmysocksMobileMenusTemplateListItem """$MenuName$""" """$MenuType$""" """$ListField$""">>
					</$list>
				</$tiddler>
			</$reveal>
		</$reveal>
		<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical' text="""$MenuType$""">
			<$set name=Filter value="""[prefix[$:/state/Menu/$MenuName$/]has[text]]-[[$:/state/Menu/$MenuName$/current]]""">
				<$set name=TagsFilter value="""[!is[system]]+[tag{$:/state/Menu/$MenuName$/current}]""">
					<$list filter=<<Filter>> emptyMessage=<<inmysocksMobileMenusHierarchicalEmptyMessage1 """$MenuName$""">>>
						<<inmysocksMobileMenusTemplateHierarchicalListMacro1 """$MenuName$""">>
					</$list>
				</$set>
			</$set>
		</$reveal>
	</$list>
</$set>
\end

\define inmysocksMobileMenusTemplateHierarchicalListMacro1(MenuName)
<$list filter='[is[current]removeprefix[$:/state/Menu/$MenuName$/]]' variable=CurrentTag>
<<inmysocksMobileMenusHierarchicalInnerMacro """$MenuName$""">>
</$list>
\end

\define inmysocksMobileMenusHierarchicalInnerMacro(MenuName)
<$set name=TagsFilter value='$(TagsFilter)$+[tag[$(CurrentTag)$]]'>
<$set name=Filter value='$(Filter)$-[[$(currentTiddler)$]]'>
<$list filter=<<Filter>> emptyMessage=<<inmysocksMobileMenusHierarchicalEmptyMessage2 """$MenuName$""">>>
<<inmysocksMobileMenusTemplateHierarchicalListMacro1 """$MenuName$""">>
</$list>
</$set>
</$set>
\end

\define inmysocksMobileMenusHierarchicalEmptyMessage2(MenuName)
<$list filter=<<TagsFilter>>>
	<$list filter='$(TagsFilter)$+[tag[$(currentTiddler)$]]+[limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
		<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<currentTiddler>>>
			{{$:/core/images/right-arrow}}
			<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
		</$button>
	</$list>
	<$link to=<<currentTiddler>>>
		<$view tiddler=<<currentTiddler>> field='caption'><$view tiddler=<<currentTiddler>> field='title'/></$view>
	</$link>
	<br>
</$list>
\end

\define inmysocksMobileMenusHierarchicalEmptyMessage1(MenuName)
<$list filter='[tag{$:/state/Menu/$MenuName$/current}]'>
	<$list filter='[tag{$:/state/Menu/$MenuName$/current}]+[tag<currentTiddler>]+[limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
		<$button class='tc-btn-invisible' set=<<inmysocksMobileMenusMakeState """$MenuName$""">> setTo=<<currentTiddler>>>
			{{$:/core/images/right-arrow}}
			<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
		</$button>
	</$list>
	<$link to=<<currentTiddler>>>
		<$view tiddler=<<currentTiddler>> field='caption'><$view tiddler=<<currentTiddler>> field='title'/></$view>
	</$link>
	<br>
</$list>
\end

\define inmysocksMobileMenusRootListEntry(MenuName MenuType)
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!normal_menu" text=$MenuType$>
	<$button class='tc-btn-invisible' set='$:/state/Menu/$MenuName$/current' setTo={{!!title}}>
		{{$:/core/images/right-arrow}}<$view field='caption'><$view field='title'/></$view>
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
	</$button>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents" text=$MenuType$>
	<$button class='tc-btn-invisible' set='$:/state/Menu/$MenuName$/current' setTo={{!!title}}>
		{{$:/core/images/right-arrow}}
		<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
	</$button>
	<$link>
		<$view field='caption'><$view field='title'/></$view>
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective" text=$MenuType$>
	<$list filter='[tag{!!title}limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
		<$button class='tc-btn-invisible' set='$:/state/Menu/$MenuName$/current' setTo={{!!title}}>
			{{$:/core/images/right-arrow}}
			<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
		</$button>
	</$list>
	<$link>
		<$view field='caption'><$view field='title'/></$view>
	</$link>
	<br>
</$reveal>
<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical" text=$MenuType$>
	<$list filter='[tag{!!title}limit[1]]' variable=dummy emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
		<$button class='tc-btn-invisible' set='$:/state/Menu/$MenuName$/current' setTo={{!!title}}>
			{{$:/core/images/right-arrow}}
			<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value={{!!title}}/>
		</$button>
	</$list>
	<$link>
		<$view field='caption'><$view field='title'/></$view>
	</$link>
	<br>
</$reveal>
\end

\define MobileMenu(RootTag:"RootTag" MenuName:Menu MenuType:Menu MenuTitle:"" ShowSubtitle:no ShowBody:no ListField:"")
<$reveal type=nomatch state="""$:/macros/inmysocks/MobileMenu!!include_title""" text="""$MenuTitle$""">
	$MenuTitle$
</$reveal>

<$reveal type='match' state='$:/state/Menu/$MenuName$/current' text=''>
	<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
		<$list filter='[tag[$RootTag$]]'>
			<<inmysocksMobileMenusRootListEntry """$MenuName$""" """$MenuType$""">>
		</$list>
	</$reveal>
	<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
		<$list filter={{!!$ListField$}}>
			<<inmysocksMobileMenusRootListEntry """$MenuName$""" """$MenuType$""">>
		</$list>
	</$reveal>
</$reveal>

<$reveal type='nomatch' state='$:/state/Menu/$MenuName$/current' text=''>
	<$list filter='[is[system]prefix[$:/state/Menu/$MenuName$/]has[text]]-[[$:/state/Menu/$MenuName$/current]]+[limit[1]]' emptyMessage=<<inmysocksMobileMenusEmptyMessage """$MenuName$""" """$MenuType$""">>> </$list>
	<$list filter='[text{$:/state/Menu/$MenuName$/current}removeprefix[$:/state/Menu/$MenuName$/]]-[[current]]+[limit[1]]' variable=ParentTiddler>
		<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!normal_menu" text=$MenuType$>
			<$button class='tc-btn-invisible' style='text-align:left'>
				{{$:/core/images/chevron-left}}
				''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler={{$:/state/Menu/$MenuName$/current}} field=title/></$view>''
				<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ParentTiddler>>/>
				<$action-setfield $tiddler=<<inmysocksMobileMenusMakeParentState """$MenuName$""">> $value=''/>
			</$button>
			<br>
		</$reveal>
		<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents" text=$MenuType$>
			<$button class='tc-btn-invisible'>
				{{$:/core/images/chevron-left}}
				<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ParentTiddler>>/>
				<$action-setfield $tiddler=<<inmysocksMobileMenusMakeParentState """$MenuName$""">> $value=''/>
			</$button>
			<$link to={{$:/state/Menu/$MenuName$/current}}>
				''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler={{$:/state/Menu/$MenuName$/current}} field=title/></$view>''
			</$link>
			<br>
		</$reveal>
		<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective" text=$MenuType$>
			<$button class='tc-btn-invisible'>
				{{$:/core/images/chevron-left}}
				<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ParentTiddler>>/>
				<$action-setfield $tiddler=<<inmysocksMobileMenusMakeParentState """$MenuName$""">> $value=''/>
			</$button>
			<$link to={{$:/state/Menu/$MenuName$/current}}>
				''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler={{$:/state/Menu/$MenuName$/current}} field=title/></$view>''
			</$link>
			<br>
		</$reveal>
		<$reveal type='match' state="$:/macros/inmysocks/MobileMenu!!table_of_contents_selective_hierarchical" text=$MenuType$>
			<$button class='tc-btn-invisible'>
				{{$:/core/images/chevron-left}}
				<$action-setfield $tiddler='$:/state/Menu/$MenuName$/current' $value=<<ParentTiddler>>/>
				<$action-setfield $tiddler=<<inmysocksMobileMenusMakeParentState """$MenuName$""">> $value=''/>
			</$button>
			<$link to={{$:/state/Menu/$MenuName$/current}}>
				''<$view tiddler={{$:/state/Menu/$MenuName$/current}} field=caption><$view tiddler={{$:/state/Menu/$MenuName$/current}} field=title/></$view>''
			</$link>
			<br>
		</$reveal>
	</$list>

	<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!include_subtitle' text=$ShowSubtitle$>
		<$transclude tiddler={{$:/state/Menu/$MenuName$/current}} field='subtitle' mode=block/>
	</$reveal>

	<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
		<$list filter='[tag{$:/state/Menu/$MenuName$/current}limit[1]]' variable=ThisTiddler>
			<<inmysocksMobileMenusTemplate """$MenuName$""" """$MenuType$""" """$ListField$""">>
		</$list>
	</$reveal>
	<$reveal type='nomatch' state='$:/macros/inmysocks/MobileMenu!!empty_field' text="""$ListField$""">
		<$tiddler tiddler={{$:/state/Menu/$MenuName$/current}}>
			<$list filter='[list[!!$ListField$]limit[1]]' variable=ThisTiddler>
				<<inmysocksMobileMenusTemplate """$MenuName$""" """$MenuType$""" """$ListField$""">>
			</$list>
		</$tiddler>
	</$reveal>

	<$reveal type='match' state='$:/macros/inmysocks/MobileMenu!!include_body' text=$ShowBody$>
		<$transclude tiddler={{$:/state/Menu/$MenuName$/current}} mode=block/>
	</$reveal>
</$reveal>
\end
\define pdf(url)
<iframe width="10%" height="80" src="https://filedn.com/lEFtF675HQD86Dw6hctjb9S$url$" frameborder="0" allowfullscreen/>
\end
\define imageAtPath(i, t, p, c, w)
[img width="$w$" class="$c$" [$t$|$p$$i$]]
\end

\define ximg(image, tooltip:"image", path:"$:/macros/ximg/path", class, width)
<$macrocall $name="imageAtPath" p={{$path$}} i="$image$" t="$tooltip$" c="ximg $class$" w="$width$"/>
\end
https://filedn.com/lEFtF675HQD86Dw6hctjb9S
textarea, input, button {
color: <<colour foreground>>;
background-color: <<colour background>>;
}
<link href='https://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Consolas' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Vollkorn' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Bitter' rel='stylesheet'>
textarea.tc-edit-texteditor, code, kbd, pre, samp {
font-family: Consolas, Inconsolata, monospace, serif;
font-size: 1.15em;
}

.tc-sidebar-scrollable{visibility:visible;}
.tc-page-controls {display:all;}
.tc-sidebar-lists{visibility:visible;}
.tc-search{visibility:visible;}
.tc-search-results{visibility:visible;}
.public {visibility:visible;}

.tc-wf-table-of-contents ol ol {
	padding-left: 0.7em;
}

.tc-wf-table-of-contents ol {
	padding-left: 0em;
}

body {font-family: "Bitter", "Times"; font-size: 15px; vertical-align: baseline ; line-height: 20px ;}

.customTable tr td:nth-child(1){
	width:48px;
}

.weektabel tr td:nth-child(1){
	width:20px;
}

/**
 * Eigen markeringsroutines 
 */

mgeel {
font-size: inherit;
vertical-align: baseline ;
line-height: 0 ;
background-color: yellow;
color: black;
top: 0;
}

tgeel { font-size: inherit; vertical-align: baseline ; line-height: 0 ; color: yellow; top: 0; }

mgroen {
font-size: inherit;
vertical-align: baseline ;
line-height: 0 ;
background-color: #8be9fd;
color: black;
top: 0;
}

mrood {
font-size: inherit;
vertical-align: baseline ;
line-height: 0 ;
background-color: #ff9999;
color: black;
top: 0;
}

geel {
    background-color: yellow;
    color: black;
}

rood {
    background-color: red;
    color: white;
}

groen {
    background-color: green;
    color: white;
}

blauw {
    background-color: blue;
    color: white;
}

blgr { 
   color: #8be9fd;
}

zwart {
    background-color: black;
    color: white;
}

wit {color: white;}

trood {
    color: red;
}

tblauw {
    color: #688bc4;
}

tgroen {
    color: #4bf542;
}

turqoise {
    color: #8be9fd;
}

.tc-titlebar {font-size: 1.5em; line-height: 10px;}

.borderless,
.borderless table,
.borderless td,
.borderless tr,
.borderless th,
.borderless tbody
    { border:0 !important; }

.indent
{ display:block;margin:0;padding:0;border:0;margin-left:
2em; }

$:/palettes/Vanilla 1
background: #282a36
untagged-background: #6272a4
foreground: #f8f8f2
tiddler-border: #44475a
page-background: #282a36
primary: #8be9fd
tag-background: #bd93f9
muted-foreground: rgba(255,255,255,0.5)
alert-background: <<colour tag-background>>
alert-border: <<colour tag-background>>
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour tag-background>>
button-foreground: <<colour foreground>>
button-border: <<colour tag-background>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: <<colour tag-background>>
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: <<colour tag-background>>
external-link-foreground: <<color primary>>
message-background: <<colour tag-background>>
message-border: <<colour tag-background>>
message-foreground: <<colour foreground>>
modal-backdrop: <<colour page-background>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour background>>
modal-header-border: <<colour muted-foreground>>
notification-background: <<colour tag-background>>
notification-border: <<colour tag-background>>
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: <<colour primary>>
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: transparent
sidebar-foreground: <<colour foreground>>
sidebar-muted-foreground-hover: <<colour primary>>
sidebar-muted-foreground: <<colour muted-foreground>>
sidebar-tab-background-selected: <<colour page-background>>
sidebar-tab-background: transparent
sidebar-tab-border-selected: <<colour tiddler-border>>
sidebar-tab-border: <<colour tiddler-border>>
sidebar-tab-divider: <<colour tiddler-border>>
sidebar-tab-foreground-selected: <<colour primary>>
sidebar-tab-foreground: <<colour foreground>>
sidebar-tiddler-link-foreground-hover: <<colour primary>>
sidebar-tiddler-link-foreground: <<colour primary>>
site-title-foreground: <<colour foreground>>
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour background>>
tab-background: transparent
tab-border-selected: <<colour tiddler-border>>
tab-border: <<colour tiddler-border>>
tab-divider: <<colour tiddler-border>>
tab-foreground-selected: <<colour primary>>
tab-foreground: <<colour muted-foreground>>
table-border: <<colour page-background>>
table-footer-background: rgba(0, 0, 0, 0.1)
table-header-background: rgba(0, 0, 0, 0.2)
tag-foreground: <<colour foreground>>
tiddler-background: <<colour background>>
tiddler-controls-foreground-hover: inherit
tiddler-controls-foreground-selected: <<colour foreground>>
tiddler-controls-foreground: <<colour forground>>
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: rgba(255,255,255,0.1)
tiddler-editor-fields-even: <<colour tiddler-border>>
tiddler-editor-fields-odd: <<colour page-background>>
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
very-muted-foreground: rgba(255,255,255,0.2)
{
    "tiddlers": {
        "$:/plugins/bimlas/kin-filter/README/concept.svg": {
            "title": "$:/plugins/bimlas/kin-filter/README/concept.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" color-interpolation=\"auto\" height=\"492\" width=\"576\" stroke-linecap=\"square\" stroke=\"#000000\" font-family=\"Dialog\" font-size=\"12\" stroke-miterlimit=\"10\"><style><![CDATA[.C{stroke:none}.E{stroke-miterlimit:1.45000005}.F{fill:none}.I{stroke-linecap:butt}.G{fill:#f1c122}.L{font-size:26.667px}.M{fill:#4f4f4f}.D{fill:#d84100}.H{fill:#006eff}]]></style><defs><clipPath id=\"A\"><path d=\"M-15-15h630v745H-15z\"/></clipPath></defs><g clip-path=\"url(#A)\" shape-rendering=\"geometricPrecision\" text-rendering=\"geometricPrecision\"><rect class=\"C D\" x=\"15.917\" height=\"40\" rx=\"4\" width=\"40\" y=\"161.955\"/><rect class=\"E F\" x=\"15.917\" height=\"40\" rx=\"4\" width=\"40\" y=\"161.955\"/><rect class=\"C D\" height=\"40\" rx=\"4\" width=\"80\" y=\"191.955\" x=\"95.917\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"80\" y=\"191.955\" x=\"95.917\"/><rect class=\"C D\" height=\"40\" rx=\"4\" width=\"40\" y=\"191.526\" x=\"204.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"191.526\" x=\"204.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"371.526\" x=\"284.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"371.526\" x=\"284.242\"/><rect class=\"C\" height=\"40\" rx=\"4\" width=\"40\" y=\"251.526\" x=\"284.242\" fill=\"#008b00\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"251.526\" x=\"284.242\"/><rect class=\"C H\" height=\"40\" rx=\"4\" width=\"80\" y=\"281.526\" x=\"384.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"80\" y=\"281.526\" x=\"384.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"131.955\" x=\"95.917\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"131.955\" x=\"95.917\"/><rect class=\"C H\" height=\"40\" rx=\"4\" width=\"40\" y=\"221.526\" x=\"384.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"221.526\" x=\"384.242\"/><rect class=\"C H\" height=\"40\" rx=\"4\" width=\"40\" y=\"221.526\" x=\"504.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"221.526\" x=\"504.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"101.526\" x=\"284.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"101.526\" x=\"284.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"131.526\" x=\"384.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"131.526\" x=\"384.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"60\" y=\"71.526\" x=\"384.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"60\" y=\"71.526\" x=\"384.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"11.526\" x=\"284.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"11.526\" x=\"284.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"401.526\" x=\"384.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"401.526\" x=\"384.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"161.526\" x=\"504.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"161.526\" x=\"504.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"40\" y=\"101.526\" x=\"504.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"40\" y=\"101.526\" x=\"504.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"80\" y=\"341.526\" x=\"384.242\"/><rect class=\"E F\" height=\"40\" rx=\"4\" width=\"80\" y=\"341.526\" x=\"384.242\"/><rect class=\"C G\" height=\"40\" rx=\"4\" width=\"60\" y=\"11.526\" x=\"384.242\"/><g class=\"E F\"><rect height=\"40\" rx=\"4\" width=\"60\" y=\"11.526\" x=\"384.242\"/><g class=\"I\"><path d=\"M64.54 181.955h12.03v30h19.35\"/></g></g><path class=\"C\" d=\"M55.887 181.955l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M183.636 211.526h20.33\" stroke-width=\".731\"/><path class=\"C\" d=\"M175.897 211.525l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M252.69 211.526h12.03v180h19.984\"/><path class=\"C\" d=\"M244.212 211.526l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M252.69 211.526h12.03v60h19.984\"/><path class=\"C\" d=\"M324.25 271.526l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M332.703 271.526h32.018v30h20\"/><path d=\"M324.25 391.66l12-5-3 5 3 5z\" class=\"C\"/><path class=\"E F I\" d=\"M64.887 181.955H76.57v-30h19.4m236.723 119.57h32.018v-30h19.984m48.025.001h72.02\"/><path class=\"C\" d=\"M423.72 241.526l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M252.69 211.526h12.03v-90h19.984\"/><path class=\"C\" d=\"M323.728 121.526l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M332.703 121.526h32.018v30h19.984\"/><path class=\"E F I\" d=\"M332.703 121.526h32.018v-30h20m-132.03 120h12.03v-180h19.984\"/><path class=\"C\" d=\"M323.728 31.526l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M332.703 391.526h32.018v30h19.984m48.02-270h51.996v30h19.984\"/><path class=\"E F I\" d=\"M432.725 151.526h51.996v-30h19.984\"/><path class=\"C\" d=\"M423.725 151.526l12-5-3 5 3 5z\"/><path class=\"E F I\" d=\"M332.703 391.526h32.018v-30h20m-51.993-330h51.98\"/></g><g class=\"C\" letter-spacing=\"0\" word-spacing=\"0\" font-family=\"sans-serif\"><text class=\"L\" y=\"481.371\" x=\"259.32\" xml:space=\"preserve\"><tspan class=\"M\" y=\"481.371\" x=\"259.32\">DEPTH</tspan></text><g font-size=\"40\"><text y=\"481.371\" x=\"395.524\" xml:space=\"preserve\"><tspan class=\"L M\" y=\"481.371\" x=\"395.524\">1</tspan></text><text y=\"481.547\" x=\"516.117\" xml:space=\"preserve\"><tspan class=\"L M\" y=\"481.547\" x=\"516.117\">2</tspan></text><text xml:space=\"preserve\" x=\"215.524\" y=\"481.371\"><tspan class=\"L M\" x=\"215.524\" y=\"481.371\">1</tspan></text><text xml:space=\"preserve\" x=\"107.792\" y=\"481.547\"><tspan class=\"L M\" x=\"107.792\" y=\"481.547\">2</tspan></text><text y=\"481.358\" x=\"27.486\" xml:space=\"preserve\"><tspan class=\"L M\" y=\"481.358\" x=\"27.486\">3</tspan></text><text y=\"325.27\" x=\"268.643\" xml:space=\"preserve\"><tspan class=\"L\" y=\"325.27\" x=\"268.643\" fill=\"#008b00\">BASE</tspan></text><text xml:space=\"preserve\" x=\"506.384\" y=\"325.27\"><tspan class=\"L H\" x=\"506.384\" y=\"325.27\">TO</tspan></text><text y=\"325.27\" x=\"96.958\" xml:space=\"preserve\"><tspan class=\"L D\" y=\"325.27\" x=\"96.958\">FROM</tspan></text></g></g></svg>",
            "type": "image/svg+xml",
            "tags": "picture"
        },
        "A": {
            "title": "A",
            "tags": "kin-example-top"
        },
        "B": {
            "title": "B",
            "tags": "A"
        },
        "C": {
            "title": "C",
            "tags": "B",
            "list": "D"
        },
        "D": {
            "title": "D",
            "tags": "C",
            "list": "E"
        },
        "E": {
            "title": "E",
            "tags": "C",
            "list": "G"
        },
        "F": {
            "title": "F",
            "tags": "B"
        },
        "G": {
            "title": "G",
            "tags": "F"
        },
        "H": {
            "title": "H",
            "tags": "F"
        },
        "$:/plugins/bimlas/kin-filter/README/examples": {
            "title": "$:/plugins/bimlas/kin-filter/README/examples",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define item-class(highlightfilter) <$list filter=\"[[kin-example-top]kin::to[]subfilter<__highlightfilter__>is[current]first[]]\">highlighted-toc-item</$list>\n\n\\define kin-example-with-toc(n,eg,ie)\n  <div class=\"doc-example\">\n    `$eg$`\n    <dd>&rarr; $ie$</dd>\n    <$list filter=\"[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]\" variable=\".state\">\n      <$reveal state=<<.state>> type=\"nomatch\" text=\"show\">\n        <dl>\n          <dd><$button set=<<.state>> setTo=\"show\">Try it</$button></dd>\n        </dl>\n      </$reveal>\n      <$reveal state=<<.state>> type=\"match\" text=\"show\">\n        <dl>\n          <dd><$button set=<<.state>> setTo=\"\">Hide</$button></dd>\n        </dl>\n        <blockquote class=\"doc-example-result\">\n          <ul><$list filter=\"[[kin-example-top]kin::to[]subfilter<__eg__>sort[]]\" emptyMessage=\"(empty)\">\n            <li><$link><$view field=\"title\"/></$link></li>\n          </$list></ul>\n          Results highlighted in the tree:\n\n          <<kin-toc \"$eg$\">>\n        </blockquote>\n      </$reveal>\n    </$list>\n  </div>\n\\end\n\n\\define each-level(highlightfilter)\n  <li>\n    <$wikify name=\"transcluded-item-class\" text=\"\"\"<$macrocall $name=\"item-class\" highlightfilter=<<__highlightfilter__>>/>\"\"\">\n      <$link class=<<transcluded-item-class>> ><<currentTiddler>></$link>\n    </$wikify>\n    <ul>\n      <$list filter=\"[[kin-example-top]kin::to[]tag<currentTiddler>]\">\n        <$macrocall $name=\"each-level\" highlightfilter=<<__highlightfilter__>>/>\n      </$list>\n    </ul>\n  </li>\n\\end\n\n\\define kin-toc(highlightfilter)\n  <$tiddler tiddler=\"kin-example-top\">\n    <ul>\n      <$macrocall $name=\"each-level\" highlightfilter=<<__highlightfilter__>>/>\n    </ul>\n  </$tiddler>\n\\end\n\n<style>\n  .highlighted-toc-item {\n    color: red !important;\n  }\n</style>\n\nExample tree (to really understand, look at the tiddlers):\n\n<<kin-toc \"!is[current]\">>\n\n''The tree'' below the examples only helps in understanding the filter, it ''is not part of the output''.\n\n''Feel free to edit [[this tiddler|$:/plugins/bimlas/kin-filter/README/examples]] to test your own filter expressions as well!'' If you want to undo the changes you made, just delete the tiddler, it will restore itself to its initial state.\n\n<<kin-example-with-toc 1 \"[kin[C]]\" \"input titles which are family members of the parameter title\">>\n<<kin-example-with-toc 2 \"[kin[C]kin[F]]\" \"common family members of each of the specified titles (intersection)\">>\n<<kin-example-with-toc 3 \"[kin[C]!kin[F]]\" \"difference of families of the specified titles (complement)\">>\n<<kin-example-with-toc 4 \"[[C]] [[F]] +[kin[]]\" \"collected titles which are family members of any of the input tiddlers (union)\">>\n<<kin-example-with-toc 5 \"[kin::to[B]]\" \"successors of the given tiddler\">>\n<<kin-example-with-toc 6 \"[kin::from[E]kin::to[B]]\" \"subset of the family tree\">>\n<<kin-example-with-toc 7 \"[kin::from:2[E]]\" \"ancestors of the given tiddler until the given depth\">>\n<<kin-example-with-toc 8 \"[kin:tags:from[G]]\" \"ancestors of tiddler based on `tags` field (`tags` points to parents)\">>\n<<kin-example-with-toc 9 \"[kin:list:to[G]]\" \"ancestors of tiddler based on `list` field (`list` point to children)\">>\n"
        },
        "$:/plugins/bimlas/kin-filter/README/syntax": {
            "title": "$:/plugins/bimlas/kin-filter/README/syntax",
            "type": "text/vnd.tiddlywiki",
            "text": "! Kin filter operator\n\n* https://gitlab.com/bimlas/tw5-kin-filter (official repository)\n* https://github.com/bimlas/tw5-kin-filter (mirror, please give a star if you like it)\n\nThe purpose of the ''kin'' operator with examples:\n\n* Finds related tags, related tiddlers in any depth\n* Finds out where base tiddler originates and what other elements originate from it\n* Finds the ancestors and successors of a family member\n* Finds the \"leaves\" of the branch of the base tiddler in a tree-like structure (where the base tiddler is a leaf)\n* Finds the super- and subsets / groups of a mathematical set (where the base tiddler is a set)\n\n[img[$:/plugins/bimlas/kin-filter/README/concept.svg]]\n\n|''input''|a [[selection of titles|https://tiddlywiki.com/#Title%20Selection]]|\n|''suffix''|the ''kin'' operator uses a rich suffix, see below for details|\n|''parameter''|''B'' base tiddler title or nothing|\n|''output''|''with parameter B''<br>&raquo; those input titles which are ''kin with B'' <br>''without B''<br>&raquo; ''all'' tiddler titles which are ''kin with input titles'' (treat input titles as base tiddlers)|\n|''`!` output''|''with parameter B''<br>&raquo; those input titles which are ''//NOT// kin with B''<br>''without parameter B''<br>&raquo; ignored|\n\nThe ''kin'' operator uses an extended syntax that permits multiple fields and flags to be passed:\n\n```\n[kin:<field>:<direction>:<depth>[<operand>]]\n```\n\n* ''field'': name of the [[field|https://tiddlywiki.com/#TiddlerFields]] which connecting tiddlers (assumed to be a [[title list|https://tiddlywiki.com/#Title%20List]], defaulting to `tags`)\n* ''direction'':  collect the tiddler titles in this direction relative to the base tiddler\n** ''from'': collect kins of base tiddler pointing from it (including the base tiddler title itself)\n** ''to'': collect kins of base tiddler pointing to it (including the base tiddler title itself)\n** ''with'': (the default) union of the aboves\n* ''depth'': maximum depth of the collected labels in the tree structure relative to the base tiddler (a positive number, not limited by default)\n* ''operand'': filter operand, the base tiddler\n\n''kin'' is a [[modifier|https://tiddlywiki.com/#Selection%20Constructors]], but without ''B'' parameter is a [[constructor|https://tiddlywiki.com/#Selection%20Constructors]].\n\n!! Installation instructions\n\nTo add the plugin to your own ~TiddlyWiki5, just drag this link to the browser window:\n\n$:/plugins/bimlas/kin-filter\n\nFor other installation options see the repositories above.\n\n//Select the next tab to continue.//\n"
        },
        "$:/plugins/bimlas/kin-filter/kin.js": {
            "title": "$:/plugins/bimlas/kin-filter/kin.js",
            "text": "/*\\\ntitle: $:/plugins/bimlas/kin-filter/kin.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFinds out where a tiddler originates from and what other tiddlers originate from it\n\n\\*/\n(function() {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: true */\n\t\"use strict\";\n\n\tfunction collectTitlesRecursively(baseTiddler,baseTitle,options) {\n\t\tvar cacheName = \"kin-filter-\" + baseTitle + \"-\" + options.fieldName + \"-\",\n\t\t\ttitlesPointingFromBase = {},\n\t\t\ttitlesPointingToBase = {},\n\t\t\tresultsFrom = [],\n\t\t\tresultsTo = [];\n\n\t\t/* Copy of findListingsOfTiddler, but it's searching in shadows as well. */\n\t\tfunction findListingsOfTiddler(targetTitle,fieldName) {\n\t\t\tfieldName = fieldName || \"list\";\n\t\t\tvar titles = [];\n\t\t\toptions.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\t\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\t\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\t\t\ttitles.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn titles;\n\t\t}\n\n\t\tfunction addToResultsIfNotFoundAlready(alreadyFound,title,depth) {\n\t\t\tif(title in alreadyFound) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\talreadyFound[title] = depth;\n\t\t\treturn true\n\t\t}\n\n\t\tfunction collectTitlesPointingFrom(tiddler,title,currentDepth) {\n\t\t\tif(addToResultsIfNotFoundAlready(titlesPointingFromBase,title,currentDepth)) {\n\t\t\t\tcurrentDepth += 1;\n\t\t\t\tif(tiddler) {\n\t\t\t\t\t$tw.utils.each(tiddler.getFieldList(options.fieldName),function(targetTitle) {\n\t\t\t\t\t\tcollectTitlesPointingFrom(options.wiki.getTiddler(targetTitle),targetTitle,currentDepth);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction collectTitlesPointingTo(title,currentDepth) {\n\t\t\tif(addToResultsIfNotFoundAlready(titlesPointingToBase,title,currentDepth)) {\n\t\t\t\tcurrentDepth += 1;\n\t\t\t\t$tw.utils.each(findListingsOfTiddler(title,options.fieldName),function(targetTitle) {\n\t\t\t\t\tcollectTitlesPointingTo(targetTitle,currentDepth);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction getObjectKeysByExpression(object,callback) {\n\t\t\tvar key,\n\t\t\t\tresults = [];\n\t\t\tfor (key in object) {\n\t\t\t\tif (object.hasOwnProperty(key) && callback(object[key])) {\n\t\t\t\t\tresults.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn results;\n\t\t}\n\n\t\tfunction getResultsInGivenDepth(cachedData) {\n\t\t\tif(options.depth) {\n\t\t\t\treturn getObjectKeysByExpression(cachedData,function(value) {\n\t\t\t\t\treturn value <= options.depth;\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\treturn Object.keys(cachedData);\n\t\t\t}\n\t\t}\n\n\t\tif((options.direction === \"from\") || (options.direction === \"with\")) {\n\t\t\tresultsFrom = $tw.wiki.getGlobalCache(cacheName + \"from\",function() {\n\t\t\t\tcollectTitlesPointingFrom(baseTiddler,baseTitle,0);\n\t\t\t\treturn titlesPointingFromBase;\n\t\t\t});\n\t\t\tresultsFrom = getResultsInGivenDepth(resultsFrom);\n\t\t}\n\t\tif((options.direction === \"to\") || (options.direction === \"with\")) {\n\t\t\tresultsTo = $tw.wiki.getGlobalCache(cacheName + \"to\",function() {\n\t\t\t\tcollectTitlesPointingTo(baseTitle,0);\n\t\t\t\treturn titlesPointingToBase;\n\t\t\t});\n\t\t\tresultsTo = getResultsInGivenDepth(resultsTo);\n\t\t}\n\t\treturn $tw.utils.pushTop(resultsFrom,resultsTo);\n\t}\n\n\t/*\n\tExport our filter function\n\t*/\n\texports.kin = function(source,operator,options) {\n\t\tvar results = [],\n\t\t\tneedsExclusion = operator.prefix === \"!\",\n\t\t\tsuffixes = operator.suffixes || [],\n\t\t\tfilterOptions = {\n\t\t\t\twiki: options.wiki,\n\t\t\t\tfieldName: ((suffixes[0] || [])[0] || \"tags\").toLowerCase(),\n\t\t\t\tdirection: ((suffixes[1] || [])[0] || \"with\").toLowerCase(),\n\t\t\t\tdepth: Number((suffixes[2] || [])[0]),\n\t\t\t};\n\n\t\tif((operator.operand === \"\") && (needsExclusion)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif(operator.operand !== \"\") {\n\t\t\tvar baseTitle = operator.operand,\n\t\t\t\tbaseTiddler = options.wiki.getTiddler(baseTitle),\n\t\t\t\tfoundTitles = collectTitlesRecursively(baseTiddler,baseTitle,filterOptions);\n\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(needsExclusion === (foundTitles.indexOf(title) === -1)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tresults = $tw.utils.pushTop(results,collectTitlesRecursively(tiddler,title,filterOptions));\n\t\t\t});\n\t\t}\n\n\t\treturn results;\n\t}\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        }
    }
}

{
    "tiddlers": {
        "$:/plugins/can/quick/arrownote-adder": {
            "title": "$:/plugins/can/quick/arrownote-adder",
            "text": "<$set name=\"visible-state\" value=\"<<qualify $:/state/can/quick/visibility/ArrowNoteAdder>>\">\n<$reveal type=\"nomatch\" stateTitle=<<visible-state>> text=\"hide\" default=\"show\">\n<<arrownote>>\n</$reveal>\n</$set>"
        },
        "$:/plugins/can/quick/arrownote-button": {
            "title": "$:/plugins/can/quick/arrownote-button",
            "tags": "",
            "text": "\\define visible-state() $:/state/can/quick/visibility/ArrowNoteAdder\n\n<$button class=\"tc-btn-invisible\">\n<$reveal type=\"nomatch\" stateTitle=<<visible-state>> text=\"hide\" default=\"show\">\n<$action-setfield $tiddler=<<visible-state>> $value=\"hide\"/>\n{{$:/plugins/can/quick/quickadd-toolbar-btn-dark.svg}}\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<visible-state>> text=\"hide\" default=\"show\">\n<$action-setfield $tiddler=<<visible-state>> $value=\"show\"/>\n{{$:/plugins/can/quick/quickadd-toolbar-btn-light.svg}}\n</$reveal>\n</$button>"
        },
        "$:/plugins/can/quick/arrownote-sidebar": {
            "title": "$:/plugins/can/quick/arrownote-sidebar",
            "created": "20200707225108697",
            "tags": "$:/tags/SideBar",
            "caption": "Quick",
            "list-before": "$:/core/ui/SideBar/Tools",
            "text": "<div style=\"width: 20em;\">\n<<arrownote>>\n</div>\n"
        },
        "$:/plugins/can/quick/arrownote-top-toggle-button": {
            "title": "$:/plugins/can/quick/arrownote-top-toggle-button",
            "tags": "$:/tags/PageControls",
            "text": "\n\n<$list filter=\"[[$:/plugins/can/quick/arrownote-top]contains:tags[$:/tags/AboveStory]]\">\n<$button class=\"tc-btn-invisible\" actions=\"\"\"<$action-listops $tiddler=\"$:/plugins/can/quick/arrownote-top\" $tags=\"-$:/tags/AboveStory\"/>\"\"\" tooltip=\"Hide quick adder above story\">\n{{$:/plugins/can/quick/quickadd-toolbar-btn-dark.svg}}\n</$button>\n</$list>\n\n<$list filter=\"[[$:/plugins/can/quick/arrownote-top]!contains:tags[$:/tags/AboveStory]]\">\n<$button class=\"tc-btn-invisible\" actions=\"\"\"<$action-listops $tiddler=\"$:/plugins/can/quick/arrownote-top\" $tags=\"+$:/tags/AboveStory\"/>\"\"\" tooltip=\"Show quick adder above story\">\n{{$:/plugins/can/quick/quickadd-toolbar-btn-light.svg}}\n</$button>\n</$list>\n"
        },
        "$:/plugins/can/quick/arrownote-top": {
            "title": "$:/plugins/can/quick/arrownote-top",
            "tags": "$:/tags/AboveStory",
            "text": "<div class=\"arrownote-top-container\">\n{{$:/plugins/can/quick/arrownote-adder}}\n</div>\n"
        },
        "$:/plugins/can/quick/documentation": {
            "title": "$:/plugins/can/quick/documentation",
            "caption": "documentation",
            "text": "\n!!Accessing the UI\n\nThe page control button {{$:/plugins/can/quick/quickadd-toolbar-btn-light.svg}} or {{$:/plugins/can/quick/quickadd-toolbar-btn-dark.svg}} toggles visibility of a tiddler, pinned at the top of the Story River, from which to (repeatedly, if desired) create quick tiddlers with a minimum of interaction and mental overhead. It's up to the user to decide how to organize or search for this information later! (Although tiddlers generated through this interface are tagged `quickadd` for easy location.) To remove this button from the page control toolbar, edit the tiddler [[$:/plugins/can/quick/arrownote-top-toggle-button]] to remove the <<tag $:/tags/PageControls>> tag.\n\nThe ''Quick'' sidebar tab also contains the ''quick'' interface. To remove this tab, edit [[$:/plugins/can/quick/arrownote-sidebar]] to remove the tag <<tag $:/tags/SideBar>>.\n\n!!Basic usage\n\nType in the text field and hit CTRL-ENTER, or the {{$:/plugins/can/quick/fastarrow-circle.svg}}\n button, to create a new tiddler. ESCAPE, or the {{$:/plugins/can/quick/escape.svg}} button, cancels the input.\n\nThere is also a field provided in case the user wants to add a title at creation time. ESCAPE here resets only the title; CTRL-ENTER submits the tiddler.\n\nThe new tiddler does //not// get inserted into the Story River.\n\nTiddlers created by this plugin are given a title which is their `created` field expressed in `[UTC]YYYY0MM0DD0hh0mm0ss0XXX` format, if the user does not specify a title.\n\n!!''quickadd'' macro\n\nMost of the work is done by the ''quickadd'' macro.\n\n!!!Parameters\n\n;tags\n:A list of tags to apply to the generated tiddler. Defaults to empty. The convenience macro ''arrownote'' tags tiddlers with the tag <<tag quickadd>>.\n\n;focus\n:Indicates whether the text field of the quickadd interface should take focus when opened. Default: `\"true\"`\n\n;omniparent\n:Sets a field called `omniparent` on the generated tiddler. Used by the Omni plugin.\n\n;buttonstyle\n:Sets a class on the tiddler submission button. `big` makes the button extra large. Defaults to `small` in the general-purpose ''quickadd'' macro, but the convenience macro ''arrownote'' specifies `big`.\n\n;openstatetid\n:Optional parameter used to specify a tiddler in which to store the `endstate` parameter.\n\n;endstate\n:Value assigned to a field called `quickadd-addtoggle` on the tiddler //containing// the macro call, when submitting or cancelling from the quickadd interface. This can be used with a ''reveal'' widget in the containing tiddler to determine whether the quickadd interface stays open or closes after use. Defaults to `\"open\"`, so that multiple tiddlers can be generated with the fewest UI interactions. This field could conceivably be used for other purposes.\n\n;position\n:A parameter that only matters when ''quickadd'' is used by the Omni plugin. It determines where in an omnibus tiddler's `list` field to insert a newly-added tiddler.\n\n;layout\n:Possibilities: `fullui`, `slimui`, and `subui`, which are the names of macros that give variations on buttons, fields and styling. \n\n\n!! Convenience macros\n\nThe ''arrownote'' macro simply calls the ''quickadd'' macro with parameters `tags=\"quickadd\" buttonstyle=\"big\"`, and is used in the plugin's provided interface tiddler, $:/plugins/can/quick/arrownote-adder. ''arrownote'' takes an optional ''layout'' parameter to pass to ''quickadd''.\n\nThe ''quicksub'' macro calls ''quickadd'', supplementing whatever tags are provided in parameters with the title of the current tiddler. It takes the same parameters as ''quickadd''. \n\n!! ''omnilabel'' macro\n\nThis plugin provides a macro, called ''omnilabel'', that generates primitive labels using a snippet of the text of tiddlers that don't have intentional titles (i.e. ones whose titles are timestamps matching their ''created'' time). This plugin overrides the core ''timeline-title'' macro (defined in $:/core/macros/timeline) to use ''omnilabel'' instead of the tiddler's title in the timeline macro -- which is used by the \"Recent\" sidebar tab. The ''omnilabel'' macro has its flaws; to return to the stock ~TiddlyWiki timeline title display, remove the tag <<tag $:/tags/Macro>> from the tiddler [[$:/plugins/can/quick/timeline-tweak]].\n"
        },
        "$:/plugins/can/quick/checkmark.svg": {
            "title": "$:/plugins/can/quick/checkmark.svg",
            "text": "<svg\n   width=\"22.0px\"\n   height=\"22.0px\"\n   viewBox=\"0 0 22.0 22.0\">\n  <g>\n    <path\n       d=\"M 19.593799,-0.00844703 C 13.454028,4.7259572 9.3446824,11.99357 7.6719245,15.112646 6.677435,13.151145 5.2034927,10.646341 2.835987,8.2747561 L 0.7148933,10.393896 c 3.4023181,3.408181 5.4316406,8.466797 5.4316406,8.466797 l 1.2226563,3.13086 1.5117187,-3.001954 c 0,0 5.9575031,-11.5449655 12.5429681,-16.623046 z\">\n  </g>\n</svg>\n"
        },
        "$:/plugins/can/quick/escape.svg": {
            "title": "$:/plugins/can/quick/escape.svg",
            "created": "20200704020624739",
            "modified": "20200707223828753",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg\n   width=\"22.0px\"\n   height=\"22.0px\"\n   viewBox=\"0 0 30 25\">\n  <g>\n    <path\n       d=\"M 12.302259,1.0714706 -0.06247441,3.0832093 8.8329909,12.323098 10.143362,11.065959 7.6823152,6.6855455 c 1.4303571,0.4245238 2.9821908,0.9468864 4.4618198,1.5686832 2.049813,0.8614147 3.992577,1.9178273 5.343235,3.0653523 1.350658,1.147493 2.043641,2.288534 2.035216,3.455169 v 0.02349 0.02501 c 0.0056,0.197706 -0.07775,0.484297 -0.468096,0.886104 -0.390297,0.40184 -1.076011,0.860798 -2.06966,1.255576 -1.987283,0.789556 -5.15922,1.315085 -9.4027102,1.064572 L 7.43965,20.449845 c 4.507277,0.266087 7.983895,-0.255682 10.437544,-1.230519 1.226832,-0.487422 2.203489,-1.086462 2.918186,-1.822305 0.710121,-0.731058 1.164591,-1.654907 1.14129,-2.633263 0.0032,-2.114819 -1.234327,-3.896285 -2.88218,-5.2962626 C 17.398485,8.0605468 15.267369,6.9382863 13.078774,6.018581 11.6932,5.4363016 10.308556,4.9482139 8.9989465,4.5360021 L 12.593451,2.8655529 Z\" />\n  </g>\n</svg>\n"
        },
        "$:/plugins/can/quick/fastarrow-circle.svg": {
            "title": "$:/plugins/can/quick/fastarrow-circle.svg",
            "text": "<svg\n   width=\"22px\"\n   height=\"22px\"\n   viewBox=\"34 34 100 85\">\n   <path\n       transform=\"matrix(4.0909091,0,0,4.0909091,37.5,30)\"\n       d=\"M 11.078125 0.15625 A 11 11 0 0 0 2.6660156 4.0683594 L 9.46875 4.0683594 C 9.6277812 4.0683594 9.7558594 4.1710103 9.7558594 4.2988281 L 9.7558594 4.9296875 C 9.7558594 5.0575055 9.6277812 5.1601562 9.46875 5.1601562 L 1.8554688 5.1601562 A 11 11 0 0 0 0.3125 8.9003906 L 1.2558594 8.9003906 C 1.4148905 8.9003906 1.5429688 9.0049947 1.5429688 9.1328125 L 1.5429688 9.7617188 C 1.5429688 9.8895368 1.4148905 9.9941406 1.2558594 9.9941406 L 0.140625 9.9941406 A 11 11 0 0 0 0.078125 11.15625 A 11 11 0 0 0 0.16210938 12.503906 L 1.1308594 12.503906 C 1.2898908 12.503906 1.4199219 12.606557 1.4199219 12.734375 L 1.4199219 13.365234 C 1.4199219 13.493052 1.2898908 13.595703 1.1308594 13.595703 L 0.3515625 13.595703 A 11 11 0 0 0 1.8535156 17.150391 L 9.46875 17.150391 C 9.6277812 17.150391 9.7558594 17.254995 9.7558594 17.382812 L 9.7558594 18.011719 C 9.7558594 18.139539 9.6277812 18.244141 9.46875 18.244141 L 2.6679688 18.244141 A 11 11 0 0 0 11.078125 22.15625 A 11 11 0 0 0 22.078125 11.15625 A 11 11 0 0 0 11.078125 0.15625 z M 12.078125 4.6816406 C 12.140542 4.682151 12.201499 4.702896 12.25 4.7421875 L 20.449219 10.804688 C 20.680732 10.992451 20.680732 11.345439 20.449219 11.533203 L 12.25 17.595703 C 12.069765 17.741874 11.800795 17.612915 11.800781 17.380859 L 12.681641 13.574219 L 3.125 13.574219 C 2.9332732 13.574219 2.7792969 13.418289 2.7792969 13.226562 L 2.7792969 9.1113281 C 2.7792969 8.9196013 2.9332732 8.7636719 3.125 8.7636719 L 12.681641 8.7636719 L 11.800781 4.9570312 C 11.800779 4.8038179 11.924917 4.6803206 12.078125 4.6816406 z \"\n        />\n</svg>\n"
        },
        "$:/plugins/can/quick/fastarrow.svg": {
            "title": "$:/plugins/can/quick/fastarrow.svg",
            "text": "<svg\n   viewBox=\"40 30 85 90\"\n   height=\"22px\"\n   width=\"22px\">\n    <g>\n      <path\n      d=\"M 89.048827,42.334883 A 1.2609298,1.2609298 0 0 0 87.77707,43.595787 V 63.688102 H 48.109208 a 1.5875,1.5875 0 0 0 -1.5875,1.5875 v 18.825207 a 1.5875,1.5875 0 0 0 1.5875,1.5875 H 87.77707 v 20.092831 a 1.2609298,1.2609298 0 0 0 2.055172,0.97927 l 37.497448,-30.4059 a 2.1454366,2.1454366 0 0 0 0,-3.332612 L 89.832242,42.616003 a 1.2609298,1.2609298 0 0 0 -0.783415,-0.28112 z\" />\n      <path\n      d=\"m 51.004478,43.27296 v 2.883334 a 1.0583333,1.0583333 45 0 0 1.058333,1.058333 H 81.760247 A 1.0583333,1.0583333 135 0 0 82.81858,46.156294 V 43.27296 A 1.0583333,1.0583333 45 0 0 81.760247,42.214627 H 52.062811 a 1.0583333,1.0583333 135 0 0 -1.058333,1.058333 z\"/>\n      <path\n      d=\"m 35.93881,54.021224 v 2.883334 a 1.0583333,1.0583333 45 0 0 1.058333,1.058333 h 37.026253 a 1.0583333,1.0583333 135 0 0 1.058333,-1.058333 V 54.021224 A 1.0583333,1.0583333 45 0 0 74.023396,52.962891 H 36.997143 a 1.0583333,1.0583333 135 0 0 -1.058333,1.058333 z\"/>\n      <path\n      d=\"m 58.371094,102.88605 v 2.88334 a 1.0583333,1.0583333 45 0 0 1.058333,1.05833 h 21.488802 a 1.0583333,1.0583333 135 0 0 1.058333,-1.05833 v -2.88334 a 1.0583333,1.0583333 45 0 0 -1.058333,-1.05833 H 59.429427 a 1.0583333,1.0583333 135 0 0 -1.058333,1.05833 z\"/>\n      <path\n      d=\"m 40.017273,92.39557 v 2.883334 a 1.0583333,1.0583333 45 0 0 1.058333,1.058333 h 37.092623 a 1.0583333,1.0583333 135 0 0 1.058333,-1.058333 V 92.39557 A 1.0583333,1.0583333 45 0 0 78.168229,91.337237 H 41.075606 a 1.0583333,1.0583333 135 0 0 -1.058333,1.058333 z\"/>\n    </g>\n</svg>\n"
        },
        "$:/plugins/can/quick/quickadd-big-button.svg": {
            "title": "$:/plugins/can/quick/quickadd-big-button.svg",
            "created": "20200517184255518",
            "creator": "chris",
            "modified": "20200704025357585",
            "modifier": "chris",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg height=\"22pt\" width=\"22pt\" viewBox=\"0 0 277 277\">\n   <circle\n     r=\"138.26346\"\n     cy=\"138.26346\"\n     cx=\"138.26346\"\n     id=\"path1008\"\n     style=\"fill:#000000;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1\" />\n  <g\n     id=\"g937-8\"\n     transform=\"matrix(3.7795276,0,0,3.7795276,1057.0272,272.93797)\"\n     style=\"fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1\">\n    <path\n       sodipodi:nodetypes=\"ccccccccc\"\n       id=\"path914-1-3-1-2-1-7\"\n       d=\"m -258.68574,9.4622796 -5.72931,15.4363384 4.0326,-0.933085 0.1742,37.317431 c -1.35265,1.566997 -1.8121,3.160143 -1.8121,3.160143 -0.11314,2.868561 0.95998,6.631241 1.05307,8.762376 0.98287,0.106825 1.56182,-0.225604 1.81888,-0.05188 l 0.0867,2.556541 0.38252,0.05821 0.38251,-0.05828 0.0862,-2.556558 c 0.25702,-0.173775 0.83604,0.15854 1.81889,0.05152 0.0927,-2.131153 1.16504,-5.894045 1.05133,-8.762584 0,0 -0.45976,-1.593055 -1.81272,-3.159784 l 0.16681,-37.317465 4.03279,0.932287 z\"\n       style=\"fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n       inkscape:path-effect=\"#path-effect1036\"\n       inkscape:original-d=\"m -258.68181,9.4516932 -5.73324,15.4469248 4.0326,-0.933085 0.1742,37.317431 c -1.35265,1.566997 -1.8121,3.160143 -1.8121,3.160143 -0.11314,2.868561 0.95998,6.631241 1.05307,8.762376 0.98287,0.106825 1.56182,-0.225604 1.81888,-0.05188 l 0.0867,2.556541 0.72437,0.110227\"\n       transform=\"rotate(46.577289,-159.2453,23.947788)\" />\n    <path\n       sodipodi:nodetypes=\"cccccsccccc\"\n       id=\"path910-0-2-5-0\"\n       d=\"m -271.72257,-57.072874 c 12.6631,9.009276 25.02666,1.739112 36.01494,8.191443 l 3.38653,4.544018 4.44549,3.083572 c 5.01097,10.523166 -0.88676,27.252204 4.58482,35.8753865 -1.39365,-0.031348 -1.5399,-0.059342 -1.58943,-0.1209212 -7.49954,-9.3232583 -2.63164,-22.3715353 -6.64453,-32.5261993 l -4.04825,-3.374594 -3.62625,-4.228358 c -11.69832,-5.547814 -23.21324,-0.548631 -32.50865,-9.946928 -0.0411,-0.983034 4.1e-4,-0.654186 -0.0147,-1.497419 z\"\n       style=\"fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" />\n    <path\n       sodipodi:nodetypes=\"ccc\"\n       id=\"path912-1-9-2-9\"\n       d=\"m -269.13343,-54.493176 2.86052,43.104861 40.71544,2.9845762\"\n       style=\"fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" />\n  </g>\n</svg>"
        },
        "$:/plugins/can/quick/quickadd-button.svg": {
            "title": "$:/plugins/can/quick/quickadd-button.svg",
            "created": "20200517134909443",
            "creator": "chris",
            "modified": "20200704025415240",
            "modifier": "chris",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-button\" height=\"22pt\" width=\"22pt\" viewBox=\"0 0 55 55\">\n    <g\n    transform=\"translate(272.23164,58.233013)\"\n     id=\"layer1\"\n     inkscape:groupmode=\"layer\"\n     inkscape:label=\"Layer 1\">\n        <path\n           transform=\"rotate(46.577289,-159.2453,23.947788)\"\n           inkscape:original-d=\"m -258.68181,9.4516932 -5.73324,15.4469248 4.0326,-0.933085 0.1742,37.317431 c -1.35265,1.566997 -1.8121,3.160143 -1.8121,3.160143 -0.11314,2.868561 0.95998,6.631241 1.05307,8.762376 0.98287,0.106825 1.56182,-0.225604 1.81888,-0.05188 l 0.0867,2.556541 0.72437,0.110227\"\n           style=\"fill:#000000;fill-opacity:1;stroke:#680000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n           d=\"m -258.68574,9.4622796 -5.72931,15.4363384 4.0326,-0.933085 0.1742,37.317431 c -1.35265,1.566997 -1.8121,3.160143 -1.8121,3.160143 -0.11314,2.868561 0.95998,6.631241 1.05307,8.762376 0.98287,0.106825 1.56182,-0.225604 1.81888,-0.05188 l 0.0867,2.556541 0.38252,0.05821 0.38251,-0.05828 0.0862,-2.556558 c 0.25702,-0.173775 0.83604,0.15854 1.81889,0.05152 0.0927,-2.131153 1.16504,-5.894045 1.05133,-8.762584 0,0 -0.45976,-1.593055 -1.81272,-3.159784 l 0.16681,-37.317465 4.03279,0.932287 z\"\n           id=\"path914-1-3-1-2-1\"\n           sodipodi:nodetypes=\"ccccccccc\" />\n        <path\n           style=\"fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n           d=\"m -271.72257,-57.072874 c 12.6631,9.009276 25.02666,1.739112 36.01494,8.191443 l 3.38653,4.544018 4.44549,3.083572 c 5.01097,10.523166 -0.88676,27.252204 4.58482,35.8753865 -1.39365,-0.031348 -1.5399,-0.059342 -1.58943,-0.1209212 -7.49954,-9.3232583 -2.63164,-22.3715353 -6.64453,-32.5261993 l -4.04825,-3.374594 -3.62625,-4.228358 c -11.69832,-5.547814 -23.21324,-0.548631 -32.50865,-9.946928 -0.0411,-0.983034 4.1e-4,-0.654186 -0.0147,-1.497419 z\"\n           id=\"path910-0-2-5\"\n           sodipodi:nodetypes=\"cccccsccccc\" />\n        <path\n           style=\"fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n           d=\"m -269.13343,-54.493176 2.86052,43.104861 40.71544,2.9845762\"\n           id=\"path912-1-9-2\"\n           sodipodi:nodetypes=\"ccc\" />\n      </g>\n</svg>"
        },
        "$:/plugins/can/quick/quickadd-toolbar-btn-dark.svg": {
            "title": "$:/plugins/can/quick/quickadd-toolbar-btn-dark.svg",
            "text": "<svg class=\"tc-image-button\" height=\"22pt\" width=\"22pt\" viewBox=\"0 0 277 277\"><path d=\"M 138.73363,0.40576738 C 61.421105,0.80269438 -0.00917762,62.875943 5.3811517e-6,139.17626 0.00520538,216.03855 62.314009,278.33913 139.17626,278.33409 216.03128,278.32909 278.32888,216.03128 278.33409,139.17626 278.33909,62.314012 216.04612,0.00884038 138.73363,0.40576738 Z m 98.67386,52.23259862 -24.11814,54.056394 -9.29562,-14.017238 -16.96835,16.451918 11.6503,5.75646 0.22135,0.44261 c 9.4365,19.81683 8.51182,44.96086 7.91236,68.97947 -0.59945,24.01859 -0.82798,46.86192 8.72387,61.91555 l 1.82593,2.87722 -3.41209,-0.0557 c -2.55708,-0.0576 -3.95695,-0.12616 -4.8507,-0.20284 -0.44685,-0.0387 -0.75989,-0.0831 -1.12506,-0.18442 -0.36507,-0.10123 -0.93931,-0.39208 -1.21729,-0.7378 -0.77151,-0.95911 -1.381,-1.97183 -2.08414,-2.95099 L 45.27932,236.22709 38.27071,67.338005 c -0.83293,-0.77309 -1.685392,-1.436515 -2.508345,-2.268576 l -0.497977,-0.497986 -0.01841,-0.719306 c -0.151651,-3.626432 -0.0011,-2.484736 -0.05536,-5.514664 l -0.03692,-1.862814 h 1.862815 0.590199 l 0.461092,0.350427 c 22.718747,16.163456 45.045418,17.692123 67.079786,18.111726 22.03439,0.419608 43.79445,-0.361806 64.38701,11.730202 l 0.33202,0.184434 7.40205,13.240582 18.13031,-17.52166 -14.27545,-9.258744 z M 48.045878,75.084365 53.726542,211.93672 c 5.884384,-6.67405 15.171183,-19.48613 22.64888,-26.02408 -10e-7,0 6.183124,-2.2612 13.998779,-2.61901 l 71.082339,-67.89155 -8.96391,-11.49019 C 131.62987,94.114853 113.09015,91.306996 92.974764,89.046256 77.385331,87.294182 62.162609,84.352683 48.045878,75.084365 Z M 171.06571,124.60549 99.079641,193.5299 c -0.705311,7.79199 -3.209209,13.83278 -3.209209,13.83278 -6.735709,7.04508 -20.561598,15.17235 -27.757794,20.65696 l 130.636822,7.15616 c -7.06348,-14.52019 -8.68837,-30.57607 -9.31407,-46.6257 -0.80919,-20.75796 -2.37592,-39.32455 -9.35097,-57.30463 z m -117.173176,91.68395 0.276657,6.49219 3.061657,-3.09855 c -0.133765,-0.8105 -1.673808,-1.91671 -3.338314,-3.39364 z m 6.842618,8.18902 -3.282979,2.95098 6.252418,0.35044 c -1.280718,-1.64878 -2.171361,-3.13295 -2.969439,-3.30142 z\" /></svg>\n"
        },
        "$:/plugins/can/quick/quickadd-toolbar-btn-light.svg": {
            "title": "$:/plugins/can/quick/quickadd-toolbar-btn-light.svg",
            "text": "<svg\n   class=\"tc-image-button\"\n   viewBox=\"0 0 277 277\"\n   width=\"22pt\"\n   height=\"22pt\">\n    <path\n       transform=\"scale(9.4431816)\"\n       d=\"M 14.583984,0 C 6.5044653,0.08432537 -7.0758185e-4,6.6583223 0,14.738281 8.0905477e-4,22.877358 6.5992042,29.474879 14.738281,29.474609 22.876595,29.4738 29.4738,22.876595 29.474609,14.738281 29.474879,6.5992042 22.877358,8.0905477e-4 14.738281,0 14.686849,-2.6923669e-4 14.635416,-2.6923669e-4 14.583984,0 Z m 0.154297,1.1132812 c 3.567118,-5.4e-6 7.11048,1.4679018 9.632813,3.9902344 0.181932,0.1819321 0.31902,0.3523151 0.489832,0.5445192 L 19.134886,7.7387054 20.646605,8.7191742 18.726693,10.630365 17.86414,9.1351952 17.82898,9.0535942 C 14.448275,7.6903318 13.468131,7.9799815 11.134766,7.9355469 8.8527996,7.8920911 6.5405306,7.7270274 4.1894531,6.1191406 4.4764049,5.7656236 4.7813084,5.4257229 5.1035156,5.1035156 7.6258483,2.581183 11.171166,1.1132758 14.738281,1.1132812 Z m 10.310949,4.738684 c 2.116433,2.4548149 3.314057,5.6429068 3.314051,8.8863158 7e-6,3.567119 -1.469855,7.11048 -3.992187,9.632813 -0.522506,0.522506 -1.095971,0.98959 -1.697266,1.417968 -0.847763,-1.589927 -0.833352,-3.870899 -0.773437,-6.271484 0.06348,-2.543486 0.368302,-3.985434 -0.755131,-7.159856 l -0.02344,-0.04687 -1.361926,-0.723451 1.796865,-1.7979098 0.984375,1.4843758 z M 3.7324219,6.7421875 c 4.669e-4,0.011747 -5.37e-4,0.00669 0,0.019531 l 0.00195,0.076172 0.052734,0.052734 c 0.087148,0.088113 0.1774172,0.1583702 0.265625,0.2402344 L 4.7519531,23.982422 C 2.4523863,21.490795 1.113276,18.130646 1.1132812,14.738281 1.1132769,11.884799 2.0652663,9.0553743 3.7324219,6.7421875 Z m 1.3554687,1.2089844 c 1.4951289,0.9812765 3.106946,1.2929771 4.7578125,1.4785156 2.1301509,0.2394046 4.0934409,0.5367464 6.3027349,1.5742185 l 0.896549,1.290157 -7.4746745,7.116093 C 8.7426619,19.448046 8.0878905,19.6875 8.0878906,19.6875 7.2959701,20.379897 6.3126667,21.73685 5.6894531,22.443359 Z m 12.9746744,5.3175001 1.007747,0.629766 c 0.738632,1.904029 0.904544,3.870165 0.990235,6.068359 0.06624,1.699216 0.236698,3.399911 0.984375,4.9375 L 7.2128906,24.146484 c 0.7617181,-0.580853 2.2260505,-1.441331 2.9394534,-2.1875 0,0 0.265158,-0.639699 0.339844,-1.464843 z M 5.7070312,22.902344 c 0.1762002,0.156965 0.3393398,0.275433 0.3535157,0.361328 l -0.3242188,0.328125 z m 0.7246094,0.86914 c 0.084514,0.01784 0.1783293,0.17516 0.3144532,0.34961 l -0.6621094,-0.03711 z m -0.5488281,1.304688 15.7890625,0.865234 c 0.07478,0.1042 0.140565,0.210447 0.222656,0.3125 0.0094,0.01171 0.02699,0.01517 0.04102,0.02539 -2.151552,1.331571 -4.66519,2.083989 -7.197266,2.083984 -3.216686,7e-6 -6.4083914,-1.202672 -8.8554685,-3.287109 z\" />\n</svg>\n"
        },
        "$:/plugins/can/quick/title-page.svg": {
            "title": "$:/plugins/can/quick/title-page.svg",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg\n   width=\"22.0px\"\n   height=\"22.0px\"\n   viewBox=\"0 0 22.0 22.0\">\n   <g\n     transform=\"matrix(1.375,0,0,1.375,-3.8159015,-2.4934254)\">\n      <path\n         d=\"M 7.9459026,2.6643496 8.4611063,3.1796324 7.4306108,4.2101273 6.9153279,3.694924 Z M 7.4306108,2.1490579 7.2515374,1.9699839 C 6.9670785,1.6856056 6.5051554,1.6849782 6.2205029,1.9695164 5.936584,2.2535236 5.9361418,2.7157125 6.2209704,3.0006386 l 0.1790745,0.1789857 z m 1.5457873,1.5457866 5.4880839,5.4880742 c 0.01008,0.010082 0.01986,0.020453 0.02934,0.0311 0.0088,0.008 0.01803,0.01635 0.02686,0.02509 0.522387,0.522387 0.97483,2.0054083 0.97483,2.0054083 0,0 -1.494318,-0.463656 -2.005405,-0.974832 -0.0088,-0.0088 -0.01696,-0.01758 -0.02474,-0.0266 -0.01074,-0.0096 -0.0212,-0.01943 -0.03136,-0.0296 L 7.9459114,4.7254102 8.9764949,3.694924 Z m 4.4763559,9.3655175 c -0.618298,-0.05257 -1.26595,-0.206951 -2.157786,-0.487133 -0.166244,-0.05204 -0.325199,-0.103521 -0.577141,-0.185823 -1.4574322,-0.476026 -1.9927448,-0.62003 -2.6183413,-0.65092 -0.7613145,-0.03755 -1.2619389,0.194023 -1.6013285,0.79237 -0.2406147,0.418965 -0.8698818,0.06216 -0.633885,-0.359428 0.4858602,-0.856776 1.2520158,-1.211106 2.2711131,-1.16083 0.7173112,0.03552 1.2804135,0.186921 2.8087067,0.686173 0.249478,0.08147 0.40625,0.132042 0.569305,0.183273 1.772582,0.556731 2.802778,0.644168 3.606829,0.159122 0.417342,-0.25652 0.797943,0.374432 0.376378,0.623953 -0.576869,0.34796 -1.252839,0.466386 -2.04385,0.399243 z\" />\n      <path\n         d=\"m 5.6835938,13.455078 v 0.847656 H 15.833984 v -0.847656 z\"/>\n      <path\n         d=\"M 3.1841879,7.7449646 V 17.795765 H 4.3593834 V 9.0586357 H 10.871806 L 9.5581325,7.7449646 Z m 11.1860561,0 1.313671,1.3136711 h 1.474478 v 8.7371293 h 1.313671 V 7.7449646 Z\" />\n  </g>\n</svg>\n"
        },
        "$:/plugins/can/quick/license": {
            "title": "$:/plugins/can/quick/license",
            "caption": "license",
            "text": "BSD 3-Clause License\n\nCopyright (c) 2020, Chris Nicoll\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/plugins/can/quick/omnilabel-macro": {
            "title": "$:/plugins/can/quick/omnilabel-macro",
            "created": "20200702181035274",
            "modified": "20200705221330000",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define omnilabel(chars:100)\n<$wikify name=\"can-long-label\" text={{{ [{!!title}!match{!!created}] ~[<currentTiddler>get[text]!is[blank]] ~[<currentTiddler>get[title]]}}}>\n\t<$link to=<<currentTiddler>>>\n\t\t<$text text={{{ [<can-long-label>split[]first[$chars$]join[]] }}}/>\n\t</$link>\n</$wikify>\n\\end"
        },
        "$:/plugins/can/quick/quick-macros": {
            "title": "$:/plugins/can/quick/quick-macros",
            "tags": "$:/tags/Macro",
            "text": "\\define quickbutton(buttonstyle)\n<$button class=\"tc-btn-invisible can-omni-button can-rightedge $buttonstyle$\" actions=\"<<submit-actions>> <<reset-actions>>\">\n{{$:/plugins/can/quick/fastarrow-circle.svg}}\n</$button>\n\\end\n\n\\define quickresetbutton(buttonstyle) <$button class=\"can-omni-button can-leftedge $buttonstyle$ tc-btn-invisible\" actions=<<reset-actions>> >{{$:/plugins/can/quick/escape.svg}}</$button>\n\n\\define quicktitle()\n<div class=\"can-quickadd-titleadder\">\n<$keyboard tag=\"div\" class=\"can-keyboard-wide\" key=\"ctrl-enter\" actions='<<submit-actions>><<reset-actions>>' >\n<$keyboard tag=\"div\" class=\"can-keyboard-wide\" key=\"cmd-enter\" actions='<<submit-actions>><<reset-actions>>' >\n<$keyboard tag=\"div\" class=\"can-keyboard-wide\" key=\"escape\" actions=\"<$action-setfield $tiddler=<<quickstatetid>> $field='edittitle' />\">\n<$edit-text class=\"can-quickadd-titleedit\" tiddler=<<quickstatetid>> field=edittitle placeholder=\"Optional title\"/>\n</$keyboard></$keyboard></$keyboard>\n<$reveal type=\"nomatch\" stateTitle=<<quickstatetid>> stateField=\"edittitle\" text=\"\">\n<$button class=\"can-omni-button tiny tc-btn-invisible\" actions=\"<$action-setfield $tiddler=<<quickstatetid>> $field='edittitle'/>\">{{$:/plugins/can/quick/escape.svg}}</$button>\n</$reveal>\n</div>\n\\end\n\n\\define quicktext()\n<$keyboard tag=\"div\" class=\"can-keyboard-wide\" key=\"ctrl-enter\" actions=\"<<submit-actions>> <<reset-actions>>\" >\n<$keyboard tag=\"div\" class=\"can-keyboard-wide\" key=\"cmd-enter\" actions=\"<<submit-actions>> <<reset-actions>>\" >\n<$keyboard tag=\"div\" class=\"can-keyboard-wide\" key=\"escape\" actions=\"<<reset-actions>>\" >\n<$edit-text class=\"can-quickadd-textarea\" tiddler=<<quickstatetid>> field=\"text\" default=\"\" placeholder=\"Enter quick text here\" rows=\"1\" minHeight=\"0\" focus=<<focus>>/>\n</$keyboard></$keyboard></$keyboard>\n\\end\n\n\n\\define omni-inlist() <$action-listops $tiddler=<<__omniparent__>> $subfilter='+[insertbefore:contTiddler{!!savetitle}] +[move{!!savetitle}]'/>\n\n\\define omni-listtop() <$action-listops $tiddler=<<__omniparent__>> $subfilter='[{!!savetitle}] +[putfirst[]]'/>\n\n\\define quickstate() $:/state/can/quick/$(currentTiddler)$\n\n\\define quickadd(tags:\"\" omniparent:\"\" focus:\"true\" buttonstyle:\"small\" openstatetid endstate:\"open\" position:\"omni-inlist\" layout:\"fullui\" quickstatetid)\n<$set name=quickstatetid value=\"$quickstatetid$\" emptyValue=\"$(quickstate)$\" >\n<$set name=contTiddlerFilt filter=\"[<currentTiddler>]\" >\n<$vars contTiddler=<<currentTiddler>> focus=$focus$ layout=$layout$ subTags=<<__tags__>> omniParent=\"$omniparent$\" openstatetid=\"$openstatetid$\" >\n<$set name=omniParBrak  filter=\"[<omniParent>]\" >\n<$set name=\"submit-actions\" value=\"<$tiddler tiddler=<<quickstatetid>> ><$set name=theTime value=<<now [UTC]YYYY0MM0DD0hh0mm0ss0XXX>>><$set name=newtitle value={{!!edittitle}} emptyValue=<<theTime>> ><$action-setfield newtitle=<<newtitle>>/><$action-createtiddler $basetitle={{!!newtitle}} $savetitle=!!savetitle text={{!!text}} tags=<<subTags>> created=<<theTime>> omniparent=<<omniParBrak>> /><$macrocall $name=$position$/><$action-setfield $tiddler=<<openstatetid>> text=$endstate$/></$set></$set></$tiddler><$action-sendmessage $message='tm-auto-save-wiki'/>\" >\n<$set name=\"reset-actions\" value=\"<$tiddler tiddler=<<quickstatetid>> ><$action-setfield $field=edittitle/><$action-setfield text=''/><$action-setfield $tiddler=<<openstatetid>> text=$endstate$/></$tiddler>\" >\n<<quickui layout:$layout$ buttonstyle:$buttonstyle$>>\n</$set></$set></$set></$vars></$set></$set>\n\\end\n\n\\define quickui(buttonstyle layout)\n<<$layout$ buttonstyle:$buttonstyle$>>\n\\end\n\n\\define fullui(buttonstyle)\n<div class=\"can-quickadd fullui\">\t\n\t<<quickresetbutton buttonstyle:\"small\">>\n\t<<quicktext>>\n\t<div class=\"can-quickadd-btmrow\">\n\t\t<<quicktitle>>\n\t\t<<quickbutton buttonstyle:$buttonstyle$ >>\n\t</div>\n</div>\n\\end\n\n\\define slimui()\n<div class=\"can-quickadd slim\">\t\n\t<<quickresetbutton buttonstyle:\"small\">>\n\t<<quicktext>>\n\t<<quickbutton buttonstyle:\"small\" >>\n</div>\n\\end\n\n\\define subui()\n<div class=\"can-quickadd sub\">\t\n\t<<quicktext>>\n\t<div class=\"can-quickadd-btmrow\">\n\t\t<<quicktitle>>\n\t\t<<quickbutton buttonstyle:\"big\" >>\n\t</div>\n</div>\n\\end\n\n\n\\define arrownote(layout:\"fullui\")\n<$macrocall $name=\"quickadd\" tags=\"quickadd\" buttonstyle=\"big\" layout=$layout$ />\n\\end\n\n\\define quicksub(tags omniparent focus:\"true\" buttonstyle endstate) \n<$macrocall $name=\"quickadd\" tags=\"[[$(currentTiddler)$]] $tags$\" omniparent=$omniparent$ focus=$focus$ buttonstyle=$buttonstyle$ endstate=$endstate$ />\n\\end\n"
        },
        "$:/plugins/can/quick/stylesheet": {
            "title": "$:/plugins/can/quick/stylesheet",
            "created": "20200507184921957",
            "creator": "chris",
            "modified": "20200706205716530",
            "modifier": "chris",
            "tags": "$:/tags/Stylesheet",
            "text": "\n.can-quickadd {\nmargin-top: 1em;\n}\n\n.can-quickadd.slim {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n}\n\n.can-quickadd-textarea {\nwidth: 100%;\nmargin: 0.4em 0;\n}\n\n.can-quickadd-titleedit, .can-quickadd-textarea {\noutline-color: #eee;\nborder: 1px solid #eee;\nwidth: 100%;\n}\n\n.can-quickadd-titleedit {\nmargin-top: 0.5em;\n}\n\n.can-quickadd-btmrow {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n}\n\n.can-keyboard-wide {position: relative; width: 100%;}\n\n.can-quickadd-titleadder {\ndisplay: flex;\nflex-direction: row;\n}\n\n.can-title-cancel {\nmargin-right: 1em;\n}\n\n.can-omni-button {\nmargin-right: 0.4em;\nflex: 0 0 auto;\n}\n\n.arrownote-top-container {\n    border-radius: 1em;\n    padding: 0 1em 1em 1em;\n    background-color: rgba(255,255,255,0.8);\n}\n\n.tc-topbar .arrownote-top-container svg {\n    fill: #666699;\n}\n.can-omni-button svg, .can-omni-button.small svg {width: 12pt; height: 12pt;}\n\n.can-omni-button.big svg {width: 16pt; height: 16pt;}\n\n.can-omni-button.tiny svg {width: 10pt; height: 10pt;}\n\n.can-omni-button.none {display: none;}\n\n.can-leftedge {\n  margin-left: 0;\n  padding-left: 0;\n}\n\n.can-rightedge {\n  margin-right: 0;\n  padding-right: 0;\n}"
        },
        "$:/plugins/can/quick/readme": {
            "title": "$:/plugins/can/quick/readme",
            "caption": "readme",
            "text": "@@background: #ffdd00;font-weight:bold;This is a plugin I wrote for myself, and it has not been extensively tested. It may also change. Back up your data, and use at your own risk!@@\n\nThe Quick plugin is meant to make it easier to jot small bits of information into a TiddlyWiki.\n\nThe main feature is an interface which is a lot like using a New Journal button, but the experience is tweaked to reduce cognitive overhead and the number of UI interactions.\n\nIt is possible, but not necessary, to enter a title for a \"quick\" tiddler. If a title is not provided, the tiddler is created with a timestamp for a title.\n\nThe ''Recent'' tab in the sidebar displays a sample of the tiddler text in the case that a title hasn't been chosen.\n"
        },
        "$:/plugins/can/quick/timeline-tweak": {
            "title": "$:/plugins/can/quick/timeline-tweak",
            "tags": "$:/tags/Macro",
            "text": "\\define timeline-title()\n\\whitespace trim\n<!-- Overrides the macro of the same name defined in $:/core/macros/timeline -->\n<<omnilabel chars:200>>\n\\end\n"
        }
    }
}
<div style="width: 20em;">
<<arrownote>>
</div>
<div class="arrownote-top-container">
{{$:/plugins/can/quick/arrownote-adder}}
</div>
.can-quickadd {
margin-top: 1em;
}

.can-quickadd.slim {
  display: flex;
  flex-direction: row;
  align-items: center;
}

.can-quickadd-textarea {
width: 100%;
margin: 1px 0;
}

.can-quickadd-titleedit, .can-quickadd-textarea {
outline-color: #8be9fd;
border: 1px solid #8be9fd;
width: 100%;
}

.can-quickadd-titleedit {
margin-top: 1px;
}

.can-quickadd-btmrow {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.can-keyboard-wide {position: relative; width: 100%;}

.can-quickadd-titleadder {
display: flex;
flex-direction: row;
}

.can-title-cancel {
margin-right: 1px;
}

.can-omni-button {
margin-right: 1px;
flex: 0 0 auto;
}

.arrownote-top-container {
    border-radius: 1px;
    padding: 0 1em 1em 1em;
    background-color: rgba(40,42,54,0.8);
}

.tc-topbar .arrownote-top-container svg {
    fill: #666699;
}
.can-omni-button svg, .can-omni-button.small svg {width: 12pt; height: 12pt;}

.can-omni-button.big svg {width: 16pt; height: 16pt;}

.can-omni-button.tiny svg {width: 10pt; height: 10pt;}

.can-omni-button.none {display: none;}

.can-leftedge {
  margin-left: 0;
  padding-left: 0;
}

.can-rightedge {
  margin-right: 0;
  padding-right: 0;
}
{
    "tiddlers": {
        "$:/plugins/danielo/encryptTiddler/Changelog": {
            "title": "$:/plugins/danielo/encryptTiddler/Changelog",
            "text": "!! V2.1\n* Added control panel.\n* Added ability to batch encrypt and decrypt tiddlers.\n* Added some documentation an language strings.\n\n"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt",
            "caption": "Batch Encryption",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n{{$:/plugins/danielo/encryptTiddler/language/batch}}\n\n<$linkcatcher to=\"$:/temp/encrypt/filter\">\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/encrypt/filter\" type=\"search\" tag=\"input\" default=\"\" placeholder=\"filter tiddlers\"/>\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/encrypt/filter\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n\n\n<$edit-text tag=\"input\" tiddler=\"$:/temp/password\" placeholder=\"password\" type=\"password\" default=\"\" col=\"4\"/><$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}>\n<$button message=\"tw-encrypt-tiddler\">\nEncrypt\n</$button>\n<$button message=\"tw-decrypt-tiddler\">\nDecrypt\n</$button>\n</$encryptTiddler>\n</$reveal>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]!sort[]] -[[$:/core/Filters/SystemTags]] -[[$:/core/Filters/AllTags]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/encrypt/filter}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/encrypt/filter}} template=\"$:/plugins/danielo/encryptTiddler/ui/listItemTemplate\"/>\n</div>\n</$set>\n</$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel",
            "tags": "$:/tags/ControlPanel",
            "caption": "Encrypt Tiddlers",
            "text": "\\define prefix(name) $:/plugins/danielo/encryptTiddler/control-panel/$name$\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]prefix[$:/plugins/danielo/encryptTiddler/control-panel/]]\" default=<<prefix \"batch-encrypt\">> state=\"$:/state/encryptTiddler/control-panel/tabs\">>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-batch-button": {
            "creator": "Danielo",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-batch-button",
            "text": "<span title=\"Encrypt/Decrypt tiddler\" class=\"pc-batch-controls\">\n<$reveal state=<<qualify \"$:/state/encrypt\">> type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>\n<$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$button message=\"tw-encrypt-tiddler\"  set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Encrypt</$button> <$button message=\"tw-decrypt-tiddler\" set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Decrypt</$button></span>\n</div>\n</$reveal></$encryptTiddler>\n</span>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-button": {
            "created": "20140405233000477",
            "creator": "Danielo",
            "modified": "20140608121335075",
            "tags": "$:/tags/ViewToolbar button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-button",
            "type": "text/vnd.tiddlywiki",
            "text": "<span title=\"Encrypt/Decrypt tiddler\"><$transclude tiddler=\"$:/plugins/danielo/encryptTiddler/openPopup\"/>\n</span><$encryptTiddler passwordTiddler=\"$:/temp/password\"><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$list filter=\"[all[current]!has[encrypted]]\"> <$button message=\"tw-encrypt-tiddler\"  set=\"$:/state/encrypt\" setTo=\"\" >Encrypt</$button></$list><$list filter=\"[is[current]has[encrypted]]\"> <$button message=\"tw-decrypt-tiddler\" set=\"$:/state/encrypt\" setTo=\"\" >Decrypt</$button></$list></span>\n</div>\n</$reveal></$encryptTiddler>\n"
        },
        "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler": {
            "created": "20140406153742691",
            "creator": "pepito",
            "description": "add the hability to encrypt individual tiddlers",
            "modified": "20141029152631265",
            "modifier": "Danielo Rodriguez",
            "tags": "index plugins",
            "title": "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler",
            "type": "text/vnd.tiddlywiki",
            "caption": "readme",
            "text": "This plugin adds the ability to encrypt your tiddlers individually. This have several advantages:\n\n* You can specify a different password for each tiddler if you want.\n* You don't have to encrypt your whole wiky.\n* If you forget your password, you only lose a tiddler.\n* It's possible to edit the tiddler content , tags and fields ''except the encrypt field'' after encryption. Decrypting your tiddler will restore it to its original state when you encrypted it. This way you can hide the encrypted tiddlers as a \"different\" thing.\n* You can even encrypt images.\n* You can have sensible data in a day to day wiky.\n* I didn't try this, but theoretically you can apply double encryption by encrypting your wiki too."
        },
        "$:/plugins/danielo/encryptTiddler/encrypttiddler.js": {
            "text": "/*\\\ntitle: $:/plugins/danielo/encryptTiddler/encrypttiddler.js\ntype: application/javascript\nmodule-type: widget\n\nencrypttiddler widget\n\n```\n\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar encryptTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t\t{type: \"tw-encrypt-tiddler\", handler: \"handleEncryptevent\"},\n\t\t\t{type: \"tw-decrypt-tiddler\", handler: \"handleDecryptevent\"},\n\t\t\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nencryptTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nencryptTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tconsole.log(\"Render\");\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nencryptTiddlerWidget.prototype.execute = function() {\n\t// Get attributes\n\t this.tiddlerTitle=this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t this.filter=this.getAttribute(\"filter\",undefined);\n \t this.passwordTiddler=this.getAttribute(\"passwordTiddler\");\n\t// Construct the child widgets\n\tconsole.log(this.targetTiddler);\n\t\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nencryptTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.filter) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nencryptTiddlerWidget.prototype.getTiddlersToProcess = function(){\n\tif(this.filter){ //we have a filter to work with\n\t\treturn this.wiki.filterTiddlers(this.filter);\n\t}else{ //single tiddler case\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t\treturn tiddler? [tiddler.fields.title] : [];\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleEncryptevent = function(event){\n\tvar password = this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields={text:\"!This is an encrypted Tiddler\",\n\t\t\t\t\t\t\t\t  encrypted:self.encryptFields(title,password)};\n\t\t\tself.saveTiddler(tiddler,fields);\n\t\t});\n\n\t}else{\n\t\tconsole.log(\"We did not find any tiddler to encrypt or password not set!\")\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleDecryptevent = function(event){\n\tvar password =this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields = self.decryptFields(tiddler,password);\n\t\t\tif(fields)self.saveTiddler(tiddler,fields);\n\t\t});\n\t}\n};\n\nencryptTiddlerWidget.prototype.saveTiddler=function(tiddler,fields){\n\tthis.wiki.addTiddler(  new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,this.clearNonStandardFields(tiddler), fields ) )\n}\n\nencryptTiddlerWidget.prototype.encryptFields = function (title,password){\n\tvar jsonData=this.wiki.getTiddlerAsJson(title);\n\treturn $tw.crypto.encrypt(jsonData,password);\n\n};\n\nencryptTiddlerWidget.prototype.decryptFields = function(tiddler,password){\n\t\tvar JSONfields =$tw.crypto.decrypt(tiddler.fields.encrypted,password);\n\t\tif(JSONfields!==null){\n\t\t\treturn JSON.parse(JSONfields);\n\t\t}\n\t\tconsole.log(\"Error decrypting \"+tiddler.fields.title+\". Probably bad password\")\n\t\treturn false\n};\n\nencryptTiddlerWidget.prototype.getPassword = function(){\n\tvar tiddler=this.wiki.getTiddler(this.passwordTiddler);\n\tif(tiddler){\n\t\tvar password=tiddler.fields.text;\n\t\tthis.saveTiddler(tiddler); //reset password tiddler\n\t\treturn password;\n\t}\n\n\treturn false\n};\n\n// This function erases every field of a tiddler that is not standard and also\n// the text field\nencryptTiddlerWidget.prototype.clearNonStandardFields =function(tiddler) {\n\tvar standardFieldNames = \"title tags modified modifier created creator\".split(\" \");\n\t\tvar clearFields = {};\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(standardFieldNames.indexOf(fieldName) === -1) {\n\t\t\t\tclearFields[fieldName] = undefined;\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"Cleared fields \"+JSON.stringify(clearFields));\n\t\treturn clearFields;\n};\n\nexports.encryptTiddler = encryptTiddlerWidget;\n\n})();",
            "title": "$:/plugins/danielo/encryptTiddler/encrypttiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers",
            "description": "All encrypted tiddlers",
            "filter": "[has[encrypted]]",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers",
            "filter": "[!is[system]!has[encrypted]]",
            "description": "Non-encrypted normal tiddlers",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/language/batch": {
            "title": "$:/plugins/danielo/encryptTiddler/language/batch",
            "text": "Use below controls to encrypt or decrypt a bunch of tiddlers. Encryption ''controls are hidden'' until you type something in the search box. All listed tiddlers will be affected. The presence of a small padlock (<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>) next to the tiddler title indicates that particular tiddler is already encrypted."
        },
        "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate": {
            "title": "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n<$list filter=\"[all[current]has[encrypted]]\">\n<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>\n</$list>\n</$link>\n</div>"
        },
        "$:/plugins/danielo/encryptTiddler/openPopup": {
            "created": "20140406151910358",
            "creator": "Danielo",
            "modified": "20140608121417975",
            "modifier": "pepito",
            "tags": "button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/openPopup",
            "type": "text/vnd.tiddlywiki",
            "text": "<$reveal state=\"$:/state/encrypt\" type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/styles": {
            "created": "20140406110705085",
            "creator": "pepito",
            "modified": "20140608121510064",
            "modifier": "pepito",
            "tags": "$:/tags/Stylesheet encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/styles",
            "type": "text/plain",
            "text": ".tw-password-field {\n\tdisplay: inline-block;\n\twidth: 55%;\n  font-size:1em;\n  line-height:0;\n  margin:0;\n\tpadding-left:7%;\n}\n\n.pc-batch-controls .tw-crypt-dropdown{\n\tright: 0px;\n}\n\n.pc-batch-controls{\n\t\tposition:relative;\n}\n\n.pc-listItem-lock svg{\n\theight: 1em;\n\twidth: 1em;\n\tfill: #aaaaaa;\n}\n\n/*It is for use in combination with tc-block-dropdown */\n.tw-crypt-dropdown{\n      line-height:0;\n\t\t\tpadding-left:5px;\n\t\t\t}\n\n.tw-password-field input{\n       font-size:0.5em;\n\n}\n\n.tw-crypt-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n.tw-crypt-button button{\n\tfont-size:0.5em;\n}\n"
        },
        "$:/plugins/danielo/encryptTiddler/unlocked": {
            "created": "20140406101339943",
            "creator": "danielo515",
            "modified": "20140608121532690",
            "modifier": "danielo515",
            "tags": "encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/unlocked",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button\"\n\t viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\">\n<g>\n\t<path d=\"M77.555,50H35.304V31.63c0-4.057,1.435-7.521,4.305-10.391c2.87-2.87,6.333-4.305,10.391-4.305\n\t\tc4.056,0,7.52,1.435,10.39,4.305s4.305,6.335,4.305,10.391c0,0.996,0.363,1.857,1.091,2.583c0.727,0.729,1.588,1.09,2.583,1.09\n\t\th3.674c0.995,0,1.856-0.361,2.583-1.09c0.727-0.727,1.091-1.588,1.091-2.583c0-7.079-2.517-13.136-7.549-18.17\n\t\tC63.136,8.428,57.08,5.912,50,5.912c-7.081,0-13.137,2.516-18.169,7.548c-5.033,5.034-7.549,11.091-7.549,18.17V50h-1.837\n\t\tc-1.531,0-2.833,0.536-3.904,1.608c-1.072,1.072-1.607,2.372-1.607,3.902v33.067c0,1.532,0.535,2.832,1.607,3.904\n\t\tc1.071,1.072,2.372,1.608,3.904,1.608h55.11c1.53,0,2.832-0.536,3.904-1.608c1.071-1.072,1.607-2.372,1.607-3.904V55.51\n\t\tc0-1.529-0.536-2.83-1.607-3.902C80.387,50.536,79.085,50,77.555,50z M54.315,72.937V83.72c0,2.173-1.762,3.935-3.935,3.935H49.62\n\t\tc-2.173,0-3.935-1.762-3.935-3.935V72.937c-2.31-1.443-3.852-4.001-3.852-6.925c0-4.511,3.657-8.167,8.167-8.167\n\t\ts8.167,3.657,8.167,8.167C58.167,68.937,56.625,71.495,54.315,72.937z\"/>\n</g>\n</svg>\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/danielo515/2click2edit/ClickListener.js": {
            "text": "/*\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\ntype: application/javascript\nmodule-type: widget\n\nThis widgets adds an double click event listener to its parent\n\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ClickListener = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nClickListener.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nClickListener.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar self = this;\n    /*Since the event listener have been added to the parent, the \"this\" property is pointing to the\n    wrong object, we should call our edit function with our widget object set as the this property.*/\n    parent.addEventListener(\"dblclick\",function(event){self.editTiddler.call(self,event)});\n};\n\nClickListener.prototype.editTiddler = function(event) {\n    this.dispatchEvent({type: \"tm-edit-tiddler\", param: this.getVariable(\"currentTiddler\")});    \n};\n\n/*\nCompute the internal state of the widget\n*/\nClickListener.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nClickListener.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.click = ClickListener;\n\n})();",
            "title": "$:/plugins/danielo515/2click2edit/ClickListener.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/danielo515/2click2edit/readme": {
            "title": "$:/plugins/danielo515/2click2edit/readme",
            "text": "This plugin adds the ability to edit tiddlers by double clicking on its body.\nJust try to edit any tiddler shown here by double clicking on it.\n\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \nfor it officially.\n"
        },
        "$:/plugins/danielo515/2click2edit/ui/ViewTemplate": {
            "tags": "$:/tags/ViewTemplate",
            "title": "$:/plugins/danielo515/2click2edit/ui/ViewTemplate",
            "type": "text/vnd.tiddlywiki",
            "text": "<$click>"
        }
    }
}
.matched{background-color:yellow}
.tw-context {/*border:1px solid;
  /*word-break: break-all; word-wrap: break-word*/}
{
    "tiddlers": {
        "$:/plugins/ebalster/condition/changelog": {
            "text": "!!Version 0.1.1 — December 30, 2017\n\n* Fix an error when refreshing the condition widget.\n* Fix \"match\" attribute not working as expected.\n\n\n!!Version 0.1.0 — December 29, 2017\n\n* Initial implementation.\n* Includes $if, $else, $else-if\n* Common code in condition.js",
            "title": "$:/plugins/ebalster/condition/changelog",
            "tags": "",
            "modified": "20171230165117169",
            "created": "20171230164920491"
        },
        "$:/plugins/ebalster/condition/license": {
            "text": "!!The MIT License (MIT)\n\nCopyright (c) 2017 Evan Balster\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/ebalster/condition/license",
            "tags": "",
            "revision": "0",
            "modified": "20171230044506791",
            "created": "20171230044445712",
            "caption": "license"
        },
        "$:/plugins/ebalster/condition/readme": {
            "text": "The ''Condition'' plugin for TiddlyWiki, version {{$:/plugins/ebalster/condition!!version}}, by Evan Balster.\n\nThis plugin defines widgets that will either show or hide their contents depending on a condition.\n\nUnlike the closely-related reveal widget, condition widgets do //not// retain their content, and do not support animation or popups.  Conditions may be based on variables, macros or filtered attributes.  It can also be used with the [[Formula Plugin]].\n\n\n!!Truthiness\n\nTruthiness is a simple rule for whether a value triggers an \"if\" widget or not.  Values are \"truthy\" if they do not match any of the \"falsy\" values below:\n\n* The number `0`, including any decimal point.\n* `false`\n* `undefined`\n* `null`\n* Blank (no text)\n\nThis matching is case-insensitive, and any whitespace before or after the value will be ignored.\n\n\n!!If Widget\n\nThe `$if` widget will show its content based on whether a value is \"truthy\", or matches another value.\n\n|Attribute|Meaning|h\n|value|''Required.'' Content is shown if `value` is truthy.|\n|match|Optional. If present, `value` and `match` must equal //exactly// for content to be shown. (Truthiness doesn't matter.)|\n|not|Inverts the condition, so the value will be shown if it would be hidden and vice versa.|\n\nFor example,\n\n```\n<$if not value={{$:/StoryList}}>\nNo tiddlers are open right now!\n</$if>\n```\n\n\n!!Else Widget\n\nThe `$else` widget has no attributes.  It must be placed after one of the conditional widgets listed below, and will only show its contents if the preceding widget is //not// showing its content.\n\n|After...|Show contents when...|h\n|`$if`<br/>`$else-if`|None of the previous if-conditions was true.|\n|`$list`|The list is empty. `$else` can be used instead of emptyMessage.|\n|`$reveal`|The contents of the reveal widget are hidden.|\n|`$else`|An else after an else will //never// be shown.|\n\nFor example:\n\n```\n<$if value={{{[tag[Note]]}}}>\n!!My notes:\n  <$list filter=\"[tag[Note]]\">\n    - {{!!title}}\n  </$list>\n</$if>\n<$else>\n!!I don't have any notes...\n</$else>\n```\n\nNote that the else widget can't have any blank lines between it and the preceding widget.\n\n\n!!Else-If Widget\n\nThe `$else-if` widget is a combination of the `$else` and `$if` widgets, and has the same attributes as the `$if` widget.  Its content will only be displayed if the previous widget is //not// showing its content //and// the `$if`-condition is true.\n\n`$else-if` widgets can be used to perform a \"chain\" of tests, showing some text based on the first condition that passes (or fails).  For example:\n\n```\nSomething approaches...\n\n<$if      value={{!!animal}} match=cat>  Meow!  </$if>\n<$else-if value={{!!animal}} match=dog>  Bark!  </$else-if>\n<$else-if value={{!!animal}} match=bird> Tweet! </$else-if>\n<$else> This isn't like any animal you've seen before. </$else>\n```\n\n\n!!Help & Support\n\nThis plugin is a work in progress; seek help with it on the TiddlyWiki Google Group:  https://groups.google.com/forum/#!forum/tiddlywiki\n\nOr E-mail me directly: [[evan@imitone.com|mailto://evan@imitone.com]]",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/ebalster/condition/readme",
            "tags": "",
            "revision": "0",
            "modified": "20171230052355854",
            "created": "20171230044517252",
            "caption": "readme"
        },
        "$:/plugins/ebalster/condition/repack": {
            "text": "Repacking command (use this in the browser console to repack the plugin)\n\n<pre><code>$tw.utils.repackPlugin(\"$:/plugins/ebalster/condition\", (= \"[\" & textjoin(\",\",\n TRUE,\n [prefix[$:/plugins/ebalster/condition/]addprefix[\"]addsuffix[\"]]) & \"]\" =));\n</code></pre>\n\nVersion: <$edit-text tiddler=\"$:/plugins/ebalster/condition\" field=\"version\" />",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/ebalster/condition/repack",
            "tags": "",
            "revision": "0",
            "modified": "20171230165309317",
            "created": "20171230044112191"
        },
        "$:/plugins/ebalster/condition/widgets/condition.js": {
            "text": "/*\\\ntitle: $:/plugins/ebalster/condition/widgets/condition.js\ntype: application/javascript\nmodule-type: widget\n\nBase class for condition widgets.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ConditionWidget = function(parseTreeNode,options) {\n\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nConditionWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConditionWidget.prototype.render = function(parent,nextSibling) {\n    this.parentDomNode = parent;\n    this.computeAttributes();\n    this.execute();\n    this.rerender(parent,nextSibling);\n};\n\nConditionWidget.prototype.rerender = function(parent,nextSibling) {\n\tthis.removeChildDomNodes();\n\tif (this.conditionError) {\n\t\t// Show an error.\n\t\tvar parseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t}, children: [\n\t\t\t{type: \"text\", text: this.conditionError}\n\t\t]}];\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t}\n\telse if (this.isOpen) {\n\t\t// Construct and render the child widgets.\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t}\n\telse {\n\t\t// Destroy the child widgets.\n\t\tthis.children = [];\n\t}\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget (default behavior)\n*/\nConditionWidget.prototype.execute = function() {\n\tthis.executeIf(\"$condition\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nConditionWidget.prototype.refresh = function(changedTiddlers) {\n\tvar currentlyOpen = this.isOpen;\n\tvar changedAttributes = this.computeAttributes();\n\tthis.execute();\n\tif(this.isOpen !== currentlyOpen) {\n\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\tthis.rerender(this.parentDomNode,nextSibling);\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nUtility: Is a value \"truthy\"?\n*/\nConditionWidget.prototype.valueIsTruthy = function(value) {\n\t// It's truthy if it's not falsy, ie, undefined, false, blank or zero.\n\treturn !(/^\\s*(undefined|false|null|0+|0*\\.0+|0+\\.0*|)\\s*$/i.test(value));\n};\n\n/*\nUtility: Find a preceding non-text widget for an \"else\" widget.\n*/\nConditionWidget.prototype.findPrecedingConditionWidget = function() {\n\tvar siblings = (this.parentWidget ? this.parentWidget.children : null);\n\tvar sibling;\n\tif (siblings) {\n\t\tfor (var i = siblings.indexOf(this)-1; i >= 0; --i) {\n\t\t\tsibling = siblings[i];\n\t\t\tif (sibling.parseTreeNode.type == \"text\") continue;\n\t\t\tif (sibling.isOpen != null || sibling.list != null) return sibling;\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nUtility: Test if another widget triggers an \"else\"; ie, false conditions, closed reveals, empty lists.\n*/\nConditionWidget.prototype.widgetTriggersElse = function(widget) {\n\t// Condition widgets\n\tif (widget.triggerElse != null) return widget.triggerElse;\n\t// Reveal widget\n\tif (widget.isOpen != null) return !widget.isOpen;\n\t// List widget\n\tif (widget.list != null) return (widget.list instanceof Array) && widget.list.length == 0;\n};\n\n/*\nUtility: Execute as an \"else\" condition, computing isOpen and conditionError accordingly.\n*/\nConditionWidget.prototype.executeElse = function(widgetName) {\n\tthis.isOpen = false;\n\tthis.conditionError = null;\n\tthis.triggerElse = false;\n\tvar predicate = this.findPrecedingConditionWidget();\n\tif (!predicate) {\n\t\tthis.conditionError = (widgetName||\"$else\") + \" widget must follow $if, $else-if, $reveal or $list.\";\n\t\treturn;\n\t}\n\tthis.isOpen = this.widgetTriggersElse(predicate);\n};\n\n/*\nUtility: Execute as an \"if\" condition, computing isOpen and conditionError accordingly.\n*/\nConditionWidget.prototype.executeIf = function(widgetName) {\n\tthis.isOpen = false;\n\tthis.conditionError = null;\n\tthis.triggerElse = false;\n    // Re-check our \"if\" condition.\n\tvar value = this.getAttribute(\"value\");\n\tvar match = this.getAttribute(\"match\");\n\tif (value == null) {\n\t\tthis.conditionError = (widgetName||\"$condition\") + \" widget requires a 'value' attribute.\";\n\t\treturn;\n\t}\n\telse if (match == null) {\n\t\t// Open if the value is truthy.\n\t\tthis.isOpen = this.valueIsTruthy(value);\n\t}\n\telse {\n\t\tthis.isOpen = (value == match);\n\t}\n\tif (this.getAttribute(\"not\")) {\n\t\tthis.isOpen = !this.isOpen;\n\t}\n\tthis.triggerElse = !this.isOpen;\n};\n\nexports.condition = ConditionWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/ebalster/condition/widgets/condition.js",
            "tags": "",
            "revision": "0",
            "module-type": "widget",
            "modified": "20171230024403999",
            "description": "As the $vars widget, but each attribute is interpreted as a formula.",
            "created": "20171230024342810"
        },
        "$:/plugins/ebalster/condition/widgets/elif.js": {
            "text": "/*\\\ntitle: $:/plugins/ebalster/condition/widgets/if.js\ntype: application/javascript\nmodule-type: widget\n\nIf-condition widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ConditionWidget = require(\"$:/plugins/ebalster/condition/widgets/condition.js\").condition;\n\nvar ElifWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElifWidget.prototype = new ConditionWidget();\n\n/*\nCompute the internal state of the widget\n*/\nElifWidget.prototype.execute = function() {\n\tthis.executeElse(\"$else-if\");\n\tif (this.isOpen) this.executeIf(\"$if\");\n};\n\nexports[\"else-if\"] = ElifWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/ebalster/condition/widgets/elif.js",
            "tags": "",
            "revision": "0",
            "module-type": "widget",
            "modified": "20171230040911552",
            "description": "As the $vars widget, but each attribute is interpreted as a formula.",
            "created": "20171230040903429"
        },
        "$:/plugins/ebalster/condition/widgets/else.js": {
            "text": "/*\\\ntitle: $:/plugins/ebalster/condition/widgets/if.js\ntype: application/javascript\nmodule-type: widget\n\nIf-condition widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ConditionWidget = require(\"$:/plugins/ebalster/condition/widgets/condition.js\").condition;\n\nvar ElseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElseWidget.prototype = new ConditionWidget();\n\n/*\nCompute the internal state of the widget\n*/\nElseWidget.prototype.execute = function() {\n\t// Execute as an else condition.\n\tthis.executeElse(\"$else\");\n};\n\nexports.else = ElseWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/ebalster/condition/widgets/else.js",
            "tags": "",
            "revision": "0",
            "module-type": "widget",
            "modified": "20171230025331858",
            "description": "As the $vars widget, but each attribute is interpreted as a formula.",
            "created": "20171230025320439"
        },
        "$:/plugins/ebalster/condition/widgets/if.js": {
            "text": "/*\\\ntitle: $:/plugins/ebalster/condition/widgets/if.js\ntype: application/javascript\nmodule-type: widget\n\nIf-condition widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ConditionWidget = require(\"$:/plugins/ebalster/condition/widgets/condition.js\").condition;\n\nvar IfWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nIfWidget.prototype = new ConditionWidget();\n\n/*\nCompute the internal state of the widget\n*/\nIfWidget.prototype.execute = function() {\n\tthis.executeIf(\"$if\");\n};\n\nexports.if = IfWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/ebalster/condition/widgets/if.js",
            "tags": "",
            "revision": "0",
            "module-type": "widget",
            "modified": "20171230004310622",
            "description": "As the $vars widget, but each attribute is interpreted as a formula.",
            "created": "20171230002741585"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/ebalster/formula/coerce.js": {
            "title": "$:/plugins/ebalster/formula/coerce.js",
            "created": "20180113183000431",
            "description": "",
            "modified": "20180112071139424",
            "module-type": "library",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "/*\\\ntitle: $:/plugins/ebalster/formula/coerce.js\ntype: application/javascript\nmodule-type: macro\n\nType coercion logic for formulas.\nSupported types for coercion:\n\n* text\n* number\n* boolean\n* array\n* date\n\nAdditional types that may be coerced:\n\n* undefined\n* regular expression\n\n\\*/\n(function(){\n\n\"use strict\";\n\n\n// Value-to-text coercion.\nvar _ToText = {\n\t\"undefined\" : function(v,ctx) {return \"undefined\";},\n\t\"string\"    : function(v,ctx) {return v;},\n\t\"number\"    : function(v,ctx) {return ctx.formats.number(v);},\n\t\"symbol\"    : function(v,ctx) {return String(v);},\n\t\"function\"  : function(v,ctx) {return \"function\" + (v.formulaSrc || \" [built-in]\");},\n\t\"boolean\"   : function(v,ctx) {return (v ? \"TRUE\" : \"FALSE\");},\n\t\"object\"    : function(v,ctx) {\n\t\tif (v instanceof Date)   return ctx.formats.date(v);\n\t\tif (v instanceof Array)  return ctx.formats.array(v,ctx);\n\t\tif (v instanceof RegExp) return String(v);\n\t\tif (v instanceof Error)  throw v;\n\t\treturn JSON.stringify(v); // Last resort\n\t},\n};\n\n// Value-to-number coercion.\nvar _ToNum = {\n\t\"undefined\" : function(v,ctx) {throw \"Cannot convert undefined value to number!\";},\n\t\"string\"    : function(v,ctx) {\n\t\tvar n = Number(v);\n\t\tif (isNaN(n)) throw \"Cannot convert \\\"\"+v+\"\\\" to number!\";\n\t\treturn n;\n\t},\n\t\"number\"    : function(v,ctx) {return v;},\n\t\"symbol\"    : function(v,ctx) {throw \"Cannot convert symbol to number!\";},\n\t\"function\"  : function(v,ctx) {throw \"Cannot convert function to number!\";},\n\t\"boolean\"   : function(v,ctx) {return (v ? 1 : 0);},\n\t\"object\"    : function(v,ctx) {throw \"Cannot convert \\\"\" + _ToText.object(v,ctx) + \"\\\" to number!\";},\n};\n\n// Value-to-boolean coercion.\nvar _ToBool = {\n\t\"undefined\" : function(v,ctx) {return false;},\n\t\"string\"    : function(v,ctx) {return !(/^\\s*(undefined|false|null|0+|0*\\.0+|0+\\.0*|)\\s*$/i.test(v));},\n\t\"number\"    : function(v,ctx) {return Boolean(v);},\n\t\"symbol\"    : function(v,ctx) {return Boolean(v);},\n\t\"function\"  : function(v,ctx) {return true;},\n\t\"boolean\"   : function(v,ctx) {return v;},\n\t\"object\"    : function(v,ctx) {return Boolean(v);},\n};\n\nexports.ToSelf = function ToSelf(v,ctx) {return v;};\nexports.ToText = function ToText(v,ctx) {return _ToText[typeof v](v,ctx);};\nexports.ToNum  = function ToNum (v,ctx) {return _ToNum [typeof v](v,ctx);};\nexports.ToBool = function ToBool(v,ctx) {return _ToBool[typeof v](v,ctx);};\n\nexports.ToDate = function ToDate(v,ctx) {\n\tif (v instanceof Date) return v;\n\tthrow \"Cannot auto-convert \\\"\" + exports.ToText(v,ctx) + \"\\\" to a date!\";\n};\n\nvar rxJsRegex = /^\\/((?:[^\\\\\\/\\[]|\\[(?:[^\\]]|\\\\\\])*\\]|\\\\.)+)\\/([a-z]*)$/;\nvar rxTwRegexFlags = /^\\(\\?[a-z]*\\)|\\(\\?[a-z]*\\)$/i;\n\nexports.ToRegex = function ToRegex(v,ctx) {\n\tif (v instanceof RegExp) return v;\n\tif (typeof v === \"string\") {\n\t\tv = v.trim();\n\t\t// Try JavaScript style regex\n\t\tvar match = rxJsRegex.exec(v);\n\t\tif (match) {\n\t\t\treturn new RegExp(term[1].replace(\"\\\\/\", \"/\"), term[2]);\n\t\t}\n\t\t// Try TiddlyWiki style regex\n\t\tmatch = rxTwRegexFlags.exec(v);\n\t\tif (match) {\n\t\t\tvar flagLen = match[0].length;\n\t\t\tvar flags = match[0].substr(2, match[0].length-3);\n\t\t\tif (match.index == 0) return new RegExp(v.substr(flagLen), flags);\n\t\t\telse                  return new RegExp(v.substr(0, v.length-flagLen), flags);\n\t\t}\n\t\treturn new RegExp(v, \"g\");\n\t\t\n\t}\n\tthrow \"Cannot auto-convert \\\"\" + exports.ToText(v,ctx) + \"\\\" to a regular expression!\";\n};\nexports.ToArray = function ToArray(v,ctx) {\n\tif (v instanceof Array) return v;\n\tthrow \"Cannot auto-convert \\\"\" + exports.ToText(v,ctx) + \"\\\" to an array!\";\n};\nexports.ToFunc = function ToFunc(v,ctx) {\n\tif (v instanceof Function) return v;\n\tthrow \"Cannot convert \\\"\" + exports.ToText(v,ctx) + \"\\\" to a function!\";\n};\n// Maybe add ToRegex\n\n\n// Build a coerce rule from a source string.\nvar CoerceFuncs = {\n\tT: exports.ToText,\n\tN: exports.ToNum,\n\tB: exports.ToBool,\n\tA: exports.ToArray,\n\tD: exports.ToDate,\n\tR: exports.ToRegex,\n\tF: exports.ToFunc,\n\t_: exports.ToSelf,\n};\n\nfunction BuildCoerceRule(src) {\n\tvar rule = {\n\t\tmain: [],\n\t\textra: [],\n\t};\n\tvar i = 0, func;\n\t// Main part\n\twhile (i < src.length) {\n\t\tfunc = CoerceFuncs[src[i]]; ++i;\n\t\tif (func) {rule.main.push(func); continue;}\n\t\tif (src[i-1] == '+') break;\n\t\tthrow \"Unknown coerce rule: '\"+src[i-1]+\"'\";\n\t}\n\t// Extra arguments (loops)\n\twhile (i < src.length) {\n\t\tfunc = CoerceFuncs[src[i]]; ++i;\n\t\tif (func) {rule.extra.push(func); continue;}\n\t\tthrow \"Unknown coerce rule: '\"+src[i-1]+\"'\";\n\t}\n\treturn rule;\n}\n\nvar NoCoerce = {rule: {main:[], extra:[]}, gen: []};\nvar CoerceCache = {'': NoCoerce};\n\nfunction GetCoerceCache(src) {\n\tif (!CoerceCache[src]) {\n\t\ttry {\n\t\t\tCoerceCache[src] = {rule: BuildCoerceRule(src), gen: []};\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow err + \" in rule string '\" + src + \"'\";\n\t\t}\n\t}\n\treturn CoerceCache[src];\n}\n\n// Generate the coercing function array.\nfunction GenCoerceFuncs(rule,len) {\n\tvar result = [], i = 0, x = 0;\n\tresult = rule.main;\n\tif (rule.extra.length) {\n\t\twhile (result.length < len) result = result.concat(rule.extra);\n\t}\n\treturn result;\n}\n\n// Get an array of coercing (ToXXX) functions based on the function.\nexports.GetCoerceFuncs = function GetCoerceFuncs(func,args) {\n\t// Possibly set up coercion for this function.\n\tif (!func._coerce) {\n\t\tif (func.inCast) {\n\t\t\ttry {\n\t\t\t\tfunc._coerce = GetCoerceCache(func.inCast);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tthrow err + \" for function \" + func.toString();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfunc._coerce = NoCoerce;\n\t\t}\n\t}\n\tvar gen = func._coerce.gen[args.length];\n\tif (gen) return gen;\n\tgen = GenCoerceFuncs(func._coerce.rule, args.length);\n\tfunc._coerce.gen[args.length] = gen;\n\treturn gen;\n};\n\n\n// Coerce\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/compile.js": {
            "title": "$:/plugins/ebalster/formula/compile.js",
            "created": "20171210195223539",
            "description": "",
            "modified": "20171211181652443",
            "module-type": "library",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n\"use strict\";\n\nvar Nodes  = require(\"$:/plugins/ebalster/formula/nodes.js\");\n\nvar rxDatumIsFormula      = /^\\s*\\(=.*=\\)\\s*$/;\nvar rxDatumIsTrue         = /^s*TRUE\\s*$/i;\nvar rxDatumIsFalse        = /^s*FALSE\\s*$/i;\n\nvar rxLet               = /let/gi;\n\nvar rxSkipInert         = /(\\s*|\\/\\/.*?([\\r\\n]|$)|\\/\\*[\\s\\S]*?\\*\\/)*/g;\nvar rxNotWhitespace     = /[^\\s]+/g;\nvar rxOperandFilter     = /\\[(([^\\[\\]]|\\[[^\\[\\]]*\\])+(\\](\\s*[+-])?\\s*\\[)?)+\\]/g;\nvar rxOperandTransclusion =     /\\{\\{([^\\{\\}]+)\\}\\}/g;\nvar rxDatumIsTransclusion = /^\\s*\\{\\{([^\\{\\}]+)\\}\\}\\s*$/;\nvar rxOperandVariable     =     /<<([^<>]+)>>/g;\nvar rxDatumIsVariable     = /^\\s*<<[^<>]+>>\\s*$/;\nvar rxCellName            = /\\$?([A-Z]{1,2})\\$?([0-9]+)/g;\nvar rxCellRange           = /\\$?([A-Z]{1,2})\\$?([0-9]+):\\$?([A-Z]{1,2})\\$?([0-9]+)/g;\nvar rxIdentifier          = /[_a-zA-Z][_a-zA-Z0-9]*/g;\nvar rxKeyword             = /(function|let|for|foreach|if|then|else|while|do|this|self|currentTiddler)/gi;\n\nvar rxUnsignedDecimal =          /((\\d+(\\.\\d*)?)|(\\.\\d+))/g;\nvar rxDecimal         =     /[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))/g;\nvar rxDatumIsDecimal  = /^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/;\n\nvar rxDate            =     /\\d{2,4}-\\d{2}-\\d{2}(\\s*\\d{1,2}:\\d{2}(:\\d{2}(.\\d+)?)?)?/g;\nvar rxDatumIsDate     = /^\\s*\\d{2,4}-\\d{2}-\\d{2}(\\s*\\d{1,2}:\\d{2}(:\\d{2}(.\\d{3})?)?)?\\s*$/;\nvar rxRegex           =     /\\/((?:[^\\\\\\/\\[]|\\[(?:[^\\]]|\\\\\\])*\\]|\\\\.)+)\\/([a-z]*)/g;\nvar rxDatumIsRegex    = /^\\s*\\/((?:[^\\\\\\/\\[]|\\[(?:[^\\]]|\\\\\\])*\\]|\\\\.)+)\\/([a-z]*)\\s*$/;\nvar rxDatumIsTwDate   = /^([0-9]{4})(1[0-2]|0[1-9])(3[01]|[12][0-9]|0[1-9])(2[0-3]|[01][0-9])([0-5][0-9])([0-5][0-9])([0-9]{3})?$/;\nvar rxDateFragment    = /\\d+/g;\n\nvar rxString          = /(\"(\\\\.|[^\"\\\\])*\"|'(\\\\.|[^'\\\\])*')/g;\nvar rxEscapeSequence  = /\\\\([a-tv-z0\"'\\\\]|u[a-fA-F0-9]{0,4}|$)/g;\n\nvar formulaFunctions   = null;\nvar operatorsUnaryPre  = null;\nvar operatorsUnaryPost = null;\nvar operatorsBinary    = null;\nvar operatorsTernary   = null;\n\nfunction Parser(src)\n{\n\tthis.src = src;\n\tthis.pos = 0;\n\tthis.end = src.length;\n\tthis.locals = {};\n\tthis.localStack = [];\n\tthis.assignStack = [];\n}\nParser.prototype.getChar = function()\n{\n\treturn this.src.charAt(this.pos);\n};\nParser.prototype.nextGlyph = function()\n{\n\tthis.skipInert();\n\tif (this.pos >= this.end) return '';\n\t++this.pos;\n\treturn this.src.charAt(this.pos-1);\n};\nParser.prototype.remaining = function()\n{\n\treturn this.src.substring(this.pos, this.end);\n};\nParser.prototype.nextToken = function()\n{\n\tthis.skipInert();\n\trxNotWhitespace.lastIndex = this.pos;\n\trxNotWhitespace.test(this.src);\n\treturn this.src.substring(this.pos, rxNotWhitespace.lastIndex);\n};\nParser.prototype.match_here = function(regex)\n{\n\t// TODO this is doing much more work than is necessary\n\tregex.lastIndex = this.pos;\n\tvar result = regex.exec(this.src);\n\tif (!result || result.index != this.pos || result.index+result[0].length > this.end) return null;\n\tthis.pos = regex.lastIndex;\n\treturn result;\n};\nParser.prototype.skipInert = function()\n{\n\trxSkipInert.lastIndex = this.pos;\n\trxSkipInert.test(this.src);\n\tthis.pos = Math.min(rxSkipInert.lastIndex, this.end);\n};\n\n// Push a new set of local variables onto the parser's stack.\nParser.prototype.pushLocals = function(assigns) {\n\tvar id;\n\tvar newLocals = {};\n\tthis.localStack.push(this.locals); for (id in this.locals) newLocals[id] = 0;\n\tthis.assignStack.push(assigns);    for (id in assigns)     newLocals[id] = 0;\n\tthis.locals = newLocals;\n};\n\n// Pop the last set of local variables off the parser's stack and return usage-counts.\nParser.prototype.popLocals = function() {\n\tvar id, count, usage = {captures: {}, assigns: {}},\n\t\tassigns = this.assignStack.pop(),\n\t\toldLocals = this.localStack.pop();\n\tfor (id in this.locals) {\n\t\tcount = this.locals[id];\n\t\tif (count > 0) {\n\t\t\tif (assigns[id]) {\n\t\t\t\tusage.assigns[id] = count;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tusage.captures[id] = count;\n\t\t\t\toldLocals[id] += count;\n\t\t\t}\n\t\t}\n\t}\n\tthis.locals = oldLocals;\n\treturn usage;\n};\n\nvar initialize = function() {\n\tformulaFunctions = {};\n\tvar operators = {};\n\t$tw.modules.applyMethods(\"formula-function\", formulaFunctions);\n\t$tw.modules.applyMethods(\"formula-operator\", operators);\n\n\toperatorsUnaryPre = {};\n\toperatorsUnaryPost = {};\n\toperatorsBinary = {}; //{}; //{plus: {arity: 2, precedence: 10,   operator: \"+\", function: \"add\"}};\n\toperatorsTernary = {};\n\tfor (var opName in operators)\n\t{\n\t\tvar op = operators[opName];\n\n\t\t// Bind the associated function.  \n\t\tvar func = formulaFunctions[op.function];\n\t\tif (!func) continue;\n\t\top.func_bind = func;\n\n\t\t// Sort the op by arity and position.\n\t\tswitch (op.arity)\n\t\t{\n\t\tcase 2:           operatorsBinary  [opName] = op; break;\n\t\tcase 3:           operatorsTernary [opName] = op; break;\n\t\tcase 1:\n\t\t\tswitch (op.position)\n\t\t\t{\n\t\t\t\tcase \"pre\":  operatorsUnaryPre [opName] = op; break;\n\t\t\t\tcase \"post\": operatorsUnaryPost[opName] = op; break;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n};\n\n\nexports.compileExpression = function(expression) {\n\n\t// Create a parser and process the formula as an expression.\n\tvar parser = new Parser(expression);\n\n\tvar operand = buildExpression(parser);\n\n\treturn operand;\n};\n\nexports.compileDatum = function(datum) {\n\t\n\tvar parser, term;\n\n\t// Short-hand formula\n\tif (datum.charAt(0) == \"=\") {\n\t\tparser = new Parser(datum);\n\t\tparser.pos = 1;\n\t\treturn buildExpression(parser);\n\t}\n\n\t// Could be a TiddlyWiki date?\n\tif (rxDatumIsTwDate.test(datum)) {\n\t\treturn new Nodes.Date($tw.utils.parseDate(datum));\n\t}\n\n\t// Could be a number?\n\tif (rxDatumIsDecimal.test(datum)) {\n\t\t// Treat as a number constant\n\t\treturn new Nodes.Number(Number(datum));\n\t}\n\n\t// Could be a formula?\n\tif (rxDatumIsFormula.test(datum)) {\n\t\t// Parse contents as a formula\n\t\tparser = new Parser(datum);\n\t\tparser.pos = datum.indexOf(\"=\")+1;\n\t\tparser.end = datum.lastIndexOf(\"=\");\n\t\treturn buildExpression(parser);\n\t}\n\n\t// Could be a transclusion or variable?\n\tif (rxDatumIsTransclusion.test(datum) ||\n\t\t\trxDatumIsVariable.test(datum)) {\n\t\t// Defer to the operand parser...\n\t\tparser = new Parser(datum);\n\t\treturn buildOperand(parser);\n\t}\n\n\t// Booleans?\n\tif (rxDatumIsFalse.test(datum)) return new Nodes.Bool(false);\n\tif (rxDatumIsTrue .test(datum)) return new Nodes.Bool(true);\n\n\t// Date?\n\tif (rxDatumIsDate.test(datum))\n\t{\n\t\trxDateFragment.lastIndex = 0;\n\t\tvar parts = [];\n\t\twhile (true)\n\t\t{\n\t\t\tvar res = rxDateFragment.exec(datum);\n\t\t\tif (!res) break;\n\t\t\tparts.push(parseInt(res[0]));\n\t\t}\n\t\tif (parts.length)\n\t\t{\n\t\t\treturn new Nodes.Date(new Date(\n\t\t\t\tparts[0], (parts[1] || 1)-1, parts[2] || 1,\n\t\t\t\tparts[3] || 0, parts[4] || 0, parts[5] || 0, parts[6] || 0));\n\t\t}\n\t}\n\n\t// Regex?\n\tif ((term = rxDatumIsRegex.exec(datum))) {\n\t\treturn new Nodes.Regex(new RegExp(term[1].replace(\"\\\\/\", \"/\"), term[2]));\n\t}\n\n\t// Otherwise, treat as a string constant\n\treturn new Nodes.Text(datum);\n};\n\nexports.compileFormula = function(formulaString)\n{\n\t// Process the formula string into a root operand\n\ttry {\n\t\treturn exports.compileExpression(formulaString);\n\t}\n\tcatch (err) {\n\t\tthrow \"CompileError: \" + err;\n\t}\n};\n\n\n// Compile an operator\nfunction parseOperator(parser, operatorGroup) {\n\n\t// Skip more whitespace\n\tparser.skipInert();\n\n\tvar result = null;\n\n\t// Find the longest operator matching the current text.\n\tfor (var opName in operatorGroup)\n\t{\n\t\tvar op = operatorGroup[opName];\n\t\tif (parser.src.substr(parser.pos, op.operator.length) == op.operator\n\t\t\t&& parser.pos+op.operator.length <= parser.end)\n\t\t{\n\t\t\tif (!result || result.operator.length < op.operator.length) result = op;\n\t\t}\n\t}\n\n\tif (result) parser.pos += result.operator.length;\n\n\treturn result;\n}\n\n// Parse a text reference.  This function is pased on $tw.utils.getTextReference.\nfunction buildTextReference(textReference) {\n\tvar tr = $tw.utils.parseTextReference(textReference);\n\tvar title;\n\tif (tr.title) title = new Nodes.Text(tr.title);\n\telse          title = new Nodes.Variable(new Nodes.Text(\"currentTiddler\"));\n\tif (tr.field) {\n\t\tif (tr.field == \"title\") {\n\t\t\treturn title;\n\t\t}\n\t\telse {\n\t\t\treturn new Nodes.TranscludeField(title, new Nodes.Text(tr.field));\n\t\t}\n\t}\n\telse if (tr.index) {\n\t\treturn new Nodes.TranscludeIndex(title, new Nodes.Text(tr.index));\n\t}\n\telse {\n\t\treturn new Nodes.TranscludeText(title);\n\t}\n}\n\n// Parse a formula.\nfunction buildExpression(parser, nested) {\n\t\n\t// Make sure math functions are initialized\n\tif (!formulaFunctions) initialize();\n\n\tparser.skipInert();\n\n\t// Expression compiler state\n\tvar operands = [];\n\tvar operators = [];\n\tvar precedences = [];\n\tvar operand = null, callArgs;\n\t\n\t// Unary stacking function\n\tvar applyUnary = function(unary) {\n\t\toperand = new Nodes.CallJS(unary.func_bind, [operand]);\n\t};\n\n\twhile (true)\n\t{\n\t\tvar unaries = [];\n\n\t\t// Prefix operators\n\t\twhile (true)\n\t\t{\n\t\t\tvar prefix = parseOperator(parser, operatorsUnaryPre);\n\t\t\tif (prefix) unaries.unshift(prefix);\n\t\t\telse break;\n\t\t}\n\n\t\t// Grab the operand\n\t\toperand = buildOperand(parser);\n\n\t\t// Missing operand is an error\n\t\tif (operand === null)\n\t\t{\n\t\t\tvar token = parser.nextToken();\n\t\t\tif (token && token[0] != \")\" && token[0] != \",\")\n\t\t\t\tthrow \"invalid operand \\\"\" + token + \"\\\"\";\n\t\t\telse if (operators.length)\n\t\t\t\tthrow \"missing operand after \\\"\" + operators[operators.length-1].operator + \"\\\"\";\n\t\t\telse throw \"empty expression\";\n\t\t}\n\n\t\t// Check for a function call (precedes all operators).\n\t\tcallArgs = buildArguments(parser);\n\t\tif (callArgs) operand = new Nodes.CallFunc(operand, callArgs);\n\n\t\t// Postfix operators\n\t\twhile (true)\n\t\t{\n\t\t\tvar postfix = parseOperator(parser, operatorsUnaryPost);\n\t\t\tif (postfix) unaries.push(postfix);\n\t\t\telse break;\n\t\t}\n\n\t\tunaries.forEach(applyUnary);\n\n\t\t// Operand is complete.\n\t\toperands.push(operand);\n\n\t\t// Infix operators\n\t\tvar operator = parseOperator(parser, operatorsBinary);\n\n\t\t// Missing operator ends the expression\n\t\tif (operator === null) break;\n\n\t\t// Add the operator and its precedence level.\n\t\toperators.push(operator);\n\t\tvar precedence = operator.precedence;\n\t\tif (precedences.indexOf(precedence || 0) == -1) precedences.push(precedence);\n\t}\n\n\t// Sanity check\n\tif (operands.length != operators.length+1)\n\t\tthrow \"internal error: operator/operand parsing inconsistency\";\n\n\t// Resolve operators by precedence\n\tprecedences.sort(function(a,b) {return (a>b)?-1:1;});\n\n\tfor (var j = 0; j < precedences.length; ++j)\n\t{\n\t\tvar prec = precedences[j];\n\t\tfor (var i = 0; i < operators.length; )\n\t\t{\n\t\t\t// Process only operators at the current precedence level.\n\t\t\tvar op = operators[i];\n\t\t\tif (op.precedence != prec) {++i; continue;}\n\n\t\t\t// Collapse the previous and next operands with this operator.\n\t\t\toperands[i] = new Nodes.CallJS(op.func_bind, [operands[i], operands[i+1]]);\n\t\t\toperators.splice(i, 1);\n\t\t\toperands.splice(i+1, 1);\n\t\t}\n\t}\n\n\t// Sanity check\n\tif (operators.length !== 0 || operands.length != 1)\n\t\tthrow \"internal error: resoving failed; \" + operands.length + \" operands and \" + operators.length + \" operators remain\";\n\n\t// For non-nested expressions, throw if any tokens remain.\n\tif (!nested)\n\t{\n\t\tparser.skipInert();\n\n\t\tif (parser.pos < parser.end)\n\t\t{\n\t\t\tthrow \"expected operator, got \\\"\" + parser.nextToken() + \"\\\"\";\n\t\t}\n\t}\n\t\n\t// Otherwise return the operand directly\n\treturn operands[0];\n}\n\n// Compile a list expression, which could be function arguments or an array...\nfunction buildCommaList(parser, braces, afterHint) {\n\n\t// Is an open-brace present?\n\tparser.skipInert();\n\tif (parser.getChar() !== braces[0]) return null;\n\t++parser.pos;\n\n\t// Zero arguments?\n\tparser.skipInert();\n\tif (parser.getChar() === braces[1]) {++parser.pos; return [];}\n\t\n\tvar nodeList = [];\n\n\twhile (true)\n\t{\n\t\t// Compile an expression.\n\t\tnodeList.push(buildExpression(parser, true));\n\n\t\t// Expect close-brace or , after argument.\n\t\tvar char = parser.nextGlyph();\n\t\tif (char === braces[1]) break;\n\t\tif (char !== \",\") throw \"Expect ',' or '\" + braces[1] + \"' after \" + afterHint;\n\t}\n\n\treturn nodeList;\n}\n\n// Build an argument list.\nfunction buildArguments(parser) {\n\treturn buildCommaList(parser, \"()\", \"function argument.\");\n}\n\n// Build an array literal.\nfunction buildArrayLiteral(parser) {\n\tvar array = buildCommaList(parser, \"{}\", \"array element (use {{double braces}} for transclusions).\");\n\tif (!array) throw \"Expect '{' to begin array literal.\";\n\treturn array;\n}\n\n// Build a let or foreach expression (parser starts after the keyword)\nfunction buildLetExpression(parser) {\n\n\tif (parser.nextGlyph() !== \"(\") throw \"Expect '(' after LET.\";\n\n\t// Gradually push locals.\n\tvar assigns = {}, id, c;\n\tparser.pushLocals(assigns);\n\twhile (true) {\n\t\t// Look for a name (identifier)\n\t\tparser.skipInert();\n\t\tid = parser.match_here(rxIdentifier);\n\t\tif (!id) throw \"Expected name in LET assignment, got '\" + parser.nextToken() + \"'.\";\n\t\tid = id[0];\n\t\tif (rxKeyword.test(id)) throw \"Illegal name for LET: \" + id;\n\t\t\n\t\t// Look for an equals, then an expression.\n\t\tif (parser.nextGlyph() !== '=') throw \"Expect '=' after LET value.\";\n\n\t\t// Build the expression...  Each let can use the ones before it.\n\t\ttry {\n\t\t\tassigns[id] = buildExpression(parser, true);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow \"compiling LET '\" + id + \"': \" + err;\n\t\t}\n\t\tparser.locals[id] = 0;\n\n\t\t// Expect ) or , after argument.\n\t\tvar char = parser.nextGlyph();\n\t\tif (char == \")\") break;\n\t\tif (char != \",\") throw \"Expect ',' or ')' after LET assignment.\";\n\t}\n\n\tif (parser.nextGlyph() !== \":\") throw \"Expect ':' after LET assignment list.\";\n\tif (parser.nextGlyph() !== \"(\") throw \"Expect LET expression in parentheses after ':'.\";\n\n\t// Compile the body expression, with additional locals.\n\tvar body = buildExpression(parser, true);\n\tvar usage = parser.popLocals();\n\n\t// TODO could examine usage.assigns and letLocals to see if any values were unused.\n\n\tif (parser.nextGlyph() !== \")\") throw \"Expect ')' after LET expression.\";\n\n\treturn new Nodes.LetVars(assigns,body);\n}\n\n// Build a function (parser starts after the keyword \"function\")\nfunction buildFunction(parser) {\n\t\n\tvar srcBegin = parser.pos;\n\n\tif (parser.nextGlyph() !== \"(\") throw \"Expect '(' after 'function'.\";\n\n\tparser.skipInert();\n\n\t// Build the parameter list, if any.\n\tvar params = [], assigns = {};\n\tif (parser.getChar() === \")\") {++parser.pos;}\n\telse while (true)\n\t{\n\t\t// Get a parameter name (identifier).\n\t\tvar param = parser.match_here(rxIdentifier);\n\t\tif (!param) throw \"Expect list of parameter names after 'function'.\";\n\t\tparam = param[0];\n\t\tif (rxKeyword.test(param)) throw \"Illegal parameter name: \" + param;\n\t\tparams.push(param);\n\t\tif (assigns[param]) throw \"Parameter name used twice: \" + param;\n\t\tassigns[param] = true;\n\n\t\t// Expect ) or , after argument.\n\t\tvar char = parser.nextGlyph();\n\t\tif (char == \")\") break;\n\t\tif (char != \",\") throw \"Expect ',' or ')' after function parameter name.\";\n\n\t\t// Skip inert stuff\n\t\tparser.skipInert();\n\t}\n\n\tif (parser.nextGlyph() !== \":\") throw \"Expect ':' after function parameter list.\";\n\tif (parser.nextGlyph() !== \"(\") throw \"Expect function body beginning with '(' after ':'.\";\n\n\t// Compile the body expression, with parameters as locals.  Closures are NOT currently supported.\n\tparser.pushLocals(assigns);\n\tvar body = buildExpression(parser, true);\n\tvar usage = parser.popLocals();\n\tvar captures = usage.captures;\n\n\tif (parser.nextGlyph() !== \")\") throw \"Expect ')' after function body.\";\n\n\t// Create the function object (must be called with this = context)\n\tvar func = function() {\n\t\tvar locals = Object.assign({}, func.captured || {});\n\t\tfor (var i = 0; i < arguments.length; ++i) locals[params[i]] = arguments[i];\n\t\treturn body.compute(this.let(locals));\n\t};\n\t//func.params = params;\n\tfunc.min_args = params.length;\n\tfunc.max_args = params.length;\n\tfunc.formulaSrc = parser.src.substring(srcBegin, parser.pos);\n\treturn new Nodes.Function(func, captures);\n}\n\n// Compile an operand into a function returning the operand value.\nfunction buildOperand(parser) {\n\n\tvar term;\n\t\n\t// Skip whitespace & comments\n\tparser.skipInert();\n\n\tif (parser.pos == parser.end) return null;\n\n\tvar char = parser.getChar();\n\n\tif (char.match(/[0-9\\.+]/i))\n\t{\n\t\t// Number constant\n\t\tterm = parser.match_here(rxDecimal);\n\t\tif (term) return new Nodes.Number(Number(term[0]));\n\t\tthrow \"Invalid number: \" + parser.nextToken();\n\t}\n\telse if (char.match(/[$a-z_]/i))\n\t{\n\t\t// Cell range?\n\t\tterm = parser.match_here(rxCellRange);\n\t\tif (term) throw \"Cell ranges are currently unsupported!\";\n\n\t\t// Cell name?\n\t\tterm = parser.match_here(rxCellName);\n\t\tif (term) return new Nodes.Datum(\n\t\t\tnew Nodes.TranscludeIndex(\n\t\t\t\tnew Nodes.Variable(new Nodes.Text(\"currentTiddler\")),\n\t\t\t\tnew Nodes.Text(term[1]+term[2])));\n\n\t\t// Identifier?\n\t\tterm = parser.match_here(rxIdentifier);\n\t\tif (!term) return null;\n\n\t\tif (parser.locals[term] != undefined)\n\t\t{\n\t\t\t// Scoped variable.  We count up references to each.\n\t\t\t++parser.locals[term];\n\t\t\treturn new Nodes.ScopeVar(term[0]);\n\t\t}\n\n\t\tvar termLower = term[0].toLowerCase();\n\t\tswitch (termLower)\n\t\t{\n\t\tcase \"let\":\n\t\t\t// LET expression.\n\t\t\treturn buildLetExpression(parser);\n\n\t\tcase \"function\":\n\t\t\t// Function declaration.\n\t\t\treturn buildFunction(parser);\n\n\t\tdefault:\n\t\t\t// Function call.\n\t\t\tvar func = formulaFunctions[termLower];\n\n\t\t\tif (!func) throw \"unknown function: \" + term[0];\n\n\t\t\tvar args = buildArguments(parser);\n\n\t\t\t// Omitting arguments is only OK for constant functions\n\t\t\tif (args === null)\n\t\t\t{\n\t\t\t\tif (!func.isConstant) throw \"Expected '(' after \" + term[0];\n\t\t\t\targs = [];\n\t\t\t}\n\n\t\t\tif (func instanceof Function) {\n\t\t\t\t// Check parameter count\n\t\t\t\tif (args.length > func.length && !func.variadic)\n\t\t\t\t\tthrow \"too many arguments for \" + term[0] + \" (requires \" + func.length + \")\";\n\t\t\t\tif (args.length < func.length)\n\t\t\t\t\tthrow \"too few arguments for \" + term[0] + (func.variadic?\" (min \":\" (requires \") + func.length + \")\";\n\t\t\t}\n\t\t\telse if (func.select || func.construct) {\n\t\t\t\t// Check argument range\n\t\t\t\tif (func.max_args && args.length > func.max_args)\n\t\t\t\t\tthrow \"too many arguments for \" + term[0] + \" (max \" + func.max_args + \")\";\n\t\t\t\tif (func.min_args && args.length < func.min_args)\n\t\t\t\t\tthrow \"too few arguments for \" + term[0] + \" (min \" + func.min_args + \")\";\n\t\t\t\t\n\t\t\t\t// If a construct function is present, use it to generate an operand.\n\t\t\t\tif (func.construct) return func.construct(args);\n\n\t\t\t\t// If a select function is present, prepare to bind it with a CallJS.\n\t\t\t\tfunc = func.select(args);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow \"Function \" + term[0] + \" seems to be unusable.\";\n\t\t\t}\n\n\t\t\treturn new Nodes.CallJS(func, args);\n\t\t}\n\t}\n\telse switch (char)\n\t{\n\tcase \"(\": // Parenthesized expression\n\t\t++parser.pos;\n\t\tvar parentheses = buildExpression(parser, true);\n\t\tparser.skipInert();\n\t\tif (parser.getChar() !== \")\")\n\t\t{\n\t\t\tif (parser.pos == parser.end) throw \"missing ')' at end of formula\";\n\t\t\telse                          throw \"expected ')', got \\\"\" + parser.nextToken() + \"\\\"\";\n\t\t}\n\t\t++parser.pos;\n\t\treturn parentheses;\n\n\tcase \"'\":\n\tcase \"\\\"\": // String constant\n\t\tterm = parser.match_here(rxString);\n\t\tif (!term) throw \"Invalid string: \" + parser.nextToken();\n\t\tterm = term[0].substr(1, term[0].length-2);\n\t\tterm = term.replace(rxEscapeSequence, function(esc) {\n\t\t\tswitch (esc.charAt(1)) {\n\t\t\t\tcase '\"': return '\"';\n\t\t\t\tcase '\\'': return '\\'';\n\t\t\t\tcase '\\\\': return '\\\\';\n\t\t\t\tcase 'n': return '\\n';\n\t\t\t\tcase 'r': return '\\r';\n\t\t\t\tcase 'b': return '\\b';\n\t\t\t\tcase 'f': return '\\f';\n\t\t\t\tcase 't': return '\\t';\n\t\t\t\tcase 'v': return '\\v';\n\t\t\t\tcase '0': return '\\0';\n\t\t\t\tcase 'u':\n\t\t\t\t\tif (esc.length < 6) throw \"Invalid escape sequence: \" + esc;\n\t\t\t\t\treturn String.fromCharCode(parseInt(esc.substr(2), 16));\n\t\t\t\tdefault: throw \"Invalid escape sequence: \" + esc;\n\t\t\t}\n\t\t});\n\t\treturn new Nodes.Text(term);\n\n\tcase \"[\": // Filter operand\n\t\tterm = parser.match_here(rxOperandFilter);\n\t\tif (term) return new Nodes.Filter(term[0]);\n\t\tbreak;\n\n\tcase \"{\": // Transclusion or array\n\t\t++parser.pos;\n\t\tchar = parser.getChar();\n\t\t--parser.pos;\n\t\tif (char == '{') {\n\t\t\t// Possible transclusion operand\n\t\t\tterm = parser.match_here(rxOperandTransclusion);\n\t\t\tif (term) return new Nodes.Datum(buildTextReference(term[1]));\n\t\t}\n\t\t// Array operand\n\t\treturn new Nodes.ArrayDef(buildArrayLiteral(parser));\n\n\tcase \"<\": // Variable operand\n\t\tterm = parser.match_here(rxOperandVariable);\n\t\tif (term) return new Nodes.Datum(\n\t\t\tnew Nodes.Variable(new Nodes.Text(term[1])));\n\t\tbreak;\n\n\tcase \"/\": // Regular expression?\n\t\tterm = parser.match_here(rxRegex);\n\t\tif (term) return new Nodes.Regex(new RegExp(term[1].replace(\"\\\\/\", \"/\"), term[2]));\n\t\t\tbreak;\n\t}\n\n\t// Didn't recognize the operand\n\treturn null;\n}\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/compute.js": {
            "title": "$:/plugins/ebalster/formula/compute.js",
            "created": "20180114170308058",
            "description": "",
            "modified": "20180114170348576",
            "module-type": "library",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n\"use strict\";\n\nvar Nodes    = require(\"$:/plugins/ebalster/formula/nodes.js\");\nvar Compiler = require(\"$:/plugins/ebalster/formula/compile.js\");\nvar Coerce   = require(\"$:/plugins/ebalster/formula/coerce.js\");\n\nvar Numeral  = require(\"$:/plugins/ebalster/formula/lib/numeral.js\");\n\n// TiddlyWiki array format\nfunction arrayFormatTW(arr,ctx) {\n\tvar result = \"\";\n\tfor (var i = 0; i < arr.length; ++i) {\n\t\tvar part = Coerce.ToText(arr[i],ctx);\n\t\tif (i && part.length) result += \" \";\n\t\tif (part.indexOf(/\\s/g) >= 0) result += \"[[\" + part + \"]]\";\n\t\telse result += part;\n\t}\n\treturn result;\n}\n\n// Number format functions...\n\n// SANE number formatting: if we find five consecutive 9s or 0s after the decimal point, round them off.\nfunction NumberStringSane(n) {\n\tvar s = String(n);\n\tvar parse = /^(0\\.0*[1-9]\\d*?|\\d*\\.\\d*?)(0{5}\\d*|9{5}\\d*)(|e[+-]\\d*)$/.exec(s);\n\tif (!parse) return s;\n\tvar kept = parse[1], exp = parse[3];\n\tvar end = kept.slice(-1);\n\tif (parse[2][0] === '0') return ((end === '.') ? kept.substr(0,kept.length-1) : kept) + exp;\n\tif (end === '.') return (Number(kept.substr(0,kept.length-1))+1) + exp;\n\treturn kept.substr(0,kept.length-1) + (Number(end)+1) + exp;\n}\nvar numeralFormat      = function(fmt)      {return function(num) {return Numeral(num).format(fmt);};};\nvar numeralFormatPrec  = function(fmt,digs) {return function(num) {return Numeral(num.toPrecision(digs)).format(fmt);};};\nvar numberFormatFixed  = function(prec)     {return function(num) {return num.toFixed    (prec);};};\nvar numberFormatPrec   = function(digs)     {return function(num) {return num.toPrecision(digs);};};\nvar numberFormatSelect = function(settings)\n{\n\tif (settings.precision == \"true\" || settings.precision > 100) return String;\n\tif (typeof settings.numberFormat == \"string\") {\n\t\t// Use numeral\n\t\treturn isNaN(settings.precision) ?\n\t\t\tnumeralFormat    (settings.numberFormat) :\n\t\t\tnumeralFormatPrec(settings.numberFormat, settings.precision);\n\t}\n\tif (!isNaN(settings.fixed))     return numberFormatFixed(settings.fixed);\n\tif (!isNaN(settings.precision)) return numberFormatPrec (settings.precision);\n\treturn NumberStringSane;\n\t// return String;\n};\n\nexports.computeFormula = function(compiledFormula, widget, formatOptions, debug) {\n\t\n\tvar value, context;\n\t\n\tformatOptions = formatOptions || {};\n\n\tvar dateFormat = formatOptions.dateFormat || \"0hh:0mm, DDth MMM YYYY\";\n\n\t// Specify format.  These are all required!\n\tvar formats = {\n\t\tnumber: numberFormatSelect(formatOptions),\n\t\tdate:   function(date) {return $tw.utils.formatDateString(date, dateFormat);},\n\t\tarray:  arrayFormatTW,\n\t};\n\n\tcontext = new Nodes.Context(widget, formats);\n\n\t// Compute a value from the root node of the compiled formula.\n\ttry {\n\t\tvalue = compiledFormula.computeText(context);\n\t}\n\tcatch (err) {\n\t\tthrow \"ComputeError: \" + String(err) + (err.fileName || \"\") + (err.lineNumber || \"\")\n\t\t\t+ (debug ? \"\\nNodes: \" + JSON.stringify(compiledFormula) : \"\");\n\t}\n\n\t// Format the root node as a string.\n\tif (debug) return value + \"\\n - Val:\" + String(value) + \", Op:\" + compiledFormula.name;\n\telse       return value;\n};\n\nexports.evalFormula = function(formulaString, widget, formatOptions, debug) {\n\t\n\tvar compiledFormula;\n\n\t// Compile the formula\n\ttry {\n\t\tcompiledFormula = Compiler.compileExpression(formulaString);\n\t}\n\tcatch (err) {\n\t\tthrow \"CompileError: \" + String(err);\n\t}\n\n\t// Compute the formula\n\treturn exports.computeFormula(compiledFormula, widget, formatOptions, debug);\n};\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/filters/range.js": {
            "title": "$:/plugins/ebalster/formula/filters/range.js",
            "created": "20171221181646560",
            "modified": "20171221181907646",
            "module-type": "filteroperator",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "/*\\\ntitle: $:/plugins/ebalster/formula/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g), beg, end, inc, i, fixed = 0;\n\n\tfor (i = 0; i < parts.length; ++i) {\n\t\t// Validate real number\n\t\tif (!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i]))\n\t\t\treturn [\"range: bad number \\\"\"+parts[i]+\"\\\"\"];\n\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif (frac) fixed = Math.max(fixed, frac[0].length-1);\n\t\t\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\n\tswitch (parts.length) {\n\t\tcase 1:\n\t\t\tbeg = 0;\n\t\t\tend = parts[0];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\n\tif (inc === 0) return [\"range: increment 0 causes infinite loop\"];\n\n\t// May need to count backwards\n\tvar direction = ((end<beg) ? -1 : 1);\n\tinc *= direction;\n\n\t// Estimate number of resulting elements\n\tif ((end-beg)/inc > 10000) return [\"range: too many steps (over 10K)\"];\n\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1, fixed);\n\n\tvar safety = 10010;\n\n\t// Enumerate the range\n\tif (end<beg) {for (i = beg; i > end; i += inc) {results.push(i.toFixed(fixed)); if (--safety<0) break;}}\n\telse         {for (i = beg; i < end; i += inc) {results.push(i.toFixed(fixed)); if (--safety<0) break;}}\n\n\tif (safety<0) return [\"range: unexpectedly large output\"];\n\n\t// Reverse?\n\tif (operator.prefix === \"!\") results.reverse();\n\n\treturn results;\n};\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/functions/arithmetic.js": {
            "title": "$:/plugins/ebalster/formula/functions/arithmetic.js",
            "created": "20171211192843088",
            "modified": "20171212223526867",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n// Unary sign operators\nexports.uplus  = function(a)    {return a;};\nexports.uminus = function(a)    {return -a;};\nexports.uminus.inCast = 'N';\n\n// Add\nexports.add = function(a, b)    {return a + b;};\nexports.add.inCast = 'NN';\nexports.sub = function(a, b)    {return a - b;};\nexports.sub.inCast = 'NN';\n\n// Multiply\nexports.mul = function(a, b)    {return a * b;};\nexports.mul.inCast = 'NN';\nexports.div = function(a, b)    {return a / b;};\nexports.div.inCast = 'NN';\n\n// Percent -- TODO make this a different value-type\nexports.percent = function(a)    {return a / 100;};\nexports.percent.inCast = 'N';\n\n\n// Aliases\nexports.subtract = exports.sub;\nexports.minus    = exports.sub;\nexports.multiply = exports.mul;\nexports.divide   = exports.div;\nexports.quotient = exports.div;\nexports.power    = exports.pow;\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/arrays.js": {
            "title": "$:/plugins/ebalster/formula/functions/arrays.js",
            "created": "20171219014903147",
            "modified": "20171219014910148",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n// Array constructor function\nexports.array = function() {\n\treturn Array.prototype.slice.call(arguments);\n};\nexports.array.variadic = true;\n\n\nexports.nth = function(a, i) {\n\ti = Math.floor(i);\n\tif (i < 1 || i > a.length) return undefined;\n\treturn a[i-1];\n};\nexports.nth.inCast = 'AN';\n\nexports.first = function(a) {\n\tif (a.length) return a[0];\n\treturn undefined;\n};\nexports.first.inCast = 'A';\n\nexports.last = function(a) {\n\tif (a.length) return a[a.length-1];\n\treturn undefined;\n};\nexports.last.inCast = 'A';\n\n// MAP function\nexports.map = function(f, a) {\n\tif (f.min_args > 1 || f.max_args < 1) throw \"MAP requires single-argument function.\";\n\tvar result = [];\n\tvar func = f.bind(this);\n\tfor (var i = 0; i < a.length; ++i) result.push(func(a[i]));\n\treturn result;\n};\nexports.map.inCast = 'FA';\n\n\n/*\n\tCounting subroutines...\n\t\tcountA counts every non-array value\n\t\tcountS counts every non-array value but null, undefined and empty strings.\n*/\nfunction countS(a) {\n\tif (!(a instanceof Array)) return (a == null || a.length === 0) ? 0 : 1;\n\tvar n = 0;\n\tfor (var i = 0; i < a.length; ++i) n += countS(a[i]);\n\treturn n;\n}\nfunction countA(a) {\n\tif (!(a instanceof Array)) return 1;\n\tvar n = 0;\n\tfor (var i = 0; i < a.length; ++i) n += countA(a[i]);\n\treturn n;\n}\nfunction countS_multi() {\n\tvar n = 0;\n\tfor (var i = 0; i < arguments.length; ++i) n += countS(arguments[i]);\n\treturn n;\n}\nfunction countA_multi() {\n\tvar n = 0;\n\tfor (var i = 0; i < arguments.length; ++i) n += countA(arguments[i]);\n\treturn n;\n}\nexports.count =\n{\n\tmin_args : 1,\n\tselect : function(operands)\n\t{\n\t\tswitch (operands)\n\t\t{\n\t\tcase 1: return countS;\n\t\tdefault: return countS_multi;\n\t\t}\n\t}\n};\nexports.counta =\n{\n\tmin_args : 1,\n\tselect : function(operands)\n\t{\n\t\tswitch (operands)\n\t\t{\n\t\tcase 1: return countA;\n\t\tdefault: return countA_multi;\n\t\t}\n\t}\n};\n\n// COUNTA function, currently counts everything\nexports.counta = exports.count;\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/compare.js": {
            "title": "$:/plugins/ebalster/formula/functions/compare.js",
            "created": "20171214050022626",
            "modified": "20171214050803365",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n// Equality\nexports.eq  = function(a, b)    {return a == b;};\nexports.ne  = function(a, b)    {return a != b;};\n\n// Inequality\nexports.gt  = function(a, b)    {return a >  b;};\nexports.gte = function(a, b)    {return a >= b;};\nexports.lt  = function(a, b)    {return a <  b;};\nexports.lte = function(a, b)    {return a <= b;};\n\n\n// Aliases\nexports.equal            = exports.eq;\nexports.not_equal        = exports.ne;\nexports.greater          = exports.gt;\nexports.greater_or_equal = exports.gte;\nexports.less             = exports.lt;\nexports.less_or_equal    = exports.lte;\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/datetime.js": {
            "title": "$:/plugins/ebalster/formula/functions/datetime.js",
            "created": "20171217192129179",
            "modified": "20171217192149101",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\nvar MS_PER_DAY = 86400000;\nvar MS_PER_HOUR = 3600000;\nvar MS_PER_MINUTE = 60000;\nvar MS_PER_SECOND =  1000;\n\nvar UNIX_EPOCH_JULIAN_DAY = 2440587;\n\n\n/*!\n * isoWeekNum from pikaday <https://github.com/actano/Pikaday>\n */\nfunction isoWeekOfYear(date, dayInFirstWeek) {\n\tdayInFirstWeek = dayInFirstWeek || 4;\n\tdate = date instanceof Date ? date : new Date();\n\tdate.setHours(0, 0, 0, 0);\n\tvar yearDay        = date.getDate(),\n\t\tweekDay        = date.getDay(),\n\t\tdayShift       = dayInFirstWeek - 1, // counting starts at 0\n\t\tprevWeekDay    = function(day) { return (day + 7 - 1) % 7; };\n\tdate.setDate(yearDay + dayShift - prevWeekDay(weekDay));\n\tvar jan4th      = new Date(date.getFullYear(), 0, dayInFirstWeek),\n\t\tdaysBetween = (date.getTime() - jan4th.getTime()) / MS_PER_DAY,\n\t\tweekNum     = 1 + Math.round((daysBetween - dayShift + prevWeekDay(jan4th.getDay())) / 7);\n\treturn weekNum;\n}\nfunction isLeapYear(year) {\n\treturn year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);\n}\nfunction daysInYear(year) {\n\treturn isLeapYear(year) ? 366 : 365;\n}\nfunction daysInMonth(year, monthIndex) {\n\tswitch (monthIndex) {\n\tcase  0: case  2: case  4: case  6: case  7: case  9: case 11:return 31;\n\tcase  3: case  5: case  8: case 10: return 30;\n\tcase  1: return (isLeapYear(year) ? 29 : 28);\n\tdefault: throw \"days_in_month: invalid monthIndex: \" + monthIndex;\n\t}\n}\n\n// Utility: Add some months or years to a date\nfunction dateAddMonths(date, monthDiff, yearDiff) {\n\tyearDiff = yearDiff || 0;\n\tvar newMonth = date.getMonth() + Math.round(monthDiff);\n\tvar newYear = date.getFullYear() + Math.round(yearDiff);\n\n\tvar yearShift = ((newMonth < 0) ? -Math.floor(-(newMonth-11)/12) : Math.floor(newMonth/12));\n\tnewYear  += yearShift;\n\tnewMonth -= 12*yearShift;\n\n\treturn new Date(newYear, newMonth,\n\t\tMath.min(date.getDate(), daysInMonth(newYear, newMonth)),\n\t\tdate.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\n\n// Utility: Get date difference in whole years and months\nfunction dateDelta(date1, date2) {\n\tif (date2.getTime() < date1.getTime())\n\t{\n\t\tvar d = dateDelta(date2, date1);\n\t\treturn {years: -d.years, months: -d.months};\n\t}\n\tvar dMonths = 12*(date2.getYear()-date1.getYear()) + (date2.getMonth()-date1.getMonth());\n\tif (date2.getDate() < date1.getDate()) dMonths -= 1;\n\tvar dYears = Math.floor(dMonths/12);\n\t//dMonths -= dYears*12;\n\t/*var dDays = (new Date(\n\t\tdate1.getFullYear()+dYears, date1.getMonth()+dMonths, date2.getDate(),\n\t\tdate2.getHours(), date2.getMinutes(), date2.getSeconds(), date2.getMilliseconds()\n\t\t).getTime() - date1.getTime()) / MS_PER_DAY;*/\n\treturn {years: dYears, months: dMonths};\n}\n\n\n// Get the current time\nexports.now         = function()     {return new Date(Date.now());};\n\n// Decompose dates\nexports.year        = function(d)    {return (d.getFullYear());};\nexports.year.inCast = 'D';\nexports.month       = function(d)    {return (d.getMonth()+1);};\nexports.month.inCast = 'D';\nexports.day         = function(d)    {return (d.getDate());};\nexports.day.inCast = 'D';\nexports.hour        = function(d)    {return (d.getHours());};\nexports.hour.inCast = 'D';\nexports.minute      = function(d)    {return (d.getMinutes());};\nexports.minute.inCast = 'D';\nexports.second      = function(d)    {return (d.getSeconds());};\nexports.second.inCast = 'D';\nexports.millisecond = function(d)    {return (d.getMilliseconds());};\nexports.millisecond.inCast = 'D';\n\n// Week functions\nexports.weekday     = function(d)    {return (d.getDay()+1);};\nexports.weekday.inCast = 'D';\nexports.weeknum     = function(d)    {return (isoWeekOfYear(d, 1));};\nexports.weeknum.inCast = 'D';\nexports.isoweekday  = function(d)    {return ((d.getDay()+6) % 7 + 1);};\nexports.isoweekday.inCast = 'D';\nexports.isoweeknum  = function(d)    {return (isoWeekOfYear(d));};\nexports.isoweeknum.inCast = 'D';\n\n\n/*\n\tDate math\n*/\nfunction makeTimeDiffFunction(milliseconds) {\n\tvar f = function(a, b) {return (b.getTime() - a.getTime()) / milliseconds;};\n\tf.inCast = 'DD';\n\treturn f;\n}\nfunction makeTimeAddFunction(milliseconds) {\n\tvar f = function(a, b) {return new Date(a.getTime() + b * milliseconds);};\n\tf.inCast = 'DN';\n\treturn f;\n}\n\nexports.years  = function(a, b) {return dateDelta(a, b).years;};\nexports.years.inCast = 'DD';\nexports.months = function(a, b) {return dateDelta(a, b).months;};\nexports.months.inCast = 'DD';\nexports.days            = makeTimeDiffFunction(MS_PER_DAY);\nexports.hours           = makeTimeDiffFunction(MS_PER_HOUR);\nexports.minutes         = makeTimeDiffFunction(MS_PER_MINUTE);\nexports.seconds         = makeTimeDiffFunction(MS_PER_SECOND);\nexports.milliseconds    = makeTimeDiffFunction(1);\n\nexports.add_years  = function(a, b) {return dateAddMonths(a, 0, b);};\nexports.add_years.inCast = 'DN';\nexports.add_months = function(a, b) {return dateAddMonths(a, b);};\nexports.add_months.inCast = 'DN';\nexports.add_days         = makeTimeAddFunction(MS_PER_DAY);\nexports.add_hours        = makeTimeAddFunction(MS_PER_HOUR);\nexports.add_minutes      = makeTimeAddFunction(MS_PER_MINUTE);\nexports.add_seconds      = makeTimeAddFunction(MS_PER_SECOND);\nexports.add_milliseconds = makeTimeAddFunction(1);\n\nexports.is_leap_year  = function(year)       {return (isLeapYear(year));};\nexports.is_leap_year.inCast = 'N';\nexports.days_in_year  = function(year)       {return (daysInYear(year));};\nexports.days_in_year.inCast = 'N';\nexports.days_in_month = function(yr, mon)    {return (daysInMonth(yr, mon-1));};\nexports.days_in_month.inCast = 'NN';\n\n/*exports.datedif = function(a, b, c) {\n\tswitch (c.toUpperCase())\n\t{\n\tcase \"D\": return ((b.getTime() - a.getTime()) / MS_PER_DAY);\n\tcase \"M\": {var d=dateDelta(a, b); return d.months+12*d.years;}\n\tcase \"Y\": return dateDelta(a, b).years;\n\tcase \"YM\": return dateDelta(a, b).months;\n\tcase \"MD\": return dateDelta(a, b).days;\n\t}\n};\nexports.datedif.inCast = 'DDT';*/\n\n\n// Parse TiddlyWiki date\nexports.tw_date = function(timestamp) {\n\tvar date = $tw.utils.parseDate(timestamp);\n\tif (!date) throw \"Bad timestamp: \\\"\" + date + \"\\\"\";\n\treturn (date);\n};\nexports.tw_date.inCast = 'T';\n\n// Stringify as TiddlyWiki date\nexports.to_tw_date = function(date) {\n\treturn $tw.utils.stringifyDate(date);\n};\nexports.to_tw_date.inCast = 'D';\n\n// Create ISO date\nexports.make_date = function(year, month, day) {\n\treturn (new Date(year, month-1, day));\n};\nexports.make_date.inCast = 'NNN';\n\n// Create ISO time\nexports.make_time = function(hour, minute, second) {\n\treturn (new Date(0, 0, 0, hour, minute, second));\n};\nexports.make_time.inCast = 'NNN';\n\n// Create from julian\nexports.julian = function(julian) {\n\treturn (new Date((julian - UNIX_EPOCH_JULIAN_DAY) * MS_PER_DAY));\n};\nexports.julian.inCast = 'N';\n\n// Convert to julian\nexports.to_julian = function(date) {\n\treturn (UNIX_EPOCH_JULIAN_DAY + (date.getTime() / MS_PER_DAY));\n};\nexports.to_julian.inCast = 'D';\n\nexports.time = exports.make_time;\n\n\n// Cast the incoming value into a date.\nfunction interpret_date(a) {\n\tif (a instanceof Date) return a;\n\treturn exports.tw_date(a);\n}\ninterpret_date.inCast = 'D';\n\n\n// Consruct a date from a TiddlyWiki timestamp or a set of parts\nexports.date = {\n\tmin_args: 1, max_args: 3,\n\tselect: function(operands) {\n\t\tswitch (operands.length) {\n\t\tcase 1: return interpret_date;\n\t\tcase 3: return exports.make_date;\n\t\tdefault: throw \"Bad arguments to DATE. Should be (timestamp) or (year, month, day).\";\n\t\t}\n\t}\n};\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/logic.js": {
            "title": "$:/plugins/ebalster/formula/functions/logic.js",
            "created": "20171214054240274",
            "modified": "20171214060456114",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Node = require(\"$:/plugins/ebalster/formula/nodes.js\").Node;\n\n\n// Constants\nexports.true  = function()    {return true;};\nexports.false = function()    {return false;};\n\nexports.true.isConstant = true;\nexports.false.isConstant = true;\n\n// Logical operators\nexports.not = function(a)       {return !a;};\nexports.not.inCast = 'B';\nexports.and = function(a, b)    {return a && b;};\nexports.and.inCast = 'BB';\nexports.or  = function(a, b)    {return a || b;};\nexports.or .inCast = 'BB';\nexports.xor = function(a, b)    {return a ? !b : b;};\nexports.xor.inCast = 'BB';\n\n// Ternary\nfunction IfNode(pred, tval, fval) {\n\tthis.pred = pred;\n\tthis.tval = tval;\n\tthis.fval = fval;\n}\nIfNode.prototype = new Node();\nIfNode.prototype.name = \"if\";\nIfNode.prototype.compute = (function(ctx) {\n\treturn (this.pred.computeBool(ctx) ? this.tval.compute(ctx) : this.fval.compute(ctx));\n});\nexports.if = {\n\tmin_args: 3, max_args: 3,\n\tconstruct: function(operands) {\n\t\treturn new IfNode(operands[0], operands[1], operands[2]);\n\t}\n};\n\n\n// IFERROR\n/*exports.iferror = {\n\tmin_args = 2, max_args = 2,\n\tfunc = function(a, b) {\n\tselect: function(operands) {\n\t\ttry {return a.compute();}\n\t\tcatch (err) {return b.compute();}\n\t}\n\t};*/\n\n\n// SWITCH (variadic)\nexports.switch =\n{\n\tmin_args: 3,\n\tselect: function(operands)\n\t{\n\t\tswitch (operands.length % 2)\n\t\t{\n\t\tdefault:\n\t\tcase 0: return function(a) // Switch with default\n\t\t\t{\n\t\t\t\tvar value = a;\n\t\t\t\tfor (var i = 1; i+1 < arguments.length; i += 2)\n\t\t\t\t\t{if (arguments[i] == value) return arguments[i+1];}\n\t\t\t\treturn arguments[arguments.length-1];\n\t\t\t};\n\t\tcase 1: return function(a) // Switch, no default\n\t\t\t{\n\t\t\t\tvar value = a;\n\t\t\t\tfor (var i = 1; i+1 < arguments.length; i += 2)\n\t\t\t\t\t{if (arguments[i] == value) return arguments[i+1];}\n\t\t\t\treturn undefined;\n\t\t\t};\n\t\t}\n\t}\n};\n\n// CHOOSE (variadic)\nexports.choose = function(a, b)\n{\n\tvar index = Math.floor(a);\n\tvar result = arguments[index];\n\tif (index < 1 || !result) return undefined;\n\treturn result;\n};\nexports.choose.inCast = 'N';\nexports.choose.variadic = true;\n\n// IFS function (variadic)\nfunction ifsFunc() {\n\tfor (var i = 0; i < arguments.length; i += 2)\n\t\t{if (arguments[i]) return arguments[i+1];}\n\treturn undefined;\n};\nifsFunc.inCast = '+B_';\n\nexports.ifs =\n{\n\tmin_args : 2,\n\tinput: '+B_',\n\tselect : function(operands) {\n\t\tif (operands.length % 2 !== 0) throw \"Odd number of arguments to IFS\";\n\t\treturn ifsFunc;\n\t}\n};\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/math.js": {
            "title": "$:/plugins/ebalster/formula/functions/math.js",
            "created": "20171214171454666",
            "modified": "20171214171708994",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Coerce = require(\"$:/plugins/ebalster/formula/coerce.js\");\n\n\n// Constants\nexports.pi = function()    {return (Math.PI);};\nexports._e = function()    {return (Math.E);};\n\nexports.pi.isConstant = true;\nexports._e.isConstant = true;\n\n\n// Random\nexports.rand        = function()        {return Math.random();};\nexports.randbetween = function(a, b)    {return (a+(b-a)*Math.random());};\nexports.randbetween.inCast = 'NN';\nexports.random = exports.rand;\n\n\n// Sign and absolute value\nexports.abs  = function(a)    {return Math.abs(a);};\nexports.abs.inCast = 'N';\nexports.sign = function(x)    {return (((x > 0) - (x < 0)) || +x);};\nexports.sign.inCast = 'N';\n\n// Min/max\nexports.min = function(a)\n{\n\tvar min = a;\n\tfor (var i = 1; i < arguments.length; ++i) min = Math.min(min, arguments[i]);\n\treturn min;\n};\nexports.min.variadic = true;\nexports.min.inCast = '+N';\n\nexports.max = function(a)\n{\n\tvar max = a;\n\tfor (var i = 1; i < arguments.length; ++i) max = Math.max(max, arguments[i]);\n\treturn max;\n};\nexports.max.variadic = true;\nexports.max.inCast = '+N';\n\nexports.clamp = function(a, min, max) {\n\treturn (Math.min(Math.max(a, min), max));\n};\nexports.clamp.inCast = 'NNN';\n\n\n/*\n\tSeries arithmetic\n*/\nfunction Count(a) {\n\tif (a instanceof Array) {\n\t\tvar n = 0;\n\t\tfor (var i = 0; i < a.length; ++i) n += Count(a[i]);\n\t\treturn n;\n\t}\n\treturn 1;\n}\nfunction Sum(a) {\n\tif (a instanceof Array) {\n\t\tvar n = 0;\n\t\tfor (var i = 0; i < a.length; ++i) n += Sum(a[i]);\n\t\treturn n;\n\t}\n\treturn Coerce.ToNum(a,this);\n}\nfunction Product(a) {\n\tif (a instanceof Array) {\n\t\tvar n = 1;\n\t\tfor (var i = 0; i < a.length; ++i) n *= Product(a[i]);\n\t\treturn n;\n\t}\n\treturn Coerce.ToNum(a,this);\n}\nfunction Average(a) {\n\treturn Sum(a) / Count(a);\n}\n\nfunction GenSeriesFunc(func) {\n\treturn {\n\t\tmin_args : 1,\n\t\tselect : function(operands) {\n\t\t\tswitch (operands.length) {\n\t\t\tcase 1: return func;\n\t\t\tdefault: return function() {return func(Array.prototype.slice.call(arguments));};\n\t\t\t}\n\t\t}\n\t};\n}\n\nexports.sum     = GenSeriesFunc(Sum);\nexports.average = GenSeriesFunc(Average);\nexports.product = GenSeriesFunc(Product);\n\n\n/*\n\tExponential\n*/\n\n// Exponentiation and logarithm\nexports.pow   = function(a, b)    {return (Math.pow(a, b));};\nexports.pow.inCast = 'NN';\nexports.log   = function(a, b)    {return (Math.log(a) / Math.log(b));};\nexports.log.inCast = 'NN';\nexports.exp   = function(a)       {return (Math.exp(a));};\nexports.exp.inCast = 'N';\nexports.ln    = function(a)       {return (Math.log(a));};\nexports.ln.inCast = 'N';\nexports.log2  = function(a)       {return (Math.log2(a));};\nexports.log2.inCast = 'N';\nexports.log10 = function(a)       {return (Math.log10(a));};\nexports.log10.inCast = 'N';\n\nexports.power = exports.pow;\n\n// Precise exponentiation and logarithm\nexports.expm1 = function(a)       {return (Math.expm1(a));};\nexports.expm1.inCast = 'N';\nexports.log1p = function(a)       {return (Math.log1p(a));};\nexports.log1p.inCast = 'N';\n\n// Roots\nexports.sqrt = function(a)    {return (Math.sqrt(a));};\nexports.sqrt.inCast = 'N';\nexports.cbrt = function(a)    {return (Math.cbrt(a));};\nexports.cbrt.inCast = 'N';\n\n\n/*\n\tTrigonometry\n*/\n\n// Conversion\nexports.radians = function(a)    {return (Math.PI*a/180);};\nexports.radians.inCast = 'N';\nexports.degrees = function(a)    {return (180*a/Math.PI);};\nexports.degrees.inCast = 'N';\n\n// Trigonometry\nexports.sin = function(a)    {return (  Math.sin(a));};\nexports.sin.inCast = 'N';\nexports.cos = function(a)    {return (  Math.cos(a));};\nexports.cos.inCast = 'N';\nexports.tan = function(a)    {return (  Math.tan(a));};\nexports.tan.inCast = 'N';\nexports.csc = function(a)    {return (1/Math.sin(a));};\nexports.csc.inCast = 'N';\nexports.sec = function(a)    {return (1/Math.cos(a));};\nexports.sec.inCast = 'N';\nexports.cot = function(a)    {return (1/Math.tan(a));};\nexports.cot.inCast = 'N';\n\n// Inverse Trigonometry\nexports.asin = function(a)    {return (Math.asin(  a));};\nexports.asin.inCast = 'N';\nexports.acos = function(a)    {return (Math.acos(  a));};\nexports.acos.inCast = 'N';\nexports.atan = function(a)    {return (Math.atan(  a));};\nexports.atan.inCast = 'N';\nexports.acsc = function(a)    {return (Math.asin(1/a));};\nexports.acsc.inCast = 'N';\nexports.asec = function(a)    {return (Math.acos(1/a));};\nexports.asec.inCast = 'N';\nexports.acot = function(a)    {return (Math.atan(1/a));};\nexports.acot.inCast = 'N';\nexports.atan2 = function(y,x)    {return (Math.atan2(y, x));};\nexports.atan2.inCast = 'NN';\n\n// Hyperbolic Trigonometry\nexports.sinh = function(a)    {return (  Math.sinh(a));};\nexports.sinh.inCast = 'N';\nexports.cosh = function(a)    {return (  Math.cosh(a));};\nexports.cosh.inCast = 'N';\nexports.tanh = function(a)    {return (  Math.tanh(a));};\nexports.tanh.inCast = 'N';\nexports.csch = function(a)    {return (1/Math.sinh(a));};\nexports.csch.inCast = 'N';\nexports.sech = function(a)    {return (1/Math.cosh(a));};\nexports.sech.inCast = 'N';\nexports.coth = function(a)    {return (1/Math.tanh(a));};\nexports.coth.inCast = 'N';\n\n// Inverse Hyperbolic Trigonometry\nexports.asinh = function(a)    {return (Math.asinh(  a));};\nexports.asinh.inCast = 'N';\nexports.acosh = function(a)    {return (Math.acosh(  a));};\nexports.acosh.inCast = 'N';\nexports.atanh = function(a)    {return (Math.atanh(  a));};\nexports.atanh.inCast = 'N';\nexports.acsch = function(a)    {return (Math.asinh(1/a));};\nexports.acsch.inCast = 'N';\nexports.asech = function(a)    {return (Math.acosh(1/a));};\nexports.asech.inCast = 'N';\nexports.acoth = function(a)    {return (Math.atanh(1/a));};\nexports.acoth.inCast = 'N';\n\n/*\n\tRounding, ceiling and floor functions.\n\t\tSpecial measures were taken to reproduce the conventions.\n*/\n\nvar signedFloor = Math.trunc || function(n) {return (n<0) ? Math.ceil (n) : Math.floor(n);};\nvar signedCeil  =               function(n) {return (n<0) ? Math.floor(n) : Math.ceil (n);};\n\nfunction genCeilFloor(func) {\n\tvar by1 = function(a) {return func(a);},\n\t\tbyN = function(a, b) {var prec = b; return (func(a/prec) * prec);};\n\tby1.inCast = 'NN';\n\tbyN.inCast = 'NN';\n\treturn {\n\t\tmin_args : 1, max_args : 2,\n\t\tinput: 'NN',\n\t\tselect: function(operands) {\n\t\t\tswitch (operands.length)\n\t\t\t{\n\t\t\tcase 1: return by1;\n\t\t\tcase 2: return byN;\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction genRound(func) {\n\tvar lndigit = Math.log(0.1);\n\tvar by1 = function(a)    {return func(a);},\n\t\tbyN = function(a, b) {var prec = Math.exp(lndigit*b); return (func(a/prec) * prec);};\n\tby1.inCast = 'NN';\n\tbyN.inCast = 'NN';\n\treturn {\n\t\tmin_args : 1, max_args : 2,\n\t\tinput: 'NN',\n\t\tselect: function(operands) {\n\t\t\tswitch (operands.length)\n\t\t\t{\n\t\t\tcase 1: return by1;\n\t\t\tcase 2: return byN;\n\t\t\t}\n\t\t}\n\t};\n}\n\nexports.floor     = genCeilFloor(Math.floor);\nexports.ceil      = genCeilFloor(Math.ceil);\n//exports.floor_precise  = genCeilFloor(Math.floor);\n//exports.ceil_precise  = genCeilFloor(Math.ceil);\nexports.round     = genRound(Math.round);\nexports.roundup   = genRound(signedCeil);\nexports.rounddown = genRound(signedFloor);\nexports.trunc     = exports.rounddown;\n\n// Related functions\nexports.fract  = function(a)      {return (a-signedFloor(a));};\nexports.fract.inCast = 'NN';\nexports.modulo = function(a,b)    {return (a-b*Math.floor(a/b));};\nexports.modulo.inCast = 'NN';\n\nexports.mod = exports.modulo;\n\n\n/*\n\tInterpolation\n*/\nexports.mix = function(a,b,m) {return (a + (b-a) * m);};\nexports.mix.inCast = 'NNN';\n\nexports.step = function(e,x)    {return ((x<e) ? 0.0 : 1.0);};\nexports.step.inCast = 'NN';\n\nexports.smoothstep = function(e0,e1,x) {\n\tif (x < e0) return (0.0);\n\tif (x > e1) return (1.0);\n\tx = (x-e0) / (e1-e0);\n\treturn (3*x*x - 2*x*x*x);\n};\nexports.smoothstep.inCast = 'NNN';\n\n\n/*\n\tAlgorithms\n*/\nexports.gcd = function(a,b) {\n\ta = Math.abs(Math.round(a));\n\tb = Math.abs(Math.round(b));\n\tif (b > a) {var temp = a; a = b; b = temp;}\n\tvar limit = 1000;\n\twhile (true) {\n\t\tif (b == 0) return a;\n\t\ta %= b;\n\t\tif (a == 0) return b;\n\t\tb %= a;\n\t\tif (--limit < 0) throw \"GCD function is nonterminal!\";\n\t}\n};\nexports.gcd.inCast = 'NN';\n\nexports.lcm = function(a,b) {\n\ta = Math.abs(Math.round(a));\n\tb = Math.abs(Math.round(b));\n\treturn (!a || !b) ? 0 : Math.abs((a * b) / exports.gcd(a, b));\n};\nexports.lcm.inCast = 'NN';\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/regexp.js": {
            "title": "$:/plugins/ebalster/formula/functions/regexp.js",
            "created": "20171220230845098",
            "modified": "20171220230855457",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n// Compile regex.  TODO: Precompile these where possible\n/*var TW_RX_FLAGS = /^\\(\\?[a-z]*\\)|\\(\\?[a-z]*\\)$/i;\n\nfunction tw_regex(rx_str, defaultFlags) {\n\tif (!rx_str) throw \"Empty regular expression\";\n\tvar flagPart = TW_RX_FLAGS.exec(rx_str);\n\tif (flagPart) {\n\t\tvar flagLen = flagPart[0].length;\n\t\tvar flags = flagPart[0].substr(2, flagPart[0].length-3);\n\t\tif (flagPart.index == 0) return new RegExp(rx_str.substr(flagLen), flags);\n\t\telse                     return new RegExp(rx_str.substr(0, rx_str.length-flagLen), flags);\n\t}\n\treturn new RegExp(rx_str, defaultFlags);\n}*/\n\n\n// Regex replace\nexports.regexreplace = function(s, rx, b) {\n\t//rx = tw_regex(rx, \"g\");\n\trx.lastIndex = 0;\n\treturn s.replace(rx, b);\n};\nexports.regexreplace.inCast = 'TRT';\n\n// Regex match\nexports.regexmatch = function(s, rx) {\n\t//rx = tw_regex(rx, \"\");\n\trx.lastIndex = 0;\n\treturn rx.test(s);\n};\nexports.regexmatch.inCast = 'TR';\n\n// Regex extract\nfunction regexextract(s, rx) {\n\t//rx = tw_regex(rx, \"g\");\n\trx.lastIndex = 0;\n\ts = s;\n\tvar captureIndex = arguments[2] || 0;\n\tvar matches = [];\n\tvar match;\n\twhile ((match = rx.exec(s)) != null) {\n\t\tif (match[0].length == 0) ++rx.lastIndex;\n\t\tmatches.push(match[captureIndex] || \"\");\n\t\tif (!rx.global) break;\n\t}\n\treturn matches;\n}\nregexextract.inCast = 'TRN';\n\nexports.regexextract = {\n\tmin_args: 2, max_args: 3,\n\tselect: function(operands) {return regexextract;}\n};\n\n// Regex extract, single argument\nfunction regexextract1(s, rx, dfl) {\n\t//rx = tw_regex(rx, \"\");\n\trx.lastIndex = 0;\n\ts = s;\n\tvar captureIndex = arguments[3] || 0;\n\tvar match = rx.exec(s);\n\treturn (match && match[captureIndex]) ? match[captureIndex] : dfl;\n}\nregexextract1.inCast = 'TRTN';\n\nexports.regexextract1 = {\n\tmin_args: 3, max_args: 4,\n\tselect: function(operands) {return regexextract1;}\n};\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/strings.js": {
            "title": "$:/plugins/ebalster/formula/functions/strings.js",
            "created": "20171213003135495",
            "modified": "20171213003237206",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Coerce = require(\"$:/plugins/ebalster/formula/coerce.js\");\n\n\n// Cast to text.  Second argument not yet supported.\nexports.t = function(a)    {return a;};\nexports.t.inCast = 'T';\n\nfunction t_format(a, format) {return a;}\nt_format.inCast = 'TT';\n\nexports.text = {\n\tmin_args: 1, max_args: 1,\n\tinput: 'TT',\n\tselect: function(operands) {\n\t\tif (operands.length == 1) return exports.t;\n\t\treturn t_format;\n\t}\n};\n\n// Cast string to number.\nexports.value = function(a)    {return a;};\nexports.inCast = 'N';\n\n// Array to string\nvar JoinFunc = function(delimiter, ignore_empty, array, startIndex) {\n\tvar join = \"\", part;\n\tfor (var i = startIndex; i < array.length; ++i)\n\t{\n\t\tvar arg = array[i];\n\t\tif (arg instanceof Array) {\n\t\t\tpart = JoinFunc(delimiter, ignore_empty, arg, 0);\n\t\t}\n\t\telse {\n\t\t\tpart = Coerce.ToText(arg,this);\n\t\t}\n\t\tif (part.length || !ignore_empty) {\n\t\t\tif (join.length) join += delimiter;\n\t\t\tjoin += part;\n\t\t}\n\t}\n\treturn join;\n};\n\n// Join\nexports.join = function(delimiter) {\n\treturn JoinFunc.call(this, delimiter, false, arguments, 1);\n};\nexports.join.variadic = true;\nexports.join.inCast = 'T';\n\n// Textjoin\nexports.textjoin = function(delimiter, ignore_empty) {\n\treturn JoinFunc.call(this, delimiter, ignore_empty, arguments, 2);\n};\nexports.textjoin.variadic = true;\nexports.textjoin.inCast = 'T';\n\n// Split string to array\nexports.split = function(str, delimiter) {\n\treturn str.split(delimiter);\n};\nexports.split.inCast = 'T';\n\n// String length\nexports.len = function(str)     {return str.length;};\nexports.len.inCast = 'T';\n\n// String exact match\nexports.exact = function(a, b)    {return a === b;};\nexports.exact.inCast = 'TT';\n\n\n// Substrings\nexports.mid = function(str, i, n)    {return str.substr(i-1, n);};\nexports.exact.inCast = 'TNN';\n\nexports.substr = exports.mid;\n\n\n// Substitute\nexports.substitute = function(s, f, r)    {return s.split(f).join(r);};\nexports.substitute.inCast = 'TTT';\n\n// Replace (N/I)\n//exports.replace = function(s, p, l, r)    {return (s.splice(a, b));};\n\n\n// Concatenate\nexports.cat = function(a, b)    {return a + b;};\nexports.cat.inCast = 'TT';\n\n// Trim space\nexports.trim = function(a)      {return a.split(/^\\s+|\\s+$/g).join(\"\");};\nexports.trim.inCast = 'T';\n\n\n// Aliases\nexports.concatenate = exports.cat;\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/functions/wiki.js": {
            "title": "$:/plugins/ebalster/formula/functions/wiki.js",
            "created": "20180108011928370",
            "modified": "20180108012007186",
            "module-type": "formula-function",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Nodes = require(\"$:/plugins/ebalster/formula/nodes.js\");\n\n\n// Get variable string by name.\nexports.transclude = {\n\tmin_args: 1, max_args: 2,\n\tconstruct: function(operands) {\n\t\tswitch (operands.length) {\n\t\t\tcase 1: return new Nodes.TranscludeText(operands[0]);\n\t\t\tcase 2: return new Nodes.TranscludeField(operands[0], operands[1]);\n\t\t}\n\t}\n};\n\n// Transclude tiddler text string by name.\nexports.transclude_index = {\n\tmin_args: 2, max_args: 2,\n\tconstruct: function(operands) {return new Nodes.TranscludeIndex(operands[0], operands[1]);}\n};\n\n// Transclude field string by name.\nexports.variable = {\n\tmin_args: 1, max_args: 1,\n\tconstruct: function(operands) {return new Nodes.Variable(operands[0]);}\n};\n\n// Interpret value as a datum.\nexports.datum = {\n\tmin_args: 1, max_args: 1,\n\tconstruct: function(operands) {return new Nodes.Datum(operands[0]);}\n};\n\n\n})();"
        },
        "$:/plugins/ebalster/formula/lib/numeral.js": {
            "title": "$:/plugins/ebalster/formula/lib/numeral.js",
            "created": "20180114171007227",
            "modified": "20180114171115244",
            "module-type": "library",
            "revision": "0",
            "type": "application/javascript",
            "text": "/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n!function(a,b){\"function\"==typeof define&&define.amd?define(b):\"object\"==typeof module&&module.exports?module.exports=b():a.numeral=b()}(this,function(){function a(a,b){this._input=a,this._value=b}var b,c,d=\"2.0.6\",e={},f={},g={currentLocale:\"en\",zeroFormat:null,nullFormat:null,defaultFormat:\"0,0\",scalePercentBy100:!0},h={currentLocale:g.currentLocale,zeroFormat:g.zeroFormat,nullFormat:g.nullFormat,defaultFormat:g.defaultFormat,scalePercentBy100:g.scalePercentBy100};return b=function(d){var f,g,i,j;if(b.isNumeral(d))f=d.value();else if(0===d||\"undefined\"==typeof d)f=0;else if(null===d||c.isNaN(d))f=null;else if(\"string\"==typeof d)if(h.zeroFormat&&d===h.zeroFormat)f=0;else if(h.nullFormat&&d===h.nullFormat||!d.replace(/[^0-9]+/g,\"\").length)f=null;else{for(g in e)if(j=\"function\"==typeof e[g].regexps.unformat?e[g].regexps.unformat():e[g].regexps.unformat,j&&d.match(j)){i=e[g].unformat;break}i=i||b._.stringToNumber,f=i(d)}else f=Number(d)||null;return new a(d,f)},b.version=d,b.isNumeral=function(b){return b instanceof a},b._=c={numberToFormat:function(a,c,d){var e,g,h,i,j,k,l,m=f[b.options.currentLocale],n=!1,o=!1,p=0,q=\"\",r=1e12,s=1e9,t=1e6,u=1e3,v=\"\",w=!1;if(a=a||0,g=Math.abs(a),b._.includes(c,\"(\")?(n=!0,c=c.replace(/[\\(|\\)]/g,\"\")):(b._.includes(c,\"+\")||b._.includes(c,\"-\"))&&(j=b._.includes(c,\"+\")?c.indexOf(\"+\"):0>a?c.indexOf(\"-\"):-1,c=c.replace(/[\\+|\\-]/g,\"\")),b._.includes(c,\"a\")&&(e=c.match(/a(k|m|b|t)?/),e=e?e[1]:!1,b._.includes(c,\" a\")&&(q=\" \"),c=c.replace(new RegExp(q+\"a[kmbt]?\"),\"\"),g>=r&&!e||\"t\"===e?(q+=m.abbreviations.trillion,a/=r):r>g&&g>=s&&!e||\"b\"===e?(q+=m.abbreviations.billion,a/=s):s>g&&g>=t&&!e||\"m\"===e?(q+=m.abbreviations.million,a/=t):(t>g&&g>=u&&!e||\"k\"===e)&&(q+=m.abbreviations.thousand,a/=u)),b._.includes(c,\"[.]\")&&(o=!0,c=c.replace(\"[.]\",\".\")),h=a.toString().split(\".\")[0],i=c.split(\".\")[1],k=c.indexOf(\",\"),p=(c.split(\".\")[0].split(\",\")[0].match(/0/g)||[]).length,i?(b._.includes(i,\"[\")?(i=i.replace(\"]\",\"\"),i=i.split(\"[\"),v=b._.toFixed(a,i[0].length+i[1].length,d,i[1].length)):v=b._.toFixed(a,i.length,d),h=v.split(\".\")[0],v=b._.includes(v,\".\")?m.delimiters.decimal+v.split(\".\")[1]:\"\",o&&0===Number(v.slice(1))&&(v=\"\")):h=b._.toFixed(a,0,d),q&&!e&&Number(h)>=1e3&&q!==m.abbreviations.trillion)switch(h=String(Number(h)/1e3),q){case m.abbreviations.thousand:q=m.abbreviations.million;break;case m.abbreviations.million:q=m.abbreviations.billion;break;case m.abbreviations.billion:q=m.abbreviations.trillion}if(b._.includes(h,\"-\")&&(h=h.slice(1),w=!0),h.length<p)for(var x=p-h.length;x>0;x--)h=\"0\"+h;return k>-1&&(h=h.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+m.delimiters.thousands)),0===c.indexOf(\".\")&&(h=\"\"),l=h+v+(q?q:\"\"),n?l=(n&&w?\"(\":\"\")+l+(n&&w?\")\":\"\"):j>=0?l=0===j?(w?\"-\":\"+\")+l:l+(w?\"-\":\"+\"):w&&(l=\"-\"+l),l},stringToNumber:function(a){var b,c,d,e=f[h.currentLocale],g=a,i={thousand:3,million:6,billion:9,trillion:12};if(h.zeroFormat&&a===h.zeroFormat)c=0;else if(h.nullFormat&&a===h.nullFormat||!a.replace(/[^0-9]+/g,\"\").length)c=null;else{c=1,\".\"!==e.delimiters.decimal&&(a=a.replace(/\\./g,\"\").replace(e.delimiters.decimal,\".\"));for(b in i)if(d=new RegExp(\"[^a-zA-Z]\"+e.abbreviations[b]+\"(?:\\\\)|(\\\\\"+e.currency.symbol+\")?(?:\\\\))?)?$\"),g.match(d)){c*=Math.pow(10,i[b]);break}c*=(a.split(\"-\").length+Math.min(a.split(\"(\").length-1,a.split(\")\").length-1))%2?1:-1,a=a.replace(/[^0-9\\.]+/g,\"\"),c*=Number(a)}return c},isNaN:function(a){return\"number\"==typeof a&&isNaN(a)},includes:function(a,b){return-1!==a.indexOf(b)},insert:function(a,b,c){return a.slice(0,c)+b+a.slice(c)},reduce:function(a,b){if(null===this)throw new TypeError(\"Array.prototype.reduce called on null or undefined\");if(\"function\"!=typeof b)throw new TypeError(b+\" is not a function\");var c,d=Object(a),e=d.length>>>0,f=0;if(3===arguments.length)c=arguments[2];else{for(;e>f&&!(f in d);)f++;if(f>=e)throw new TypeError(\"Reduce of empty array with no initial value\");c=d[f++]}for(;e>f;f++)f in d&&(c=b(c,d[f],f,d));return c},multiplier:function(a){var b=a.toString().split(\".\");return b.length<2?1:Math.pow(10,b[1].length)},correctionFactor:function(){var a=Array.prototype.slice.call(arguments);return a.reduce(function(a,b){var d=c.multiplier(b);return a>d?a:d},1)},toFixed:function(a,b,c,d){var e,f,g,h,i=a.toString().split(\".\"),j=b-(d||0);return e=2===i.length?Math.min(Math.max(i[1].length,j),b):j,g=Math.pow(10,e),h=(c(a+\"e+\"+e)/g).toFixed(e),d>b-e&&(f=new RegExp(\"\\\\.?0{1,\"+(d-(b-e))+\"}$\"),h=h.replace(f,\"\")),h}},b.options=h,b.formats=e,b.locales=f,b.locale=function(a){return a&&(h.currentLocale=a.toLowerCase()),h.currentLocale},b.localeData=function(a){if(!a)return f[h.currentLocale];if(a=a.toLowerCase(),!f[a])throw new Error(\"Unknown locale : \"+a);return f[a]},b.reset=function(){for(var a in g)h[a]=g[a]},b.zeroFormat=function(a){h.zeroFormat=\"string\"==typeof a?a:null},b.nullFormat=function(a){h.nullFormat=\"string\"==typeof a?a:null},b.defaultFormat=function(a){h.defaultFormat=\"string\"==typeof a?a:\"0.0\"},b.register=function(a,b,c){if(b=b.toLowerCase(),this[a+\"s\"][b])throw new TypeError(b+\" \"+a+\" already registered.\");return this[a+\"s\"][b]=c,c},b.validate=function(a,c){var d,e,f,g,h,i,j,k;if(\"string\"!=typeof a&&(a+=\"\",console.warn&&console.warn(\"Numeral.js: Value is not string. It has been co-erced to: \",a)),a=a.trim(),a.match(/^\\d+$/))return!0;if(\"\"===a)return!1;try{j=b.localeData(c)}catch(l){j=b.localeData(b.locale())}return f=j.currency.symbol,h=j.abbreviations,d=j.delimiters.decimal,e=\".\"===j.delimiters.thousands?\"\\\\.\":j.delimiters.thousands,k=a.match(/^[^\\d]+/),null!==k&&(a=a.substr(1),k[0]!==f)?!1:(k=a.match(/[^\\d]+$/),null!==k&&(a=a.slice(0,-1),k[0]!==h.thousand&&k[0]!==h.million&&k[0]!==h.billion&&k[0]!==h.trillion)?!1:(i=new RegExp(e+\"{2}\"),a.match(/[^\\d.,]/g)?!1:(g=a.split(d),g.length>2?!1:g.length<2?!!g[0].match(/^\\d+.*\\d$/)&&!g[0].match(i):1===g[0].length?!!g[0].match(/^\\d+$/)&&!g[0].match(i)&&!!g[1].match(/^\\d+$/):!!g[0].match(/^\\d+.*\\d$/)&&!g[0].match(i)&&!!g[1].match(/^\\d+$/))))},b.fn=a.prototype={clone:function(){return b(this)},format:function(a,c){var d,f,g,i=this._value,j=a||h.defaultFormat;if(c=c||Math.round,0===i&&null!==h.zeroFormat)f=h.zeroFormat;else if(null===i&&null!==h.nullFormat)f=h.nullFormat;else{for(d in e)if(j.match(e[d].regexps.format)){g=e[d].format;break}g=g||b._.numberToFormat,f=g(i,j,c)}return f},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){function b(a,b,c,e){return a+Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([this._value,a],b,0)/d,this},subtract:function(a){function b(a,b,c,e){return a-Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([a],b,Math.round(this._value*d))/d,this},multiply:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)*Math.round(b*f)/Math.round(f*f)}return this._value=c.reduce([this._value,a],b,1),this},divide:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)/Math.round(b*f)}return this._value=c.reduce([this._value,a],b),this},difference:function(a){return Math.abs(b(this._value).subtract(a).value())}},b.register(\"locale\",\"en\",{delimiters:{thousands:\",\",decimal:\".\"},abbreviations:{thousand:\"k\",million:\"m\",billion:\"b\",trillion:\"t\"},ordinal:function(a){var b=a%10;return 1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\"},currency:{symbol:\"$\"}}),function(){b.register(\"format\",\"bps\",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,c,d){var e,f=b._.includes(c,\" BPS\")?\" \":\"\";return a=1e4*a,c=c.replace(/\\s?BPS/,\"\"),e=b._.numberToFormat(a,c,d),b._.includes(e,\")\")?(e=e.split(\"\"),e.splice(-1,0,f+\"BPS\"),e=e.join(\"\")):e=e+f+\"BPS\",e},unformat:function(a){return+(1e-4*b._.stringToNumber(a)).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"]},c={base:1024,suffixes:[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"]},d=a.suffixes.concat(c.suffixes.filter(function(b){return a.suffixes.indexOf(b)<0})),e=d.join(\"|\");e=\"(\"+e.replace(\"B\",\"B(?!PS)\")+\")\",b.register(\"format\",\"bytes\",{regexps:{format:/([0\\s]i?b)/,unformat:new RegExp(e)},format:function(d,e,f){var g,h,i,j,k=b._.includes(e,\"ib\")?c:a,l=b._.includes(e,\" b\")||b._.includes(e,\" ib\")?\" \":\"\";for(e=e.replace(/\\s?i?b/,\"\"),h=0;h<=k.suffixes.length;h++)if(i=Math.pow(k.base,h),j=Math.pow(k.base,h+1),null===d||0===d||d>=i&&j>d){l+=k.suffixes[h],i>0&&(d/=i);break}return g=b._.numberToFormat(d,e,f),g+l},unformat:function(d){var e,f,g=b._.stringToNumber(d);if(g){for(e=a.suffixes.length-1;e>=0;e--){if(b._.includes(d,a.suffixes[e])){f=Math.pow(a.base,e);break}if(b._.includes(d,c.suffixes[e])){f=Math.pow(c.base,e);break}}g*=f||1}return g}})}(),function(){b.register(\"format\",\"currency\",{regexps:{format:/(\\$)/},format:function(a,c,d){var e,f,g,h=b.locales[b.options.currentLocale],i={before:c.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],after:c.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]};for(c=c.replace(/\\s?\\$\\s?/,\"\"),e=b._.numberToFormat(a,c,d),a>=0?(i.before=i.before.replace(/[\\-\\(]/,\"\"),i.after=i.after.replace(/[\\-\\)]/,\"\")):0>a&&!b._.includes(i.before,\"-\")&&!b._.includes(i.before,\"(\")&&(i.before=\"-\"+i.before),g=0;g<i.before.length;g++)switch(f=i.before[g]){case\"$\":e=b._.insert(e,h.currency.symbol,g);break;case\" \":e=b._.insert(e,\" \",g+h.currency.symbol.length-1)}for(g=i.after.length-1;g>=0;g--)switch(f=i.after[g]){case\"$\":e=g===i.after.length-1?e+h.currency.symbol:b._.insert(e,h.currency.symbol,-(i.after.length-(1+g)));break;case\" \":e=g===i.after.length-1?e+\" \":b._.insert(e,\" \",-(i.after.length-(1+g)+h.currency.symbol.length-1))}return e}})}(),function(){b.register(\"format\",\"exponential\",{regexps:{format:/(e\\+|e-)/,unformat:/(e\\+|e-)/},format:function(a,c,d){var e,f=\"number\"!=typeof a||b._.isNaN(a)?\"0e+0\":a.toExponential(),g=f.split(\"e\");return c=c.replace(/e[\\+|\\-]{1}0/,\"\"),e=b._.numberToFormat(Number(g[0]),c,d),e+\"e\"+g[1]},unformat:function(a){function c(a,c,d,e){var f=b._.correctionFactor(a,c),g=a*f*(c*f)/(f*f);return g}var d=b._.includes(a,\"e+\")?a.split(\"e+\"):a.split(\"e-\"),e=Number(d[0]),f=Number(d[1]);return f=b._.includes(a,\"e-\")?f*=-1:f,b._.reduce([e,Math.pow(10,f)],c,1)}})}(),function(){b.register(\"format\",\"ordinal\",{regexps:{format:/(o)/},format:function(a,c,d){var e,f=b.locales[b.options.currentLocale],g=b._.includes(c,\" o\")?\" \":\"\";return c=c.replace(/\\s?o/,\"\"),g+=f.ordinal(a),e=b._.numberToFormat(a,c,d),e+g}})}(),function(){b.register(\"format\",\"percentage\",{regexps:{format:/(%)/,unformat:/(%)/},format:function(a,c,d){var e,f=b._.includes(c,\" %\")?\" \":\"\";return b.options.scalePercentBy100&&(a=100*a),c=c.replace(/\\s?\\%/,\"\"),e=b._.numberToFormat(a,c,d),b._.includes(e,\")\")?(e=e.split(\"\"),e.splice(-1,0,f+\"%\"),e=e.join(\"\")):e=e+f+\"%\",e},unformat:function(a){var c=b._.stringToNumber(a);return b.options.scalePercentBy100?.01*c:c}})}(),function(){b.register(\"format\",\"time\",{regexps:{format:/(:)/,unformat:/(:)/},format:function(a,b,c){var d=Math.floor(a/60/60),e=Math.floor((a-60*d*60)/60),f=Math.round(a-60*d*60-60*e);return d+\":\"+(10>e?\"0\"+e:e)+\":\"+(10>f?\"0\"+f:f)},unformat:function(a){var b=a.split(\":\"),c=0;return 3===b.length?(c+=60*Number(b[0])*60,c+=60*Number(b[1]),c+=Number(b[2])):2===b.length&&(c+=60*Number(b[0]),c+=Number(b[1])),Number(c)}})}(),b});"
        },
        "$:/plugins/ebalster/formula/license": {
            "title": "$:/plugins/ebalster/formula/license",
            "caption": "license",
            "created": "20171220071005710",
            "modified": "20171220211838536",
            "revision": "0",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "!!The MIT License (MIT)\n\nCopyright (c) 2017 Evan Balster\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
        },
        "$:/plugins/ebalster/formula/macros/formula.js": {
            "title": "$:/plugins/ebalster/formula/macros/formula.js",
            "created": "20171210215758530",
            "modified": "20171212194124031",
            "module-type": "macro",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Compute = require(\"$:/plugins/ebalster/formula/compute.js\");\n\n/*\n\tInformation about this macro\n*/\n\nexports.name = \"formula\";\nexports.params = [{\"name\": \"formula\"}];\n\n/*\nRun the macro\n*/\nexports.run = function(formula) {\n\n\ttry {\n\t\treturn Compute.evalFormula(formula, this);\n\t}\n\tcatch (err) {\n\t\treturn \"`\" + String(err) + \"`\";\n\t}\n};\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/nodes.js": {
            "title": "$:/plugins/ebalster/formula/nodes.js",
            "created": "20171211183000431",
            "description": "",
            "modified": "20180112071139424",
            "module-type": "library",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "/*\\\ntitle: $:/plugins/ebalster/formula/nodes.js\ntype: application/javascript\nmodule-type: macro\n\nLibrary defining computation \"nodes\" used to build compiled formulas.\nOperands represent some value within the formula: an expression, datum, operator, constant or query...\nOperands may be constant, allowing the formula compiler to optimize them away.\n\n\\*/\n(function(){\n\n\"use strict\";\n\nvar Coerce = require(\"$:/plugins/ebalster/formula/coerce.js\");\n\n\n// A Context has all the information necessary for computations.\nexports.Context = function(widget, formats, locals, depth, maxDepth) {\n\tthis.widget = widget;\n\tthis.formats = formats || {};\n\tthis.locals = locals || {};\n\tthis.depth = depth || 1;\n\tthis.maxDepth = maxDepth || 256;\n\tif (this.maxDepth < this.depth) throw \"Formula recursion exceeds limit of \" + this.maxDepth + \".  Infinite regress?\";\n};\nexports.Context.prototype.sub          = function()        {return new exports.Context(this.widget,this.formats,null,this.depth+1,this.maxDepth);};\nexports.Context.prototype.let          = function(locals)  {return new exports.Context(this.widget,this.formats,locals,this.depth,this.maxDepth);};\nexports.Context.prototype.wiki         = function()        {return this.widget.wiki;};\nexports.Context.prototype.wikiVariable = function(name)    {return this.widget.getVariable(name);};\n\n\nexports.Node = function() {\n};\nexports.Node.prototype.is_constant = false;\nexports.Node.prototype.name = \"unknown-operand\";\nexports.Node.prototype.toString = function()    {return \"[Node \" + this.name + \"]\";};\n\n// Compute the Node's value.\nexports.Node.prototype.compute = function(ctx) {return undefined;};\n\n// Compute a specific type of value, with coercion if necessary.\nexports.Node.prototype.computeNum   = function(ctx) {return Coerce.ToNum  (this.compute(ctx), ctx);};\nexports.Node.prototype.computeText  = function(ctx) {return Coerce.ToText (this.compute(ctx), ctx);};\nexports.Node.prototype.computeBool  = function(ctx) {return Coerce.ToBool (this.compute(ctx), ctx);};\nexports.Node.prototype.computeDate  = function(ctx) {return Coerce.ToDate (this.compute(ctx), ctx);};\nexports.Node.prototype.computeArray = function(ctx) {return Coerce.ToArray(this.compute(ctx), ctx);};\nexports.Node.prototype.computeFunc  = function(ctx) {return Coerce.ToFunc (this.compute(ctx), ctx);};\n\n\n// An operand that just throws an error.\nexports.ThrowError = function(exception) {\n\tthis.exception = exception;\n};\nexports.ThrowError.prototype = new exports.Node();\nexports.ThrowError.prototype.name = \"error\";\nexports.ThrowError.prototype.compute = function(ctx)\n{\n\t// Throw up\n\tthrow this.exception;\n};\n\n// Scoped variable node.\nexports.ScopeVar = function(name) {\n\tthis.name = name;\n};\nexports.ScopeVar.prototype = new exports.Node();\n//exports.ScopeVar.prototype.name = \"scope-var\";\nexports.ScopeVar.prototype.compute = function(ctx) {return ctx.locals[this.name];};\n\n// Scoped variable assignment node.\nexports.LetVars = function(assigns, expr) {\n\tthis.assigns = assigns;\n\tthis.expr = expr;\n};\nexports.LetVars.prototype = new exports.Node();\nexports.LetVars.prototype.name = \"let\";\nexports.LetVars.prototype.compute = function(ctx) {\n\t// Each let-expression can access the ones before it.\n\tvar locals = Object.assign({}, ctx.locals);\n\tctx = ctx.let(locals);\n\tfor (var id in this.assigns) {\n\t\ttry {\n\t\t\tlocals[id] = this.assigns[id].compute(ctx);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow \"computing LET '\" + id + \"': \" + err;\n\t\t}\n\t}\n\treturn this.expr.compute(ctx);\n};\n\n// Call a function by reference.\nexports.CallFunc = function CallFunc(func, args) {\n\tthis.func = func;\n\tthis.args = args;\n};\nexports.CallFunc.prototype = new exports.Node();\nexports.CallFunc.prototype.name = \"function-builtin\";\nexports.CallFunc.prototype.compute = (function(ctx) {\n\t// Check the function parameters.\n\tvar func = this.func.computeFunc(ctx);\n\tif (this.args.length < func.min_args) throw \"Too few parameters for function\";\n\tif (this.args.length > func.max_args) throw \"Too many parameters for function\";\n\t// Compute arguments.\n\tvar vals = [];\n\tfor (var i = 0; i < this.args.length; ++i) vals.push(this.args[i].compute(ctx));\n\t// Call the function!\n\treturn func.apply(ctx, vals);\n});\n\n// JavaScript function call with possible coercion.\nexports.CallJS = function CallJS(func, args) {\n\tthis.func = func;\n\tthis.args = args;\n\tthis.coerce = Coerce.GetCoerceFuncs(func, args);\n\tthis.n_coerce = Math.min(this.args.length, this.coerce.length);\n};\nexports.CallJS.prototype = new exports.Node();\nexports.CallJS.prototype.name = \"function-builtin\";\nexports.CallJS.prototype.compute = function(ctx) {\n\tvar vals = [];\n\tvar i = 0;\n\tfor (; i < this.n_coerce; ++i) vals.push(this.coerce[i](this.args[i].compute(ctx), ctx));\n\tfor (; i < this.args.length; ++i) vals.push(this.args[i].compute(ctx));\n\treturn this.func.apply(ctx, vals);\n};\n\n// Call a function by reference.\nexports.ArrayDef = function ArrayDef(elems) {\n\tthis.elems = elems;\n};\nexports.ArrayDef.prototype = new exports.Node();\nexports.ArrayDef.prototype.name = \"function-builtin\";\nexports.ArrayDef.prototype.compute = (function(ctx) {\n\t// Compute elements.\n\tvar elems = [];\n\tfor (var i = 0; i < this.elems.length; ++i) elems.push(this.elems[i].compute(ctx));\n\treturn elems;\n});\n\n\n// Function declaration operand.\nexports.Function = function(func, captures) {\n\tthis.func = func;\n\tthis.captures = captures;\n};\nexports.Function.prototype = new exports.Node();\nexports.Function.prototype.name = \"function\";\nexports.Function.prototype.is_constant = true;\nexports.Function.prototype.compute = function(ctx) {\n\tthis.func.captured = {};\n\tif (this.captures) {\n\t\tfor (var name in this.captures) {\n\t\t\tthis.func.captured[name] = ctx.locals[name];\n\t\t}\n\t}\n\treturn this.func;\n};\n\n// String constant operand.\nexports.Text = function(value) {this.value = value;};\nexports.Text.prototype = new exports.Node();\nexports.Text.prototype.name = \"string\";\nexports.Text.prototype.is_constant = true;\nexports.Text.prototype.compute = function(ctx) {return this.value;};\n\n// Date constant operand.\nexports.Date = function(value) {this.value = value;};\nexports.Date.prototype = new exports.Node();\nexports.Date.prototype.name = \"date\";\nexports.Date.prototype.is_constant = true;\nexports.Date.prototype.compute = function(ctx) {return this.value;};\n\n// Boolean constant operand.\nexports.Bool = function(value) {this.value = value;};\nexports.Bool.prototype = new exports.Node();\nexports.Bool.prototype.name = \"boolean\";\nexports.Bool.prototype.is_constant = true;\nexports.Bool.prototype.compute = function(ctx) {return this.value;};\n\n// Number constant operand.\nexports.Number = function(value) {this.value = value;};\nexports.Number.prototype = new exports.Node();\nexports.Number.prototype.name = \"number\";\nexports.Number.prototype.is_constant = true;\nexports.Number.prototype.compute = function(ctx) {return this.value;};\n\n// Regex constant operand.\nexports.Regex = function(value) {this.value = value;};\nexports.Regex.prototype = new exports.Node();\nexports.Regex.prototype.name = \"regex\";\nexports.Regex.prototype.is_constant = true;\nexports.Regex.prototype.compute = function(ctx) {return this.value;};\n\n\nvar Compile = require(\"$:/plugins/ebalster/formula/compile.js\");\n\n\n// \"Automatic\" operand; a compiled string value\nexports.Datum = function(origin) {\n\tthis.origin = origin;\n\tthis.text = null;\n\tthis.op = null;\n};\nexports.Datum.prototype = new exports.Node();\nexports.Datum.prototype.name = \"automatic\";\n\nexports.Datum.prototype.compute = function(ctx) {\n\n\tvar newText = this.origin.computeText(ctx);\n\n\tif (newText != this.text)\n\t{\n\t\tthis.text = newText;\n\t\ttry {\n\t\t\tthis.op = Compile.compileDatum(newText);\n\t\t}\n\t\tcatch (err) {\n\t\t\t// Save the error\n\t\t\tthis.op = new exports.ThrowError(\n\t\t\t\terr + \"\\n  source: \\\"\" + this.datum + \"\\\"\\n  from \" + origin.name);\n\t\t}\n\t}\n\n\treturn this.op.compute(ctx.sub());\n};\n\n\n// Transcluded text operand.\nexports.TranscludeText = function(title) {\n\tthis.title = title;\n};\nexports.TranscludeText.prototype = new exports.Node();\nexports.TranscludeText.prototype.name = \"transclude\";\n\nexports.TranscludeText.prototype.compute = function(ctx) {\n\treturn ctx.wiki().getTiddlerText(this.title.computeText(ctx),\"\");\n};\n\n// Transcluded field operand.\nexports.TranscludeField = function(title, field) {\n\tthis.title = title;\n\tthis.field = field;\n};\nexports.TranscludeField.prototype = new exports.Node();\nexports.TranscludeField.prototype.name = \"transclude-field\";\n\nexports.TranscludeField.prototype.compute = function(ctx) {\n\tvar tiddler = ctx.wiki().getTiddler(this.title.computeText(ctx)),\n\t\tfield = this.field.computeText(ctx);\n\treturn (tiddler && $tw.utils.hop(tiddler.fields,field)) ? tiddler.getFieldString(field) : \"\";\n};\n\n// Transcluded index operand.\nexports.TranscludeIndex = function(title, index) {\n\tthis.title = title;\n\tthis.index = index;\n};\nexports.TranscludeIndex.prototype = new exports.Node();\nexports.TranscludeIndex.prototype.name = \"transclude-index\";\n\nexports.TranscludeIndex.prototype.compute = function(ctx) {\n\treturn ctx.wiki().extractTiddlerDataItem(\n\t\tthis.title.computeText(ctx),\n\t\tthis.index.computeText(ctx),\"\");\n};\n\n\n// Variable operand.\nexports.Variable = function(variable) {\n\tthis.variable = variable;\n};\nexports.Variable.prototype = new exports.Node();\nexports.Variable.prototype.name = \"variable\";\n\nexports.Variable.prototype.compute = function(ctx) {\n\treturn ctx.wikiVariable(this.variable.computeText(ctx)) || \"\";\n};\n\n\n// Filter operand, with some lazy-compile optimizations.\nexports.Filter = function(filter) {\n\tthis.filter = filter;\n\tthis.elements = {}; // Each has count, op, value\n\t//this.array = [];\n\tthis.compileError = null;\n};\nexports.Filter.prototype = new exports.Node();\nexports.Filter.prototype.name = \"filter\";\n\nexports.Filter.prototype.compute = function(ctx) {\n\t// Apply the filter and compile each result\n\tvar i, expr, elem, exprs = ctx.wiki().filterTiddlers(this.filter, ctx.widget);\n\n\t// Clear the array and mark all existing elements for removal\n\tfor (expr in this.elements) this.elements[expr].count = 0;\n\t//this.array = [];\n\n\t// Selectively re-compile any filter results that have changed\n\tfor (i = 0; i < exprs.length; ++i)\n\t{\n\t\texpr = exprs[i];\n\t\telem = this.elements[expr];\n\t\t//this.array.push(expr);\n\t\t\n\t\tif (elem) ++elem.count;\n\t\telse try {\n\t\t\tthis.elements[expr] = {count: 1, op: Compile.compileDatum(expr), value: null};\n\t\t}\n\t\tcatch (err) {\n\t\t\t// Save the error\n\t\t\tthis.elements[expr] = new exports.ThrowError(\n\t\t\t\terr + \"\\n  source: \\\"\" + expr + \"\\\"\\n  from \\\"\" + this.filter + \"\\\"\");\n\t\t}\n\t}\n\n\t// Compute (unique) values.  Delete any elements with no copies left.\n\tfor (expr in this.elements) {\n\t\telem = this.elements[expr];\n\t\tif (elem.count === 0) delete this.elements[expr];\n\t\telse elem.val = elem.op.compute(ctx.sub());\n\t}\n\n\t// Return value computes an array of datum values.\n\tvar results = [];\n\tfor (i = 0; i < exprs.length; ++i) {\n\t\texpr = exprs[i];\n\t\tresults.push(this.elements[expr].val);\n\t}\n\treturn results;\n};\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/operators/arithmetic.js": {
            "title": "$:/plugins/ebalster/formula/operators/arithmetic.js",
            "created": "20171212223503019",
            "modified": "20171212223539769",
            "module-type": "formula-operator",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Unary sign operators\nexports.uplus    = {arity: 1, position: \"pre\",  operator: \"+\", function: \"uplus\"};\nexports.uminus   = {arity: 1, position: \"pre\",  operator: \"-\", function: \"uminus\"};\n\n// Add\nexports.plus     = {arity: 2, precedence: 10,   operator: \"+\", function: \"add\"};\nexports.minus    = {arity: 2, precedence: 10,   operator: \"-\", function: \"sub\"};\n\n// Multiply\nexports.multiply = {arity: 2, precedence: 20,   operator: \"*\", function: \"mul\"};\nexports.divide   = {arity: 2, precedence: 20,   operator: \"/\", function: \"div\"};\n\n// Exponential\nexports.pow      = {arity: 2, precedence: 30,   operator: \"^\", function: \"pow\", associativity: \"right\"};\n\n// Percentage\nexports.percent  = {arity: 1, position: \"post\", operator: \"%\", function: \"percent\"};\n\n})();"
        },
        "$:/plugins/ebalster/formula/operators/compare.js": {
            "title": "$:/plugins/ebalster/formula/operators/compare.js",
            "created": "20171214050556123",
            "modified": "20171214050739104",
            "module-type": "formula-operator",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Equality\nexports.eq  = {arity: 2, precedence: 0,   operator: \"=\",  function: \"eq\"};\nexports.ne  = {arity: 2, precedence: 0,   operator: \"<>\", function: \"ne\"};\n\n// Inequality\nexports.gt  = {arity: 2, precedence: 0,   operator: \">\",  function: \"gt\"};\nexports.gte = {arity: 2, precedence: 0,   operator: \">=\", function: \"gte\"};\nexports.lt  = {arity: 2, precedence: 0,   operator: \"<\",  function: \"lt\"};\nexports.lte = {arity: 2, precedence: 0,   operator: \"<=\", function: \"lte\"};\n\n})();"
        },
        "$:/plugins/ebalster/formula/operators/strings.js": {
            "title": "$:/plugins/ebalster/formula/operators/strings.js",
            "created": "20171213003246267",
            "modified": "20171213003346943",
            "module-type": "formula-operator",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n// Concatenate\nexports.concatenate = {arity: 2, precedence: 4, operator: \"&\", function: \"cat\"};\n\n})();"
        },
        "$:/plugins/ebalster/formula/readme": {
            "title": "$:/plugins/ebalster/formula/readme",
            "caption": "readme",
            "created": "20171220042006170",
            "modified": "20171220212520970",
            "revision": "0",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "''Formula'' for TiddlyWiki, version {{$:/plugins/ebalster/formula!!version}}, by Evan Balster. Updated by [[Joshua Fontany||https://joshuafontany.github.com/]]\n\nFormulas are written between `(=` mushroom brackets `=)`.  Where possible, their functions and syntax are designed to emulate popular spreadsheet software (Microsoft Excel and Google Sheets).  They //also// support WikiText-like syntax for `{{`transclusion`}}`, `[`filters`]`, `<<`variables`>>`, and a large number of functions.\n\nFormulas can also be evaluated by the `$formula` widget, the `$formula-vars` widget and the `<<formula>>` macro.\n\nFurther documentation is available here: [[https://evanbalster.com/tiddlywiki/formulas.html]].\n\nThis plugin is a work in progress; please report any issues on GitHub: [[https://github.com/EvanBalster/TiddlyWikiFormula/issues]]."
        },
        "$:/plugins/ebalster/formula/settings": {
            "title": "$:/plugins/ebalster/formula/settings",
            "caption": "readme",
            "created": "20171221001634811",
            "modified": "20171221002035357",
            "revision": "0",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "Currently no global settings are implemented, but formulas can be controlled by setting some global macros.  For example:\n\n|Macro|Meaning|h\n|`\\define formulaFixed() 2`|makes numbers display with 2 decimal points.|\n|`\\define formulaPrecision() 4`|makes numbers display with 4 significant digits (but `formulafixed` takes priority.|\n|`\\define formulaDateFormat() YYYY-MM-0DD`|Sets a date display format using the same rules as TiddlyWiki.|\n\nPlace these at the top of the tiddler where they should take effect, or create a tiddler tagged with <<tag $:/tags/Macro>> to make them apply to all tiddlers.\n\nIn the future, we'll probably add some global settings here..."
        },
        "$:/plugins/ebalster/formula/value.js": {
            "title": "$:/plugins/ebalster/formula/value.js",
            "created": "20171211195003728",
            "description": "",
            "modified": "20171211195014088",
            "module-type": "library",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n\"use strict\";\n\n\nexports.NumberFormatFunc = null;\n\nexports.DateFormat = \"0hh:0mm, DDth MMM YYYY\";\n\n\n// Base type for formula values\nexports.Value = function() {\n  this.name = \"unknown-value\";\n};\n\n// Get the value payload\nexports.Value.prototype.get = function()    {return undefined;};\n\n// Describe the value\nexports.Value.prototype.describe = function()    {return this.name + \" (\" + String(this.get()) + \")\";};\n\nexports.Value.prototype.toString = function()    {return \"[Value \" + this.describe() + \"]\";};\n\n// Get the value as a number (generic implementation)\nexports.Value.prototype.asNum = function() {\n  var v = this.get();\n  var n = Number(v);\n  if (isNaN(n)) throw \"Cannot convert \" + this.describe() + \" to a number!\";\n  return n;\n};\n\n// Get the value as a number, summing arrays (generic implementation)\nexports.Value.prototype.asSum = function() {\n  var v = this.get();\n  var n;\n  if (Array.isArray(v)) {n = 0; for (var i = 0; i < v.length; ++i) n += Number(v[i]);}\n  else                  n = Number(v);\n  if (isNaN(n)) throw \"Cannot sum \" + this.describe() + \" to a number!\";\n  return n;\n};\n\n// More convertsions\nexports.Value.prototype.asString = function() {\n  return String(this.get());\n};\nexports.Value.prototype.asArray = function() {\n  var v = this.get();\n  if (Array.isArray(v)) return v;\n  else return [v];\n};\nexports.Value.prototype.asDate = function() {\n  throw \"Cannot convert \" + this.describe() + \" to a date!\";\n};\n\n\n// Undefined value.\nexports.V_Undefined = function() {\n  this.name = \"undefined\";\n};\nexports.V_Undefined.prototype = new exports.Value();\nexports.V_Undefined.prototype.get = function()    {return undefined;};\n\n\n// Array value.\nexports.V_Array = function(value) {\n  this.name = \"array\";\n\n  this.value = value;\n};\nexports.V_Array.prototype = new exports.Value();\nexports.V_Array.prototype.get   = function() {return this.value;};\nexports.V_Array.prototype.asNum = function() {throw \"Cannot convert \" + this.describe() + \" to number!\";};\nexports.V_Array.prototype.asSum = function() {\n  var n = 0;\n  for (var i = 0; i < this.value.length; ++i) n += this.value[i].asNum();\n  if (isNaN(n)) throw \"Cannot sum \" + this.describe() + \" to a number!\";\n  return n;\n};\nexports.V_Array.prototype.asString     = function() {\n  var result = \"\";\n  for (var i = 0; i < this.value.length; ++i) {\n    var part = this.value[i].asString();\n    if (i && part.length) result += \" \";\n    if (part.indexOf(/\\s/g) >= 0) result += \"[[\" + part + \"]]\";\n    else result += part;\n  }\n  return result;\n};\n\n\n// String value.\nexports.V_Text = function(value) {\n  this.name = \"string\";\n\n  this.value = value;\n};\nexports.V_Text.prototype = new exports.Value();\nexports.V_Text.prototype.get    = function()    {return this.value;};\n//exports.V_Text.prototype.asDate = function() {return $tw.utils.parseDate();}\n\n\n// Date value.\nexports.V_Date = function(value) {\n  this.name = \"date\";\n\n  this.value = value;\n};\nexports.V_Date.prototype = new exports.Value();\nexports.V_Date.prototype.get      = function()    {return this.value;};\nexports.V_Date.prototype.asString = function()    {return $tw.utils.formatDateString(this.value, exports.DateFormat);};\nexports.V_Date.prototype.asNum    = function()    {throw \"Date-to-Number conversion usupported\";};\nexports.V_Date.prototype.asSum    = function()    {throw \"Date-to-Number conversion usupported\";};\nexports.V_Date.prototype.asDate   = function()    {return this.value;};\n\n\n// Boolean value.\nexports.V_Bool = function(value) {\n  this.name = \"boolean\";\n\n  this.value = value;\n};\nexports.V_Bool.prototype = new exports.Value();\nexports.V_Bool.prototype.get      = function()    {return this.value;};\nexports.V_Bool.prototype.asString = function()    {return this.value ? \"TRUE\" : \"FALSE\";};\nexports.V_Bool.prototype.asNum    = function()    {return this.value ? 1 : 0;};\nexports.V_Bool.prototype.asSum    = function()    {return this.value ? 1 : 0;};\n\n\n// Number value.\nexports.V_Num = function(value) {\n  this.name = \"number\";\n\n  this.value = value;\n};\nexports.V_Num.prototype = new exports.Value();\nexports.V_Num.prototype.get      = function()    {return this.value;};\nexports.V_Num.prototype.asString = function()    {return (exports.NumberFormatFunc || String)(this.value);};\nexports.V_Num.prototype.asNum    = function()    {return this.value;};\nexports.V_Num.prototype.asSum    = function()    {return this.value;};\n\n\n// Percentage value.\nexports.V_Percent = function(value) {\n  this.name = \"percentage\";\n\n  this.value = value;\n};\nexports.V_Percent.prototype = new exports.V_Num();\nexports.V_Percent.prototype.asString = function()\n{\n  return (exports.NumberFormatFunc || String)(100*this.value) + \"%\";\n};\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/widgets/attributes/formula.js": {
            "title": "$:/plugins/ebalster/formula/widgets/attributes/formula.js",
            "created": "20171225035721011",
            "description": "Evaluates a formula as an attribute value string.",
            "modified": "20171225035808674",
            "module-type": "attributevalue",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Compile = require(\"$:/plugins/ebalster/formula/compile.js\");\nvar Compute = require(\"$:/plugins/ebalster/formula/compute.js\");\nvar Nodes   = require(\"$:/plugins/ebalster/formula/nodes.js\");\n\nvar FormulaAttribute = function(widget, node) {\n\tthis.widget = widget;\n\tthis.formula = node.formula;\n\ttry {\n\t\tthis.compiledFormula = Compile.compileFormula(this.formula);\n\t}\n\tcatch (err) {\n\t\tthis.compiledFormula = new Nodes.ThrowError(err);\n\t}\n\tthis.value = this.compute();\n};\n\n/*\nInherit from the base ??? class\n*/\n//FormulaAttribute.prototype = new Attribute();\n\nFormulaAttribute.prototype.compute = function() {\n\t// Compute options\n\tthis.formatOptions =\n\t{\n\t\tfixed:        (this.widget.getVariable(\"formulaFixed\")),\n\t\tprecision:    (this.widget.getVariable(\"formulaPrecision\")),\n\t\tnumberFormat: (this.widget.getVariable(\"formulaNumberFormat\")),\n\t\tdateFormat:   (this.widget.getVariable(\"formulaDateFormat\")),\n\t};\n\t// Execute the formula.\n\ttry {\n\t\treturn Compute.computeFormula(this.compiledFormula, this.widget, this.formatOptions);\n\t}\n\tcatch (err) {\n\t\treturn \"\";\n\t}\n};\n\nFormulaAttribute.prototype.refresh = function(changedTiddlers) {\n\tthis.value = this.compute();\n\treturn this.value;\n};\n\n\nexports.formula = FormulaAttribute;\n\n})();\n\t"
        },
        "$:/plugins/ebalster/formula/widgets/formula-vars.js": {
            "title": "$:/plugins/ebalster/formula/widgets/formula-vars.js",
            "created": "20171216003055342",
            "description": "As the $vars widget, but each attribute is interpreted as a formula.",
            "modified": "20171222071557661",
            "module-type": "widget",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar Compile = require(\"$:/plugins/ebalster/formula/compile.js\");\nvar Compute = require(\"$:/plugins/ebalster/formula/compute.js\");\n\nvar FormulaVarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFormulaVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nFormulaVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\n\tif (this.formulaError) {\n\t\t// Show an error.\n\t\tvar parseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t}, children: [\n\t\t\t{type: \"text\", text: this.formulaError}\n\t\t]}];\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t}\n\telse {\n\t\t// Construct and render the child widgets.\n\t\tthis.makeChildWidgets();\n\t}\n\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nRecompute formulas\n*/\nFormulaVarsWidget.prototype.formula_recompute = function() {\n\t// Parse variables\n\tvar self = this;\n\n\tthis.formatOptions =\n\t{\n\t\tfixed:        (this.getAttribute(\"$fixed\")        || this.parentWidget.getVariable(\"formulaFixed\")),\n\t\tprecision:    (this.getAttribute(\"$precision\")    || this.parentWidget.getVariable(\"formulaPrecision\")),\n\t\tnumberFormat: (this.getAttribute(\"$numberFormat\") || this.parentWidget.getVariable(\"formulaNumberFormat\")),\n\t\tdateFormat:   (this.getAttribute(\"$dateFormat\")   || this.parentWidget.getVariable(\"formulaDateFormat\")),\n\t};\n\n\t// Deprecation\n\tif (this.getAttribute(\"$toFixed\")) {this.formulaError = \"Change '$toFixed' to '$fixed'.\"; return;}\n\tif (this.getAttribute(\"$toPrecision\")) {this.formulaError = \"Change '$toPrecision' to '$precision'.\"; return;}\n\n\tif (!this.currentValues)\n\t{\n\t\t// Initial values\n\t\tthis.currentValues = {};\n\t\tthis.formulaSrc = {};\n\t\tthis.formulaComp = {};\n\t}\n\n\tthis.formulaError = null;\n\n\ttry {\n\t\tif (this.getAttribute(\"$noRefresh\")) throw \"Illegal $noRefresh attribute; use $noRebuild instead.\";\n\n\t\t$tw.utils.each(this.attributes,function(val,key) {\n\t\t\tif(key.charAt(0) !== \"$\") {\n\t\t\t\t// Recompile if necessary\n\t\t\t\tif (self.formulaSrc[key] != val) {\n\t\t\t\t\tself.formulaSrc[key] = val;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tself.formulaComp[key] = Compile.compileFormula(self.formulaSrc[key]);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tself.formulaSrc[key] = null;\n\t\t\t\t\t\tthrow \"Variable \" + key + \": \" + String(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Recompute the formula\n\t\t\t\tif (self.formulaComp[key]) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tself.currentValues[key] = Compute.computeFormula(\n\t\t\t\t\t\t\tself.formulaComp[key], self, self.formatOptions);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tthrow \"Variable \" + key + \": \" + String(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Variable \" + key + \": Formula not assigned\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tcatch (err) {\n\t\tthis.formulaError = String(err);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nFormulaVarsWidget.prototype.execute = function() {\n\t// Recompute formulas\n\tthis.formula_recompute();\n\n\tif (!this.formulaError) {\n\t\tfor (var key in this.currentValues) {\n\t\t\tthis.setVariable(key, this.currentValues[key]);\n\t\t}\n\t}\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nFormulaVarsWidget.prototype.refresh = function formulaVarsRefresh(changedTiddlers) {\n\tthis.computeAttributes();\n\tvar oldValues = Object.assign({}, this.currentValues || {}), oldError = this.formulaError;\n\tthis.formula_recompute();\n\n\t// Did any computed values change?\n\tvar changedValues = false;\n\tfor (var key in this.currentValues) {\n\t\tif (this.currentValues[key] !== oldValues[key]) {\n\t\t\tthis.setVariable(key, this.currentValues[key]);\n\t\t\tchangedValues = true;\n\t\t}\n\t}\n\n\t// Option to suppress full refreshing\n\tif (this.getAttribute(\"$noRebuild\") === \"true\") changedValues = false;\n\tif (this.formulaError !== oldError) changedValues = true;\n\n\tif(changedValues) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"formula-vars\"] = FormulaVarsWidget;\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/widgets/formula.js": {
            "title": "$:/plugins/ebalster/formula/widgets/formula.js",
            "created": "20171210232543292",
            "description": "Evaluates a formula.",
            "modified": "20171212194059701",
            "module-type": "widget",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar Compile = require(\"$:/plugins/ebalster/formula/compile.js\");\nvar Compute = require(\"$:/plugins/ebalster/formula/compute.js\");\n\nvar FormulaWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFormulaWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFormulaWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.rerender(parent,nextSibling);\n};\n\nFormulaWidget.prototype.rerender = function(parent, nextSibling) {\n\n\tthis.removeChildDomNodes();\n\n\tvar parseTreeNodes;\n\n\tif (this.formulaError) {\n\t\t// Show an error as a tc-error span.\n\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t}, children: [\n\t\t\t{type: \"text\", text: this.formulaError}\n\t\t]}];\n\t}\n\telse {\n\t\t// Parse the value, or, failing this, produce a text node.\n\t\tvar parser = this.wiki.parseText(\n\t\t\tthis.wikifyType, this.currentValue,\n\t\t\t{parseAsInline: this.wikifyMode === \"inline\"});\n\t\tparseTreeNodes = (parser ? parser.tree : [{type: \"text\", text: this.currentValue}]);\n\t}\n\n\t// Construct and render the child widgets.\n\tthis.makeChildWidgets(parseTreeNodes);\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFormulaWidget.prototype.execute = function() {\n\n\tvar oldFormula = this.formula;\n\n\t// Get parameters from our attributes\n\tthis.formula   = this.getAttribute(\"formula\");\n\tthis.debug     = this.getAttribute(\"debug\");\n\n\tthis.wikifyType = this.getAttribute(\"outputType\");\n\tthis.wikifyMode = this.getAttribute(\"outputMode\",\"inline\");\n\n\tthis.formatOptions =\n\t{\n\t\tfixed:        (this.getAttribute(\"fixed\")        || this.getVariable(\"formulaFixed\")),\n\t\tprecision:    (this.getAttribute(\"precision\")    || this.getVariable(\"formulaPrecision\")),\n\t\tnumberFormat: (this.getAttribute(\"numberFormat\") || this.getVariable(\"formulaNumberFormat\")),\n\t\tdateFormat:   (this.getAttribute(\"dateFormat\")   || this.getVariable(\"formulaDateFormat\")),\n\t};\n\n\t// Deprecation\n\tif (this.getAttribute(\"toFixed\")) {this.formulaError = \"Change 'toFixed' to 'fixed'.\"; return;}\n\tif (this.getAttribute(\"toPrecision\")) {this.formulaError = \"Change 'toPrecision' to 'precision'.\"; return;}\n\n\t// Compile the formula, if it has changed, yielding compiledFormula\n\tif(this.formula !== oldFormula) {\n\t\t// Clear the error flag\n\t\tthis.formulaError = null;\n\t\tthis.compiledFormula = null;\n\t\tif (this.formula) {\n\t\t\ttry {\n\t\t\t\tthis.compiledFormula = Compile.compileFormula(this.formula);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tthis.formulaError = String(err);\n\t\t\t\tthis.formula = null;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compute the formula, yielding currentValue\n\tif(this.compiledFormula) {\n\t\ttry {\n\t\t\tthis.currentValue = Compute.computeFormula(this.compiledFormula, this, this.formatOptions, Boolean(this.debug));\n\t\t}\n\t\tcatch (err) {\n\t\t\tthis.formulaError = String(err);\n\t\t}\n\t}\n\telse {\n\t\tthis.formulaError = \"Error: formula not assigned\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFormulaWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldValue = this.currentValue, oldError = this.formulaError;\n\tthis.execute();\n\tif(this.oldError !== this.formulaError || this.currentValue !== oldValue) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\t//   We DON'T call refreshSelf() because it call execute() again\n\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\tthis.rerender(this.parentDomNode,nextSibling);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.formula = FormulaWidget;\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/wikiparser/attributes/formula.js": {
            "title": "$:/plugins/ebalster/formula/wikiparser/attributes/formula.js",
            "created": "20171224060415431",
            "description": "Tag attribute rule for formulas.  Ex. `(= 2+2 =)`",
            "modified": "20171225042523039",
            "module-type": "attributerule",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\nexports.formula = function(source, pos, node) {\n\t// Is it a formula?\n\tvar reFormulaValue = /\\(=(([^=]+|=[^\\)])*)=\\)/g;\n\n\tvar value = $tw.utils.parseTokenRegExp(source,pos,reFormulaValue);\n\tif (!value) return null;\n\n\tnode.type = \"formula\";\n\tnode.formula = value.match[1];\n\tnode.end = value.end;\n\treturn node;\n};\n\n})();\n"
        },
        "$:/plugins/ebalster/formula/wikiparser/formula.js": {
            "title": "$:/plugins/ebalster/formula/wikiparser/formula.js",
            "created": "20171211033327565",
            "description": "Wiki text inline rule for formulas.  Ex. `((=2+2))`",
            "modified": "20171211181716654",
            "module-type": "wikirule",
            "revision": "0",
            "tags": "",
            "type": "application/javascript",
            "text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"formula\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\(=/mg;\n\tthis.endMatchRegExp = /=\\)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end marker\n\tthis.endMatchRegExp.lastIndex = this.parser.pos;\n\tvar match = this.endMatchRegExp.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"formula\",\n\t\tattributes: {\n\t\t\tformula: {type: \"string\", value: text},\n\t\t}\n\t}];\n};\n\n})();\n"
        }
    }
}

{
    "tiddlers": {
        "$:/plugins/flibbles/relink/js/bulkops.js": {
            "text": "/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n *  This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\toptions = options || {};\n\tvar failures = [];\n\tvar indexer = utils.getIndexer(this);\n\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\n\tfor (var title in records) {\n\t\tvar entries = records[title],\n\t\t\tchanges = Object.create(null),\n\t\t\tupdate = false,\n\t\t\tfails = false;\n\t\tfor (var field in entries) {\n\t\t\tvar entry = entries[field];\n\t\t\tfails = fails || entry.impossible;\n\t\t\tif (entry.output) {\n\t\t\t\tchanges[field] = entry.output;\n\t\t\t\tupdate = true;\n\t\t\t}\n\t\t}\n\t\tif (fails) {\n\t\t\tfailures.push(title);\n\t\t}\n\t\t// If any fields changed, update tiddler\n\t\tif (update) {\n\t\t\tconsole.log(\"Renaming '\"+fromTitle+\"' to '\"+toTitle+\"' in '\" + title + \"'\");\n\n\t\t\tvar tiddler = this.getTiddler(title);\n\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,this.getModificationFields())\n\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\tthis.addTiddler(newTiddler);\n\t\t\t// If the title changed, we need to perform a nested rename\n\t\t\tif (newTiddler.fields.title !== title) {\n\t\t\t\tthis.deleteTiddler(title);\n\t\t\t\tthis.relinkTiddler(title, newTiddler.fields.title,options);\n\t\t\t}\n\t\t}\n\t};\n\tif (failures.length > 0) {\n\t\tvar options = $tw.utils.extend(\n\t\t\t{ variables: {to: toTitle, from: fromTitle},\n\t\t\t  wiki: this},\n\t\t\toptions );\n\t\tlanguage.reportFailures(failures, options);\n\t}\n};\n\n})();\n",
            "module-type": "startup",
            "title": "$:/plugins/flibbles/relink/js/bulkops.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/indexer.js": {
            "text": "/*\\\nmodule-type: indexer\n\nIndexes results from tiddler reference reports so we don't have to call them\nso much.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"./utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\nfunction Indexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nIndexer.prototype.init = function() {\n\tthis.rebuild();\n};\n\nIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n\tthis.backIndex = null;\n\tthis.contexts = Object.create(null);\n\tthis.changedTiddlers = undefined;\n\tthis.lastRelinkFrom = undefined;\n};\n\nIndexer.prototype.update = function(updateDescriptor) {\n\tif (!this.index) {\n\t\treturn;\n\t}\n\tvar title;\n\tif (!this.changedTiddlers) {\n\t\tthis.changedTiddlers = Object.create(null);\n\t}\n\tif (updateDescriptor.old.exists) {\n\t\ttitle = updateDescriptor.old.tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {deleted: true};\n\t\tthis._purge(title);\n\t}\n\tif (updateDescriptor['new'].exists) {\n\t\t// If its the same tiddler as old, this overrides the 'deleted' entry\n\t\ttitle = updateDescriptor['new'].tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {modified: true};\n\t}\n};\n\nIndexer.prototype.lookup = function(title) {\n\tthis._upkeep();\n\treturn this.index[title];\n};\n\nIndexer.prototype.reverseLookup = function(title) {\n\tthis._upkeep();\n\treturn this.backIndex[title] || Object.create(null);\n};\n\nIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tthis._upkeep();\n\tvar shortlist = undefined;\n\tif (this.lastRelinkFrom === fromTitle) {\n\t\tif (this.lastRelinkTo === toTitle) {\n\t\t\t// We need to reintroduce the relink cache, where temporary info\n\t\t\t// was stored.\n\t\t\toptions.cache = this.lastRelinkCache;\n\t\t\treturn this.lastRelinkResult;\n\t\t}\n\t\tshortlist = Object.keys(this.lastRelinkResult);\n\t}\n\tthis.lastRelinkResult = utils.getRelinkResults(this.wiki, fromTitle, toTitle, this.context, shortlist, options);\n\tthis.lastRelinkTo = toTitle;\n\tthis.lastRelinkFrom = fromTitle;\n\tthis.lastRelinkCache = options.cache;\n\treturn this.lastRelinkResult;\n};\n\nIndexer.prototype._upkeep = function() {\n\tvar title;\n\tif (this.changedTiddlers && (this.context.changed(this.changedTiddlers) || this.context.parent.changed(this.changedTiddlers))) {\n\t\t// If global macro context or whitelist context changed, wipe all\n\t\tthis.rebuild();\n\t}\n\tif (!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tthis.backIndex = Object.create(null);\n\t\tthis.context = utils.getWikiContext(this.wiki);\n\t\tvar titles = this.wiki.getRelinkableTitles();\n\t\tfor (var i = 0; i < titles.length; i++) {\n\t\t\tthis._populate(titles[i]);\n\t\t};\n\t} else if (this.changedTiddlers) {\n\t\t// If there are cached changes, we apply them now.\n\t\tfor (title in this.contexts) {\n\t\t\tvar tiddlerContext = this.contexts[title];\n\t\t\tif (tiddlerContext.changed(this.changedTiddlers)) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._dropResults(title);\n\t\t\t\t// Wipe this change, so we don't risk updating it twice.\n\t\t\t\tthis.changedTiddlers[title] = undefined;\n\t\t\t}\n\t\t}\n\t\tfor (title in this.changedTiddlers) {\n\t\t\tvar change = this.changedTiddlers[title];\n\t\t\tif (change && change.modified) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._dropResults(title);\n\t\t\t}\n\t\t}\n\t\tthis.changedTiddlers = undefined;\n\t}\n};\n\nIndexer.prototype._purge = function(title) {\n\tfor (var entry in this.index[title]) {\n\t\tdelete this.backIndex[entry][title];\n\t}\n\tdelete this.contexts[title];\n\tdelete this.index[title];\n};\n\n// This drops the cached relink results if unsanctioned tiddlers were changed\nIndexer.prototype._dropResults = function(title) {\n\tvar tiddler = this.wiki.getTiddler(title);\n\tif (title !== this.lastRelinkFrom\n\t&& title !== this.lastRelinkTo\n\t&& (!tiddler\n\t\t|| !$tw.utils.hop(tiddler.fields, 'draft.of') // is a draft\n\t\t|| tiddler.fields['draft.of'] !== this.lastRelinkFrom // draft of target\n\t\t|| references(this.index[title], this.lastRelinkFrom))) { // draft references target\n\t\t// This is not the draft of the last relinked title,\n\t\t// so our cached results should be wiped.\n\t\tthis.lastRelinkFrom = undefined;\n\t}\n};\n\nfunction references(list, item) {\n\treturn list !== undefined && list[item];\n};\n\nIndexer.prototype._populate = function(title) {\n\t// Fetch the report for a title, and populate the indexes with result\n\tvar tiddlerContext = new TiddlerContext(this.wiki, this.context, title);\n\tvar references = utils.getTiddlerRelinkReferences(this.wiki, title, tiddlerContext);\n\tthis.index[title] = references;\n\tif (tiddlerContext.hasImports()) {\n\t\tthis.contexts[title] = tiddlerContext;\n\t}\n\tfor (var ref in references) {\n\t\tthis.backIndex[ref] = this.backIndex[ref] || Object.create(null);\n\t\tthis.backIndex[ref][title] = references[ref];\n\t}\n};\n\nexports.RelinkIndexer = Indexer;\n",
            "module-type": "indexer",
            "title": "$:/plugins/flibbles/relink/js/indexer.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/language.js": {
            "text": "/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nexports.getString = function(title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(\"text/plain\", title, options);\n};\n\nvar logger;\n\nexports.reportFailures = function(failureList, options) {\n\tif (!logger) {\n\t\tlogger = new $tw.utils.Logger(\"Relinker\");\n\t}\n\tvar alertString = this.getString(\"Error/ReportFailedRelinks\", options)\n\tvar alreadyReported = Object.create(null);\n\tvar reportList = [];\n\t$tw.utils.each(failureList, function(f) {\n\t\tif (!alreadyReported[f]) {\n\t\t\tif ($tw.browser) {\n\t\t\t\t// This might not make the link if the title is complicated.\n\t\t\t\t// Whatever.\n\t\t\t\treportList.push(\"\\n* [[\" + f + \"]]\");\n\t\t\t} else {\n\t\t\t\treportList.push(\"\\n* \" + f);\n\t\t\t}\n\t\t\talreadyReported[f] = true;\n\t\t}\n\t});\n\tlogger.alert(alertString + \"\\n\" + reportList.join(\"\"));\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/language.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/mangler.js": {
            "text": "/*\\\nmodule-type: widget\n\nCreates a mangler widget for field validation. This isn't meant to be used\nby the user. It's only used in Relink configuration.\n\n\\*/\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nvar RelinkManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"relink-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"relink-add-operator\", handler: \"handleAddOperatorEvent\"},\n\t\t{type: \"relink-add-parameter\", handler: \"handleAddParameterEvent\"},\n\t\t{type: \"relink-add-attribute\", handler: \"handleAddAttributeEvent\"}\n\t]);\n};\n\nexports.relinkmangler = RelinkManglerWidget;\n\nRelinkManglerWidget.prototype = new Widget();\n\n// This wraps alert so it can be monkeypatched during testing.\nRelinkManglerWidget.prototype.alert = function(message) {\n\talert(message);\n};\n\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (typeof param !== \"object\" || !param.field) {\n\t\t// Can't handle it.\n\t\treturn true;\n\t}\n\tvar trimmedName = param.field.toLowerCase().trim();\n\tif (!trimmedName) {\n\t\t// Still can't handle it, but don't warn.\n\t\treturn true;\n\t}\n\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\tthis.alert($tw.language.getString(\n\t\t\t\"InvalidFieldName\",\n\t\t\t{variables:\n\t\t\t\t{fieldName: trimmedName}\n\t\t\t}\n\t\t));\n\t} else {\n\t\tadd(this.wiki, \"fields\", trimmedName);\n\t}\n\treturn true;\n};\n\n/**Not much validation, even though there are definitely illegal\n * operator names. If you input on, Relink won't relink it, but it\n * won't choke on it either. Tiddlywiki will...\n */\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param) {\n\t\tadd(this.wiki, \"operators\", param.operator);\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.macro && param.parameter) {\n\t\tif (/\\s/.test(param.macro.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"Error/InvalidMacroName\",\n\t\t\t\t{ variables: {macroName: param.macro},\n\t\t\t\t  wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.parameter.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"Error/InvalidParameterName\",\n\t\t\t\t{ variables: {parameterName: param.parameter},\n\t\t\t\t  wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"macros\", param.macro, param.parameter);\n\t\t}\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.element && param.attribute) {\n\t\tif (/[ \\/]/.test(param.element.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"Error/InvalidElementName\",\n\t\t\t\t{ variables: {elementName: param.element},\n\t\t\t\t  wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.attribute.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"Error/InvalidAttributeName\",\n\t\t\t\t{ variables: {attributeName: param.attribute},\n\t\t\t\t  wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"attributes\", param.element, param.attribute);\n\t\t}\n\t}\n\treturn true;\n};\n\nfunction add(wiki, category/*, path parts*/) {\n\tvar path = \"$:/config/flibbles/relink/\" + category;\n\tfor (var x = 2; x < arguments.length; x++) {\n\t\tvar part = arguments[x];\n\t\t// Abort if it's falsy, or only whitespace. Also, trim spaces\n\t\tif (!part || !(part = part.trim())) {\n\t\t\treturn;\n\t\t}\n\t\tpath = path + \"/\" + part;\n\t}\n\tvar def = utils.getDefaultType(wiki);\n\twiki.addTiddler({title: path, text: def});\n};\n",
            "module-type": "widget",
            "title": "$:/plugins/flibbles/relink/js/mangler.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/settings.js": {
            "text": "/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar utils = require('./utils');\n\n///// Legacy. You used to be able to access the type from utils.\nexports.getType = utils.getType;\n/////\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/settings.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/utils.js": {
            "text": "/*\\\nmodule-type: library\n\nUtility methods for relink.\n\n\\*/\n\nvar macroFilter =  \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\n * except that this also takes care of migrating V1 relink modules.\n */\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\n\tvar results = Object.create(null);\n\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\n\t\tvar key = module[nameField];\n\t\tif (key !== undefined) {\n\t\t\tresults[key] = module;\n\t\t} else {\n\t\t\tfor (var entry in module) {\n\t\t\t\tresults[entry] = {\n\t\t\t\t\trelink: module[entry],\n\t\t\t\t\treport: function() {}};\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\n\tvar tiddler = wiki.getTiddler(title),\n\t\treferences = Object.create(null),\n\t\toptions = {settings: context, wiki: wiki};\n\tif (tiddler) {\n\t\ttry {\n\t\t\tfor (var relinker in getRelinkOperators()) {\n\t\t\t\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\n\t\t\t\t\treferences[title] = references[title] || [];\n\t\t\t\t\treferences[title].push(blurb);\n\t\t\t\t}, options);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (e.message) {\n\t\t\t\te.message = e.message + \"\\nWhen reporting '\" + title + \"' Relink references\";\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t}\n\treturn references;\n};\n\n/** Returns a pair like this,\n *  { title: {field: entry, ... }, ... }\n */\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle) {\n\t\tif (tiddlerList === undefined) {\n\t\t\ttiddlerList = wiki.getRelinkableTitles();\n\t\t}\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif(tiddler && !tiddler.fields[\"plugin-type\"]) {\n\t\t\t\ttry {\n\t\t\t\t\tvar entries = Object.create(null),\n\t\t\t\t\t\toperators = getRelinkOperators();\n\t\t\t\t\toptions.settings = new Contexts.tiddler(wiki, context, title);\n\t\t\t\t\tfor (var operation in operators) {\n\t\t\t\t\t\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\n\t\t\t\t\t}\n\t\t\t\t\tfor (var field in entries) {\n\t\t\t\t\t\t// So long as there is one key,\n\t\t\t\t\t\t// add it to the change list.\n\t\t\t\t\t\tchangeList[title] = entries;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn changeList;\n};\n\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\n\nexports.getContext = function(name) {\n\treturn Contexts[name];\n};\n\nexports.getWikiContext = function(wiki) {\n\t// This gives a fresh context every time. It is up to the indexer or\n\t// the cache to preserve those contexts for as long as needed.\n\tvar whitelist = new Contexts.whitelist(wiki);\n\treturn new Contexts.import(wiki, whitelist, macroFilter);\n};\n\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\n */\nexports.getIndexer = function(wiki) {\n\tif (!wiki._relink_indexer) {\n\t\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\"RelinkIndexer\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\n\t}\n\treturn wiki._relink_indexer;\n};\n\n/**Relinking supports a cache that persists throughout a whole relink op.\n * This is because the Tiddlywiki caches may get wiped multiple times\n * throughout the course of a relink.\n */\nexports.getCacheForRun = function(options, cacheName, initializer) {\n\toptions.cache = options.cache || Object.create(null);\n\tif (!$tw.utils.hop(options.cache, cacheName)) {\n\t\toptions.cache[cacheName] = initializer();\n\t}\n\treturn options.cache[cacheName];\n};\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nexports.getType = function(name) {\n\tvar Handler = getFieldTypes()[name];\n\treturn Handler ? new Handler() : undefined;\n};\n\nexports.getTypes = function() {\n\t// We don't return fieldTypes, because we don't want it modified,\n\t// and we need to filter out legacy names.\n\tvar rtn = Object.create(null);\n\tfor (var type in getFieldTypes()) {\n\t\tvar typeObject = getFieldTypes()[type];\n\t\trtn[typeObject.typeName] = typeObject;\n\t}\n\treturn rtn;\n};\n\nexports.getDefaultType = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/settings/default-type\");\n\tvar defaultType = tiddler && tiddler.fields.text;\n\t// make sure the default actually exists, otherwise default\n\treturn fieldTypes[defaultType] ? defaultType : \"title\";\n};\n\nvar fieldTypes;\n\nfunction getFieldTypes() {\n\tif (!fieldTypes) {\n\t\tfieldTypes = Object.create(null);\n\t\t$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\t\t\tfunction NewType() {};\n\t\t\tNewType.prototype = exports;\n\t\t\tNewType.typeName = exports.name;\n\t\t\tfieldTypes[exports.name] = NewType;\n\t\t\t// For legacy, if the NewType doesn't have a report method, we add one\n\t\t\tif (!exports.report) {\n\t\t\t\texports.report = function() {};\n\t\t\t}\n\t\t\t// Also for legacy, some of the field types can go by other names\n\t\t\tif (exports.aliases) {\n\t\t\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\t\t\tfieldTypes[alias] = NewType;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\treturn fieldTypes;\n}\n\nvar relinkOperators;\n\nfunction getRelinkOperators() {\n\tif (!relinkOperators) {\n\t\trelinkOperators = exports.getModulesByTypeAsHashmap('relinkoperator', 'name');\n\t}\n\treturn relinkOperators;\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/utils.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/wikimethods.js": {
            "text": "/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.getTiddlerRelinkReferences = function(title) {\n\treturn utils.getIndexer(this).lookup(title);\n};\n\nexports.getTiddlerRelinkBackreferences = function(title) {\n\treturn utils.getIndexer(this).reverseLookup(title);\n};\n\nexports.getRelinkableTitles = function() {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\tvar wiki = this;\n\treturn this.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = wiki.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\treturn wiki.compileFilter(tiddler.fields.text);\n\t\t} else {\n\t\t\treturn wiki.allTitles;\n\t\t}\n\t})();\n};\n",
            "module-type": "wikimethod",
            "title": "$:/plugins/flibbles/relink/js/wikimethods.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js": {
            "text": "/*\\\nmodule-type: allfilteroperator\n\nFilter function for [all[relinkable]].\nReturns all tiddlers subject to relinking.\n\n\\*/\n\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.relinkable = function(source,prefix,options) {\n\treturn options.wiki.getRelinkableTitles();\n};\n\n})();\n",
            "module-type": "allfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/references.js": {
            "text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n`relink:backreferences[]]`\n`relink:references[]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\n\\*/\n\nvar LinkedList = $tw.utils.LinkedList;\n\nif (!LinkedList) {\n\t/* If the linked list isn't available, make a quick crappy version. */\n\tLinkedList = function() {this.array=[];};\n\n\tLinkedList.prototype.pushTop = function(array) {\n\t\t$tw.utils.pushTop(this.array, array);\n\t};\n\n\tLinkedList.prototype.toArray = function() {\n\t\treturn this.array;\n\t};\n};\n\nexports.backreferences = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\n\t});\n\treturn results.toArray();\n};\n\nexports.references = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\n\t\tif (refs) {\n\t\t\tresults.pushTop(Object.keys(refs));\n\t\t}\n\t});\n\treturn results.toArray();\n};\n",
            "module-type": "relinkfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/references.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/relink.js": {
            "text": "/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t                         relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n",
            "module-type": "filteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/relink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/report.js": {
            "text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns a string for each occurrence of that title\nwithin each input title.\n\n[[title]] +[relink:report[fromTiddler]]`\n\nReturns string representation of fromTiddler occurrences in title.\n\\*/\n\nexports.report = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\n\t\tsource(function(tiddler, title) {\n\t\t\tif (blurbs[title]) {\n\t\t\t\tresults = results.concat(blurbs[title]);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n",
            "module-type": "relinkfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/report.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/signatures.js": {
            "text": "/*\\\nmodule-type: relinkfilteroperator\n\nThis filter returns all input tiddlers which are a source of\nrelink configuration.\n\n`[all[tiddlers+system]relink:source[macros]]`\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.signatures = function(source,operator,options) {\n\tvar plugin = operator.operand || null;\n\tvar set = getSet(options);\n\tif (plugin === \"$:/core\") {\n\t\t// Core doesn't actually have any settings. We mean Relink\n\t\tplugin = \"$:/plugins/flibbles/relink\";\n\t}\n\tvar signatures = [];\n\tfor (var signature in set) {\n\t\tvar source = set[signature].source;\n\t\tif (options.wiki.getShadowSource(source) === plugin) {\n\t\t\tsignatures.push(signature);\n\t\t}\n\t}\n\treturn signatures;\n};\n\nexports.type = function(source,operator,options) {\n\tvar results = [];\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].name);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.types = function(source,operator,options) {\n\tvar def = utils.getDefaultType(options.wiki);\n\tvar types = Object.keys(utils.getTypes());\n\ttypes.sort();\n\t// move default to front\n\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\n\treturn types;\n};\n\nexports.source = function(source,operator,options) {\n\tvar results = [];\n\tvar category = operator.suffix;\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].source);\n\t\t}\n\t});\n\treturn results;\n};\n\nfunction getSet(options) {\n\treturn options.wiki.getGlobalCache(\"relink-signatures\", function() {\n\t\tvar config = utils.getWikiContext(options.wiki);\n\t\tvar set = Object.create(null);\n\t\tvar categories = {\n\t\t\tattributes: config.getAttributes(),\n\t\t\tfields: config.getFields(),\n\t\t\tmacros: config.getMacros(),\n\t\t\toperators: config.getOperators()};\n\t\t$tw.utils.each(categories, function(list, category) {\n\t\t\t$tw.utils.each(list, function(item, key) {\n\t\t\t\tset[category + \"/\" + key] = item;\n\t\t\t});\n\t\t});\n\t\treturn set;\n\t});\n};\n",
            "module-type": "relinkfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/signatures.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/splitafter.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/splitafter.js",
            "type": "application/javascript",
            "module-type": "relinkfilteroperator"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js": {
            "text": "/*\\\nmodule-type: relinkfilteroperator\n\nwouldchange: Generator.\n\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\n\nimpossible: filters all source titles for ones that encounter errors on failure.\n\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\n\n\\*/\n\nvar language = require(\"$:/plugins/flibbles/relink/js/language.js\");\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.wouldchange = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\treturn Object.keys(records);\n};\n\nexports.impossible = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tresults = [],\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\tsource(function(tiddler, title) {\n\t\tvar fields = records[title];\n\t\tif (fields) {\n\t\t\tfor (var field in fields) {\n\t\t\t\tif (fields[field].impossible) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n",
            "module-type": "relinkfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/filter.js": {
            "text": "/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"filter\";\n\nexports.report = function(filter, callback, options) {\n\t// I cheat here for now. Relink handles reporting too in cases where\n\t// fromTitle is undefined. toTitle is the callback in those cases.\n\texports.relink(filter, undefined, callback, options);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tvar relinker = new Rebuilder(filter),\n\t\tp = 0, // Current position in the filter string\n\t\tmatch, noPrecedingWordBarrier,\n\t\twordBarrierRequired=false;\n\tvar whitespaceRegExp = /\\s+/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:\\w+)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg,\n\t\tblurbs = [];\n\twhile(p < filter.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filter);\n\t\tnoPrecedingWordBarrier = false;\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t} else if (p != 0) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t} else {\n\t\t\t\tnoPrecedingWordBarrier = true;\n\t\t\t}\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filter.length) {\n\t\t\tvar val;\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filter);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\t// It's a bad filter\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(match[1]) { // prefix\n\t\t\t\tp += match[1].length;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\t// We check if this is a standalone title,\n\t\t\t\t// like `[[MyTitle]]`. We treat those like\n\t\t\t\t// `\"MyTitle\"` or `MyTitle`. Not like a run.\n\t\t\t\tvar standaloneTitle = /\\[\\[([^\\]]+)\\]\\]/g;\n\t\t\t\tstandaloneTitle.lastIndex = p;\n\t\t\t\tvar alone = standaloneTitle.exec(filter);\n\t\t\t\tif (!alone || alone.index != p) {\n\t\t\t\t\tif (fromTitle === undefined) {\n\t\t\t\t\t\t// toTitle is a callback method in this case.\n\t\t\t\t\t\tp =reportFilterOperation(filter, function(title, blurb){\n\t\t\t\t\t\t\tif (match[1]) {\n\t\t\t\t\t\t\t\tblurbs.push([title, match[1] + (blurb || '')]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tblurbs.push([title, blurb]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},p,options.settings,options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tp =relinkFilterOperation(relinker,fromTitle,toTitle,filter,p,options.settings,options);\n\t\t\t\t\t}\n\t\t\t\t\t// It's a legit run\n\t\t\t\t\tif (p === undefined) {\n\t\t\t\t\t\t// The filter is malformed\n\t\t\t\t\t\t// We do nothing.\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbracketTitle = alone[1];\n\t\t\t\toperandRegExp.lastIndex = standaloneTitle.lastIndex;\n\t\t\t\tval = alone[1];\n\t\t\t} else {\n\t\t\t\t// standalone Double quoted string, single\n\t\t\t\t// quoted string, or noquote ahead.\n\t\t\t\tval = match[3] || match[4] || match[5];\n\t\t\t}\n\t\t\t// From here on, we're dealing with a standalone title\n\t\t\t// expression. like `\"MyTitle\"` or `[[MyTitle]]`\n\t\t\t// We're much more flexible about relinking these.\n\t\t\tvar preference = undefined;\n\t\t\tif (match[3]) {\n\t\t\t\tpreference = '\"';\n\t\t\t} else if (match[4]) {\n\t\t\t\tpreference = \"'\";\n\t\t\t} else if (match[5]) {\n\t\t\t\tpreference = '';\n\t\t\t}\n\t\t\tif (fromTitle === undefined) {\n\t\t\t\t// Report it\n\t\t\t\tblurbs.push([val, match[1]]);\n\t\t\t} else if (val === fromTitle) {\n\t\t\t\t// Relink it\n\t\t\t\tvar entry = {name: \"title\"};\n\t\t\t\tvar newVal = wrapTitle(toTitle, preference);\n\t\t\t\tif (newVal === undefined || (options.inBraces && newVal.indexOf('}}}') >= 0)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t\t\tp = operandRegExp.lastIndex;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVal = \"[<\"+options.placeholder.getPlaceholderFor(toTitle)+\">]\";\n\t\t\t\t}\n\t\t\t\tif (newVal[0] != '[') {\n\t\t\t\t\t// not bracket enclosed\n\t\t\t\t\t// this requires whitespace\n\t\t\t\t\t// arnound it\n\t\t\t\t\tif (noPrecedingWordBarrier && !match[1]) {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\twordBarrierRequired = true;\n\t\t\t\t}\n\t\t\t\tentry.output = toTitle;\n\t\t\t\tentry.operator = {operator: \"title\"};\n\t\t\t\tentry.quotation = preference;\n\t\t\t\tif (entry.impossible) {\n\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t}\n\t\t\t\trelinker.add(newVal,p,operandRegExp.lastIndex);\n\t\t\t}\n\t\t\tp = operandRegExp.lastIndex;\n\t\t}\n\t}\n\tif (fromTitle === undefined) {\n\t\t// We delay the blurb calls until now in case it's a malformed\n\t\t// filter string. We don't want to report some, only to find out\n\t\t// it's bad.\n\t\tfor (var i = 0; i < blurbs.length; i++) {\n\t\t\ttoTitle(blurbs[i][0], blurbs[i][1]);\n\t\t}\n\t}\n\tif (relinker.changed() || relinker.impossible) {\n\t\treturn {output: relinker.results(), impossible: relinker.impossible };\n\t}\n\treturn undefined;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\n */\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\n\tvar braceOptions = $tw.utils.extend({inBraces: true}, options);\n\tvar entry = this.relink(filter, fromTitle, toTitle, braceOptions);\n\tif (entry && entry.output && !canBeInBraces(entry.output)) {\n\t\t// It was possible, but it won't fit in braces, so we must give up\n\t\tdelete entry.output;\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\nfunction wrapTitle(value, preference) {\n\tvar choices = {\n\t\t\"\": function(v) {return /^[^\\s\\[\\]]*[^\\s\\[\\]\\}]$/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction relinkFilterOperation(relinker, fromTitle, toTitle, filterString, p, context, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\t// Process each operator in turn\n\toperator = parseOperator(filterString, p);\n\tdo {\n\t\tvar entry = undefined, type;\n\t\tif (operator === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tp = operator.opStart;\n\t\tswitch (operator.bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\ttype = \"indirect\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// We've got a live reference. relink or report\n\t\t\t\tentry = refHandler.relinkInBraces(operand, fromTitle, toTitle, options);\n\t\t\t\tif (entry && entry.output) {\n\t\t\t\t\t// We don't check the context.\n\t\t\t\t\t// All indirect operands convert.\n\t\t\t\t\trelinker.add(entry.output,p,nextBracketPos);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\ttype = \"string\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(context, operator);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tentry = handler.relink(operand, fromTitle, toTitle, options);\n\t\t\t\tif (!entry || !entry.output) {\n\t\t\t\t\t// The fromTitle wasn't in the operand.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar wrapped;\n\t\t\t\tif (!canBePrettyOperand(entry.output) || (options.inBraces && entry.output.indexOf('}}}') >= 0)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tdelete entry.output;\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output, handler.name);\n\t\t\t\t\twrapped = \"<\"+ph+\">\";\n\t\t\t\t} else {\n\t\t\t\t\twrapped = \"[\"+entry.output+\"]\";\n\t\t\t\t}\n\t\t\t\trelinker.add(wrapped, p-1, nextBracketPos+1);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tif (entry) {\n\t\t\tif (entry.impossible) {\n\t\t\t\trelinker.impossible = true;\n\t\t\t}\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t// Check for multiple operands\n\t\tswitch (filterString.charAt(p)) {\n\t\tcase ',':\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\toperator.bracket = filterString.charAt(p);\n\t\t\t\toperator.opStart = p + 1;\n\t\t\t\toperator.index++;\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\tdefault:\n\t\t\toperator = parseOperator(filterString, p);\n\t\t\tcontinue;\n\t\tcase ']':\n\t\t}\n\t\tbreak;\n\t} while(true);\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\nfunction reportFilterOperation(filterString, callback, p, context, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\toperator = parseOperator(filterString, p);\n\t// Process each operator in turn\n\tdo {\n\t\tif (operator === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tp = operator.opStart;\n\t\tswitch (operator.bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Just report it\n\t\t\t\trefHandler.report(operand, function(title, blurb) {\n\t\t\t\t\tcallback(title, operatorBlurb(operator, '{' + (blurb || '') + '}'));\n\t\t\t\t}, options);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(context, operator);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// We just have to report it. Nothing more.\n\t\t\t\thandler.report(operand, function(title, blurb) {\n\t\t\t\t\tcallback(title, operatorBlurb(operator, '[' + (blurb || '') + ']'));\n\t\t\t\t}, options);\n\t\t\t\tbreak;\n\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t// Check for multiple operands\n\t\tswitch (filterString.charAt(p)) {\n\t\tcase ',':\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\toperator.bracket = filterString.charAt(p);\n\t\t\t\toperator.opStart = p + 1;\n\t\t\t\toperator.index++;\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\tdefault:\n\t\t\toperator = parseOperator(filterString, p);\n\t\t\tcontinue;\n\t\tcase ']':\n\t\t}\n\t\tbreak;\n\t} while(true);\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\nfunction parseOperator(filterString, p) {\n\tvar nextBracketPos, operator = {index: 1};\n\t// Check for an operator prefix\n\tif(filterString.charAt(p) === \"!\") {\n\t\toperator.prefix = \"!\";\n\t\tp++;\n\t}\n\t// Get the operator name\n\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\tif(nextBracketPos === -1) {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\tnextBracketPos += p;\n\toperator.bracket = filterString.charAt(nextBracketPos);\n\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t// Any suffix?\n\tvar colon = operator.operator.indexOf(':');\n\tif(colon > -1) {\n\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t}\n\t// Empty operator means: title\n\telse if(operator.operator === \"\") {\n\t\toperator.operator = \"title\";\n\t\toperator.default = true;\n\t}\n\toperator.opStart = nextBracketPos + 1;\n\treturn operator;\n};\n\nfunction operatorBlurb(operator, enquotedOperand) {\n\tvar suffix = operator.suffix ? (':' + operator.suffix) : '';\n\t// commas to indicate which number operand\n\tsuffix += (new Array(operator.index)).join(',');\n\tvar op = operator.default ? '' : operator.operator;\n\treturn '[' + (operator.prefix || '') + op + suffix + enquotedOperand + ']';\n};\n\n// Returns the relinker needed for a given operator, or returns undefined.\nfunction fieldType(context, operator) {\n\treturn (operator.suffix &&\n\t        context.getOperator(operator.operator + ':' + operator.suffix, operator.index)) ||\n\t        context.getOperator(operator.operator, operator.index);\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBeInBraces(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/filter.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/list.js": {
            "text": "/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nexports.name = \"list\";\n\nexports.report = function(value, callback, options) {\n\tvar list = $tw.utils.parseStringArray(value);\n\tfor (var i = 0; i < list.length; i++) {\n\t\tcallback(list[i]);\n\t}\n};\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n *            types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\tvar entry = {name: \"list\"};\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tentry.impossible = true;\n\t\t} else if (actualList) {\n\t\t\tentry.output = list;\n\t\t} else {\n\t\t\tentry.output = $tw.utils.stringifyList(list);\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/list.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/reference.js": {
            "text": "/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nexports.name = \"reference\";\n\nexports.report = function(value, callback, options) {\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value),\n\t\t\ttitle = reference.title,\n\t\t\tblurb;\n\t\tif (title) {\n\t\t\tif (reference.field) {\n\t\t\t\tblurb = '!!' + reference.field;\n\t\t\t} else if (reference.index) {\n\t\t\t\tblurb = '##' + reference.index;\n\t\t\t}\n\t\t\tcallback(title, blurb);\n\t\t}\n\t}\n};\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar entry;\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value);\n\t\tif (reference.title === fromTitle) {\n\t\t\tif (!exports.canBePretty(toTitle)) {\n\t\t\t\tentry = {impossible: true};\n\t\t\t} else {\n\t\t\t\treference.title = toTitle;\n\t\t\t\tentry = {output: exports.toString(reference)};\n\t\t\t}\n\t\t}\n\t}\n\treturn entry;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces.\n */\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\n\tvar log = this.relink(value, fromTitle, toTitle, options);\n\tif (log && log.output && toTitle.indexOf(\"}\") >= 0) {\n\t\tdelete log.output;\n\t\tlog.impossible = true;\n\t}\n\treturn log;\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title)  {\n\treturn !title || (title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0);\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/reference.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/title.js": {
            "text": "/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n//                  alpha characters only.\nexports.name = 'title';\n\nexports.report = function(value, callback, options) {\n\tcallback(value);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn {output: toTitle};\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/title.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js": {
            "text": "/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nexports.name = \"wikitext\";\n\nvar type = 'text/vnd.tiddlywiki';\n\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\nvar WikitextContext = utils.getContext('wikitext');\n\nfunction collectRules() {\n\tvar rules = Object.create(null);\n\t$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\t\tvar names = exports.name;\n\t\tif (typeof names === \"string\") {\n\t\t\tnames = [names];\n\t\t}\n\t\tif (names !== undefined) {\n\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\trules[names[i]] = exports;\n\t\t\t}\n\t\t}\n\t});\n\treturn rules;\n}\n\nfunction WikiWalker(type, text, options) {\n\tthis.options = options;\n\tif (!this.relinkMethodsInjected) {\n\t\tvar rules = collectRules();\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiWalker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.context = new WikitextContext(options.settings);\n\tWikiParser.call(this, type, text, options);\n};\n\nWikiWalker.prototype = Object.create(WikiParser.prototype);\n\nWikiWalker.prototype.parsePragmas = function() {\n\tvar entries = this.tree;\n\twhile (true) {\n\t\tthis.skipWhitespace();\n\t\tif (this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\n\t\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t}\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunUnterminated = function(options) {\n\tvar entries = [];\n\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\twhile (this.pos < this.sourceLength && nextMatch) {\n\t\tif (nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\tvar entries = [];\n\toptions = options || {};\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\tif (terminatorMatch) {\n\t\t\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif (options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn entries;\n\t\t\t}\n\t\t}\n\t\tif (inlineRuleMatch) {\n\t\t\tif (inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\tentries.push.apply(entries, this.handleRule(inlineRuleMatch));\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n\n};\n\nWikiWalker.prototype.parseBlock = function(terminatorRegExp) {\n\tvar terminatorRegExp = /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif (this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn this.handleRule(nextMatch);\n\t}\n\treturn this.parseInlineRun(terminatorRegExp);\n};\n\nWikiWalker.prototype.amendRules = function(type, names) {\n\tvar only;\n\tWikiParser.prototype.amendRules.call(this, type, names);\n\tif (type === \"only\") {\n\t\tonly = true;\n\t} else if (type === \"except\") {\n\t\tonly = false;\n\t} else {\n\t\treturn;\n\t}\n\tif (only !== (names.indexOf(\"macrodef\") >= 0) && this.options.macrodefCanBeDisabled) {\n\t\tthis.options.placeholder = undefined\n\t}\n\tif (only !== (names.indexOf(\"html\") >= 0)) {\n\t\tthis.context.allowWidgets = disabled;\n\t}\n\tif (only !== (names.indexOf(\"prettylink\") >= 0)) {\n\t\tthis.context.allowPrettylinks = disabled;\n\t}\n};\n\nfunction disabled() { return false; };\n\n/// Reporter\n\nfunction WikiReporter(type, text, callback, options) {\n\tthis.callback = callback;\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiReporter.prototype = Object.create(WikiWalker.prototype);\n\nWikiReporter.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.report) {\n\t\truleInfo.rule.report(this.source, this.callback, this.options);\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n};\n\nexports.report = function(wikitext, callback, options) {\n\t// Unfortunately it's the side-effect of creating this that reports.\n\tnew WikiReporter(options.type, wikitext, callback, options);\n};\n\n/// Relinker\n\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\n\tthis.fromTitle = fromTitle;\n\tthis.toTitle = toTitle;\n\tthis.placeholder = options.placeholder;\n\tif (this.placeholder) {\n\t\tthis.placeholder.parser = this;\n\t}\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiRelinker.prototype = Object.create(WikiWalker.prototype);\n\nWikiRelinker.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.relink) {\n\t\tvar start = ruleInfo.matchIndex;\n\t\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\n\t\tif (newEntry !== undefined) {\n\t\t\tif (newEntry.output) {\n\t\t\t\tnewEntry.start = start;\n\t\t\t\tnewEntry.end = this.pos;\n\t\t\t}\n\t\t\treturn [newEntry];\n\t\t}\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n\treturn [];\n};\n\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\n\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, options),\n\t\twikiEntry = undefined;\n\t// Now that we have an array of entries, let's produce the wikiText entry\n\t// containing them all.\n\tif (parser.tree.length > 0) {\n\t\tvar builder = new Rebuilder(wikitext);\n\t\twikiEntry = {};\n\t\tfor (var i = 0; i < parser.tree.length; i++) {\n\t\t\tvar entry = parser.tree[i];\n\t\t\tif (entry.impossible) {\n\t\t\t\twikiEntry.impossible = true;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tbuilder.add(entry.output, entry.start, entry.end);\n\t\t\t}\n\t\t}\n\t\twikiEntry.output = builder.results();\n\t}\n\treturn wikiEntry;\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/fields.js": {
            "text": "/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = 'fields';\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\thandler.report(input, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, field + ': ' + blurb);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, field);\n\t\t\t\t}\n\t\t\t}, options);\n\t\t}\n\t});\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tvar entry = handler.relink(input, fromTitle, toTitle, options);\n\t\t\tif (entry !== undefined) {\n\t\t\t\tchanges[field] = entry;\n\t\t\t}\n\t\t}\n\t});\n};\n",
            "module-type": "relinkoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/fields.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text.js": {
            "text": "/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.name = 'text';\n\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\n// $:/DefaultTiddlers is a tiddler which has type \"text/vnd.tiddlywiki\",\n// but it lies. It doesn't contain wikitext. It contains a filter, so\n// we pretend it has a filter type.\n// If you want to be able to add more exceptions for your plugin, let me know.\nvar exceptions = {\n\t\"$:/DefaultTiddlers\": \"text/x-tiddler-filter\"\n};\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\tvar entry = textOperators[type].report(tiddler, callback, options);\n\t\t}\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\tvar entry = textOperators[type].relink(tiddler, fromTitle, toTitle, options);\n\t\t\tif (entry) {\n\t\t\t\tchanges.text = entry;\n\t\t\t}\n\t\t}\n\t}\n};\n",
            "module-type": "relinkoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js": {
            "text": "/*\\\n\nThis relinks tiddlers which contain filters in their body, as oppose to\nwikitext.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\n\nexports.type = 'text/x-tiddler-filter';\n\nexports.report = function(tiddler, callback, options) {\n\treturn filterHandler.report(tiddler.fields.text, callback, options);\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, options) {\n\treturn filterHandler.relink(tiddler.fields.text, fromTitle, toTitle, options)\n};\n",
            "module-type": "relinktextoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js": {
            "text": "/*\\\n\nChecks for fromTitle in a tiddler's text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Placeholder = require(\"$:/plugins/flibbles/relink/js/utils/placeholder.js\");\nvar wikitextHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('wikitext');\n\nexports.type = 'text/vnd.tiddlywiki';\n\nexports.report = function(tiddler, callback, options) {\n\twikitextHandler.report(tiddler.fields.text, callback, options);\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, options) {\n\tvar placeholder = new Placeholder();\n\tvar currentOptions = Object.create(options);\n\tcurrentOptions.placeholder = placeholder;\n\tvar entry = wikitextHandler.relink(tiddler.fields.text, fromTitle, toTitle, currentOptions);\n\tif (entry && entry.output) {\n\t\t// If there's output, we've also got to prepend any macros\n\t\t// that the placeholder defined.\n\t\tvar preamble = placeholder.getPreamble();\n\t\tentry.output = preamble + entry.output;\n\t}\n\treturn entry;\n};\n",
            "module-type": "relinktextoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles code blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"`` [[Renamed Title]] ``\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"codeinline\", \"codeblock\"];\n\nexports.relink = function(text) {\n\tvar reEnd;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// I'm lazy. This relink method works for both codeblock and codeinline\n\tif (this.match[0].length > 2) {\n\t\t// Must be a codeblock\n\t\treEnd = /\\r?\\n```$/mg;\n\t} else {\n\t\t// Must be a codeinline\n\t\treEnd = new RegExp(this.match[1], \"mg\");\n\t}\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(text);\n\tif (match) {\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn undefined;\n};\n\n// Same thing. Just skip the pos ahead.\nexports.report = exports.relink;\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"<!-- [[Renamed Title]] -->\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(text) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n\nexports.report = exports.relink;\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar utils = require(\"./utils.js\");\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttemplate = $tw.utils.trim(m[3]),\n\t\tappend = template ? '||' + template + '}}}' : '}}}';\n\tfilterHandler.report(filter, function(title, blurb) {\n\t\tcallback(title, '{{{' + blurb + append);\n\t}, options);\n\tif (template) {\n\t\tcallback(template, '{{{' + $tw.utils.trim(filter).replace(/\\r?\\n/mg, ' ') + '||}}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tentry = {};\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\n\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\n\tif (filterEntry !== undefined) {\n\t\tif (filterEntry.output) {\n\t\t\tfilter = filterEntry.output;\n\t\t\tmodified = true;\n\t\t}\n\t\tif (filterEntry.impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\tif (!entry.impossible) {\n\t\t\treturn undefined;\n\t\t}\n\t} else {\n\t\tvar output = this.makeFilteredtransclude(this.parser, filter, tooltip, template, style, classes);\n\t\tif (output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t} else {\n\t\t\t// By copying over the ending newline of the original\n\t\t\t// text if present, thisrelink method thus works for\n\t\t\t// both the inline and block rule\n\t\t\tentry.output = output + utils.getEndingNewline(m[0]);\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeFilteredtransclude = function(parser, filter, tooltip, template, style, classes) {\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t}\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\treturn utils.makeWidget(parser, '$list', {\n\t\tfilter: filter,\n\t\ttooltip: tooltip,\n\t\ttemplate: template,\n\t\tstyle: style || undefined,\n\t\titemClass: classes});\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar refHandler = relinkUtils.getType('reference');\nvar filterHandler = relinkUtils.getType('filter');\nvar ImportContext = relinkUtils.getContext('import');\nvar macrocall = require(\"./macrocall.js\");\n\nexports.name = \"html\";\n\nexports.report = function(text, callback, options) {\n\tvar managedElement = this.parser.context.getAttribute(this.nextTag.tag);\n\tvar importFilterAttr;\n\tvar element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tif (attr.type === \"string\") {\n\t\t\tvar handler = getAttributeHandler(this.parser.context, this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandler.report(attr.value, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '=\"' + blurb + '\" />');\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + ' />');\n\t\t\t\t}\n\t\t\t}, options);\n\t\t} else if (attr.type === \"indirect\") {\n\t\t\tentry = refHandler.report(attr.textReference, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '={{' + (blurb || '') + '}} />');\n\t\t\t}, options);\n\t\t} else if (attr.type === \"filtered\") {\n\t\t\tentry = filterHandler.report(attr.filter, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '={{{' + blurb + '}}} />');\n\t\t\t}, options);\n\t\t} else if (attr.type === \"macro\") {\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.reportAttribute(this.parser, macro, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '=' + blurb + ' />');\n\t\t\t}, options);\n\t\t}\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(this.parser, importFilterAttr, options);\n\t}\n\tthis.parse();\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar managedElement = this.parser.context.getAttribute(this.nextTag.tag),\n\t\tbuilder = new Rebuilder(text, this.nextTag.start);\n\tvar importFilterAttr;\n\tvar widgetEntry = {};\n\twidgetEntry.attributes = Object.create(null);\n\twidgetEntry.element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = this.parser.context;\n\t\tswitch (attr.type) {\n\t\tcase 'string':\n\t\t\tvar handler = getAttributeHandler(this.parser.context, this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tentry = handler.relink(attr.value, fromTitle, toTitle, nestedOptions);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tvar quote = utils.determineQuote(text, attr);\n\t\t\t\toldLength = attr.value.length + (quote.length * 2);\n\t\t\t\tquotedValue = utils.wrapAttributeValue(entry.output,quote);\n\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t\t// a macro in order to replace it.\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\t// but we can't...\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar value = options.placeholder.getPlaceholderFor(entry.output,handler.name)\n\t\t\t\t\t\tquotedValue = \"<<\"+value+\">>\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'indirect':\n\t\t\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// +4 for '{{' and '}}'\n\t\t\t\toldLength = attr.textReference.length + 4;\n\t\t\t\tquotedValue = \"{{\"+entry.output+\"}}\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'filtered':\n\t\t\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// +6 for '{{{' and '}}}'\n\t\t\t\toldLength = attr.filter.length + 6;\n\t\t\t\tquotedValue = \"{{{\"+ entry.output +\"}}}\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'macro':\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.relinkAttribute(this.parser, macro, text, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// already includes '<<' and '>>'\n\t\t\t\toldLength = macro.end-macro.start;\n\t\t\t\tquotedValue = entry.output;\n\t\t\t}\n\t\t}\n\t\tif (entry.impossible) {\n\t\t\twidgetEntry.impossible = true;\n\t\t}\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t\t// We count backwards from the end to preserve whitespace\n\t\tvar valueStart = attr.end - oldLength;\n\t\tbuilder.add(quotedValue, valueStart, attr.end);\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(this.parser, importFilterAttr, options);\n\t}\n\tvar tag = this.parse()[0];\n\tif (tag.children) {\n\t\tfor (var i = 0; i < tag.children.length; i++) {\n\t\t\tvar child = tag.children[i];\n\t\t\tif (child.output) {\n\t\t\t\tbuilder.add(child.output, child.start, child.end);\n\t\t\t}\n\t\t\tif (child.impossible) {\n\t\t\t\twidgetEntry.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (builder.changed() || widgetEntry.impossible) {\n\t\twidgetEntry.output = builder.results(this.parser.pos);\n\t\treturn widgetEntry;\n\t}\n\treturn undefined;\n};\n\n/** Returns the field handler for the given attribute of the given widget.\n *  If this returns undefined, it means we don't handle it. So skip.\n */\nfunction getAttributeHandler(context, widget, attributeName, options) {\n\tif (widget.tag === \"$macrocall\") {\n\t\tvar nameAttr = widget.attributes[\"$name\"];\n\t\tif (nameAttr) {\n\t\t\tvar macro = context.getMacro(nameAttr.value);\n\t\t\tif (macro) {\n\t\t\t\treturn macro[attributeName];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar element = context.getAttribute(widget.tag);\n\t\tif (element) {\n\t\t\treturn element[attributeName];\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction computeAttribute(context, attribute, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n\n// This processes a <$importvariables> filter attribute and adds any new\n// variables to our parser.\nfunction processImportFilter(parser, importAttribute, options) {\n\tif (typeof importAttribute === \"string\") {\n\t\t// It was changed. Reparse it. It'll be a quoted\n\t\t// attribute value. Add a dummy attribute name.\n\t\timportAttribute = $tw.utils.parseAttribute(\"p=\"+importAttribute, 0)\n\t}\n\tvar context = parser.context;\n\tvar importFilter = computeAttribute(context, importAttribute, options);\n\tparser.context = new ImportContext(options.wiki, context, importFilter);\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[img[tiddler.jpg]]\n\n[img width=23 height=24 [Description|tiddler.jpg]]\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar utils = require(\"./utils.js\");\n\nexports.name = \"image\";\n\nexports.report = function(text, callback, options) {\n\tvar ptr = this.nextImage.start + 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tvar tooltip = this.nextImage.attributes.tooltip;\n\t\t\tvar blurb = '[img[' + (tooltip ? tooltip.value : '') + ']]';\n\t\t\tcallback(attr.value, blurb);\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tptr = text.indexOf(']]', ptr) + 2;\n\t\t} else if (attributeName !== \"tooltip\") {\n\t\t\tptr = reportAttribute(this.parser, attr, callback, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar ptr = this.nextImage.start,\n\t\tbuilder = new Rebuilder(text, ptr),\n\t\tmakeWidget = false,\n\t\tskipSource = false,\n\t\timageEntry;\n\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\n\t\tif (this.parser.context.allowWidgets() && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\n\t\t\tmakeWidget = true;\n\t\t\tbuilder.add(\"<$image\", ptr, ptr+4);\n\t\t} else {\n\t\t\t// We won't be able to make a placeholder to replace\n\t\t\t// the source attribute. We check now so we don't\n\t\t\t// prematurely convert into a widget.\n\t\t\t// Keep going in case other attributes need replacing.\n\t\t\tskipSource = true;\n\t\t}\n\t}\n\tptr += 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tif (makeWidget) {\n\t\t\t\tif (\" \\t\\n\".indexOf(text[ptr-1]) >= 0) {\n\t\t\t\t\tbuilder.add('', ptr, ptr+1);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(' ', ptr, ptr+1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tif (attr.value === fromTitle) {\n\t\t\t\tif (makeWidget) {\n\t\t\t\t\tvar quotedValue = utils.wrapAttributeValue(toTitle);\n\t\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t\tvar key = options.placeholder.getPlaceholderFor(toTitle);\n\t\t\t\t\t\tbuilder.add(\"source=<<\"+key+\">>\", ptr, ptr+fromTitle.length);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder.add(\"source=\"+quotedValue, ptr, ptr+fromTitle.length);\n\t\t\t\t\t}\n\t\t\t\t} else if (!skipSource) {\n\t\t\t\t\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.impossible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr = text.indexOf(']]', ptr);\n\t\t\tif (makeWidget) {\n\t\t\t\tbuilder.add(\"/>\", ptr, ptr+2);\n\t\t\t}\n\t\t\tptr += 2;\n\t\t} else if (attributeName === \"tooltip\") {\n\t\t\tif (makeWidget) {\n\t\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\t\tvar quotedValue = utils.wrapAttributeValue(attr.value);\n\t\t\t\tbuilder.add(\"tooltip=\"+quotedValue, ptr, ptr+attr.value.length);\n\t\t\t}\n\t\t} else {\n\t\t\tptr = relinkAttribute(this.parser, attr, builder, fromTitle, toTitle, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n\tif (builder.changed() || builder.impossible) {\n\t\timageEntry = {\n\t\t\toutput: builder.results(ptr),\n\t\t\timpossible: builder.impossible };\n\t}\n\treturn imageEntry;\n};\n\nfunction reportAttribute(parser, attribute, callback, options) {\n\tvar text = parser.source;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\trefHandler.report(attribute.textReference, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{' + (blurb || '') + '}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tfilterHandler.report(attribute.filter, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{{' + blurb + '}}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tmacrocall.reportAttribute(parser, macro, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '=' + blurb + ']');\n\t\t}, options);\n\t}\n\treturn end;\n};\n\nfunction relinkAttribute(parser, attribute, builder, fromTitle, toTitle, options) {\n\tvar text = builder.text;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\n\t\tif (ref) {\n\t\t\tif (ref.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (ref.output) {\n\t\t\t\tbuilder.add(\"{{\"+ref.output+\"}}\", ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\n\t\tif (filter !== undefined) {\n\t\t\tif (filter.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (filter.output) {\n\t\t\t\tvar quoted = \"{{{\"+filter.output+\"}}}\";\n\t\t\t\tbuilder.add(quoted, ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tvar macroEntry = macrocall.relinkAttribute(parser, macro, text, fromTitle, toTitle, options);\n\t\tif (macroEntry !== undefined) {\n\t\t\tif (macroEntry.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (macroEntry.output) {\n\t\t\t\tbuilder.add(macroEntry.output, ptr, end);\n\t\t\t}\n\t\t}\n\t}\n\treturn end;\n};\n\nfunction canBePretty(title, tooltip) {\n\treturn title.indexOf(']') < 0 && (tooltip || title.indexOf('|') < 0);\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar filterRelinker = utils.getType('filter');\nvar ImportContext = utils.getContext('import');\n\nexports.name = \"import\";\n\nexports.report = function(text, callback, options) {\n\t// This moves the pos for us\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value || '';\n\tfilterRelinker.report(filter, function(title, blurb) {\n\t\tif (blurb) {\n\t\t\tblurb = '\\\\import ' + blurb;\n\t\t} else {\n\t\t\tblurb = '\\\\import';\n\t\t}\n\t\tcallback(title, blurb);\n\t}, options);\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex,\n\t\tparseTree = this.parse(),\n\t\tfilter = parseTree[0].attributes.filter.value || '',\n\t\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\n\tif (entry !== undefined && entry.output) {\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = entry.output;\n\t\tentry.output = \"\\\\import \" + filter + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n\n\treturn entry;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<<myMacro '[[MyFilter]]' 'myTitle'>>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\n// Error thrown when a macro's definition is needed, but can't be found.\nfunction CannotFindMacroDef() {};\nCannotFindMacroDef.prototype.impossible = true;\nCannotFindMacroDef.prototype.name = \"macroparam\";\n// Failed relinks due to missing definitions aren't reported for now.\n// I may want to do something special later on.\nCannotFindMacroDef.prototype.report = function() { return []; };\n\nexports.report = function(text, callback, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tthis.parser.pos = macroInfo.end;\n\tthis.reportAttribute(this.parser, macroInfo, callback, options);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tvar managedMacro = this.parser.context.getMacro(macroInfo.name);\n\tthis.parser.pos = macroInfo.end;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar mayBeWidget = this.parser.context.allowWidgets();\n\tvar names = getParamNames(this.parser, macroInfo.name, macroInfo.params, options);\n\tif (names === undefined) {\n\t\t// Needed the definition, and couldn't find it. So if a single\n\t\t// parameter needs to placeholder, just fail.\n\t\tmayBeWidget = false;\n\t}\n\tvar entry = relinkMacroInvocation(this.parser, macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToString(entry.output, text, names, options);\n\t}\n\treturn entry;\n};\n\n/** Relinks macros that occur as attributes, like <$element attr=<<...>> />\n *  Processes the same, except it can't downgrade into a widget if the title\n *  is complicated.\n */\nexports.relinkAttribute = function(parser, macro, text, fromTitle, toTitle, options) {\n\tvar entry = relinkMacroInvocation(parser, macro, text, fromTitle, toTitle, false, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToStringMacro(entry.output, text, options);\n\t}\n\treturn entry;\n};\n\n/** As in, report a macrocall invocation that is an html attribute. */\nexports.reportAttribute = function(parser, macro, callback, options) {\n\tvar managedMacro = parser.context.getMacro(macro.name);\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(parser, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// The argument was not supplied. Move on to next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = parser.context;\n\t\tvar entry = handler.report(param.value, function(title, blurb) {\n\t\t\tvar rtn = managedArg;\n\t\t\tif (blurb) {\n\t\t\t\trtn += ': \"' + blurb + '\"';\n\t\t\t}\n\t\t\tcallback(title, '<<' + macro.name + ' ' + rtn + '>>');\n\t\t}, nestedOptions);\n\t}\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n * Output of the returned entry isn't a string, but a macro object. It needs\n * to be converted.\n */\nfunction relinkMacroInvocation(parser, macro, text, fromTitle, toTitle, mayBeWidget, options) {\n\tvar managedMacro = parser.context.getMacro(macro.name);\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\tvar macroEntry = {};\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(parser, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tif (e instanceof CannotFindMacroDef) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = parser.context;\n\t\tvar entry = handler.relink(param.value, fromTitle, toTitle, nestedOptions);\n\t\tif (entry === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Macro parameters can only be string parameters, not\n\t\t// indirect, or macro, or filtered\n\t\tif (entry.impossible) {\n\t\t\tmacroEntry.impossible = true;\n\t\t}\n\t\tif (!entry.output) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = utils.wrapParameterValue(entry.output, quote);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tif (!mayBeWidget || !options.placeholder) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = entry.output;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (modified || macroEntry.impossible) {\n\t\tif (modified) {\n\t\t\tmacroEntry.output = outMacro;\n\t\t}\n\t\treturn macroEntry;\n\t}\n\treturn undefined;\n};\n\nfunction getInfoFromRule(rule) {\n\t// Get all the details of the match\n\tvar macroInfo = rule.nextCall;\n\tif (!macroInfo) {\n\t\t//  rule.match is used <v5.1.24\n\t\tvar match = rule.match,\n\t\t\toffset = $tw.utils.skipWhiteSpace(match[0], match[1].length+2);\n\t\tmacroInfo = {\n\t\t\tname: match[1],\n\t\t\tstart: rule.matchRegExp.lastIndex - match[0].length,\n\t\t\tend: rule.matchRegExp.lastIndex,\n\t\t};\n\t\tmacroInfo.params = parseParams(match[2], offset+macroInfo.start);\n\t}\n\treturn macroInfo;\n};\n\nfunction mustBeAWidget(macro) {\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tif (macro.params[i].type === \"macro\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false\n};\n\n/**Given a macro object ({name:, params:, start: end:}), and the text where\n * it was parsed from, returns a new macro that maintains any syntactic\n * structuring.\n */\nfunction macroToString(macro, text, names, options) {\n\tif (mustBeAWidget(macro)) {\n\t\tvar attrs = [];\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar p = macro.params[i];\n\t\t\tvar val;\n\t\t\tif (p.newValue) {\n\t\t\t\tval = p.newValue;\n\t\t\t} else {\n\t\t\t\tval = utils.wrapAttributeValue(p.value);\n\t\t\t}\n\t\t\tattrs.push(\" \"+names[i]+\"=\"+val);\n\t\t}\n\t\treturn \"<$macrocall $name=\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\"/>\";\n\t} else {\n\t\treturn macroToStringMacro(macro, text, options);\n\t}\n};\n\nfunction macroToStringMacro(macro, text, options) {\n\tvar builder = new Rebuilder(text, macro.start);\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tvar param = macro.params[i];\n\t\tif (param.newValue) {\n\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t}\n\t}\n\treturn builder.results(macro.end);\n};\n\n/** Returns -1 if param definitely isn't in macrocall.\n */\nfunction getParamIndexWithinMacrocall(parser, macroName, param, params, options) {\n\tvar index, i, anonsExist = false;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name === param) {\n\t\t\treturn i;\n\t\t}\n\t\tif (name === undefined) {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (!anonsExist) {\n\t\t// If no anonymous parameters are present, and we didn't find\n\t\t// it among the named ones, it must not be there.\n\t\treturn -1;\n\t}\n\tvar expectedIndex = indexOfParameterDef(parser, macroName, param, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(parser, macroName, params[i].name, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(parser, macroName, paramName, options) {\n\tvar def = parser.context.getMacroDefinition(macroName);\n\tif (def === undefined) {\n\t\tthrow new CannotFindMacroDef();\n\t}\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nfunction getParamNames(parser, macroName, params, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar def = parser.context.getMacroDefinition(macroName);\n\t\tif (def === undefined) {\n\t\t\t// If there are anonymous parameters, and we can't\n\t\t\t// find the definition, then we can't hope to create\n\t\t\t// a widget.\n\t\t\treturn undefined;\n\t\t}\n\t\tvar defParams = def.params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = { };\n\t\t// We need to find the group match that isn't undefined.\n\t\tfor (var i = 2; i <= 6; i++) {\n\t\t\tif (paramMatch[i] !== undefined) {\n\t\t\t\tparamInfo.value = paramMatch[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils\");\nvar VariableContext = utils.getContext('variable');\n\nexports.name = \"macrodef\";\n\nexports.report = function(text, callback, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tm = this.match,\n\t\tname = m[1];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, m[3]);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\thandler = utils.getType(getActiveType(name, m[2]) || 'wikitext');\n\t\tif (handler) {\n\t\t\tvar entry = handler.report(value, function(title, blurb) {\n\t\t\t\tvar macroStr = '\\\\define ' + name + '()';\n\t\t\t\tif (blurb) {\n\t\t\t\t\tmacroStr += ' ' + blurb;\n\t\t\t\t}\n\t\t\t\tcallback(title, macroStr);\n\t\t\t}, options);\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tentry,\n\t\tm = this.match,\n\t\tname = m[1],\n\t\tparams = m[2],\n\t\tmultiline = m[3];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, multiline);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\ttype = getActiveType(name, params),\n\t\t\thandler = utils.getType(type || 'wikitext');\n\t\tif (handler) {\n\t\t\t// If this is an active relink placeholder, then let's remember it\n\t\t\tif (type && options.placeholder) {\n\t\t\t\toptions.placeholder.registerExisting(name, value);\n\t\t\t}\n\t\t\t// Relink the contents\n\t\t\tentry = handler.relink(value, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tentry.output = m[0] + endMatch[1] + entry.output + endMatch[0];\n\t\t\t}\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n\treturn entry;\n};\n\n// Return another match for the body, but tooled uniquely\n// m[1] = whitespace before body\n// m[2] = body\n// m.index + m[0].length -> end of match\nfunction getBodyMatch(text, pos, isMultiline) {\n\tvar whitespace,\n\t\tvalueRegExp;\n\tif (isMultiline) {\n\t\tvalueRegExp = /\\r?\\n\\\\end[^\\S\\n\\r]*(?:\\r?\\n|$)/mg;\n\t\twhitespace = '';\n\t} else {\n\t\tvalueRegExp = /(?:\\r?\\n|$)/mg;\n\t\tvar newPos = $tw.utils.skipWhiteSpace(text, pos);\n\t\twhitespace = text.substring(pos, newPos);\n\t\tpos = newPos;\n\t}\n\tvalueRegExp.lastIndex = pos;\n\tvar match = valueRegExp.exec(text);\n\tif (match) {\n\t\tmatch[1] = whitespace;\n\t\tmatch[2] = text.substring(pos, match.index);\n\t}\n\treturn match;\n};\n\nfunction getActiveType(macroName, parameters) {\n\tvar placeholder = /^relink-(?:(\\w+)-)?\\d+$/.exec(macroName);\n\t// normal macro or special placeholder?\n\tif (placeholder && parameters === '') {\n\t\treturn placeholder[1] || 'title';\n\t}\n\treturn undefined;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"prettylink\";\n\nexports.report = function(text, callback, options) {\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif (!$tw.utils.isLinkExternal(link)) {\n\t\tcallback(link, '[[' + text + ']]');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar entry = { output: utils.makePrettylink(this.parser, toTitle, caption) };\n\tif (entry.output === undefined) {\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js": {
            "text": "/*\\\nmodule-type: wikirule\n\nThis defines the \\relink inline pragma used to locally declare\nrelink rules for macros.\n\nIt takes care of providing its own relink and report rules.\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"relink\";\nexports.types = {pragma: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /^\\\\relink[^\\S\\n]+([^(\\s]+)([^\\r\\n]*)(\\r?\\n)?/mg;\n};\n\n/**This makes the widget that the macro library will later parse to determine\n * new macro relink state.\n *\n * It's a <$set> widget so it can appear BEFORE \\define pragma and not\n * prevent that pragma from being scooped up by importvariables.\n * (importvariables stops scooping as soon as it sees something besides $set) */\nexports.parse = function() {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar macroName;\n\tvar macroParams = Object.create(null);\n\tvar error = undefined;\n\tvar rtn = [];\n\tvar self = this;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\tmacroName = macro;\n\t\tif (type && !utils.getType(type)) {\n\t\t\terror = language.getString(\"Error/UnrecognizedType\",\n\t\t\t\t{variables: {type: type}, wiki: self.parser.wiki});\n\t\t}\n\t\tmacroParams[parameter] = type;\n\t});\n\t// If no macroname. Return nothing, this rule will be ignored by parsers\n\tif (macroName) {\n\t\tvar relink = Object.create(null);\n\t\trelink[macroName] = macroParams;\n\t\trtn.push({\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: \"\"}\n\t\t\t},\n\t\t\tchildren: [],\n\t\t\tisMacroDefinition: true,\n\t\t\trelink: relink});\n\t}\n\tif (error) {\n\t\trtn.push({\n\t\t\ttype: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tc-error tc-relink-error\"\n\t\t\t\t}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: error}\n\t\t\t]});\n\t}\n\treturn rtn;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar parser = this.parser;\n\tvar currentTiddler = parser.context.widget.variables.currentTiddler.value;\n\tparser.pos = this.matchRegExp.lastIndex;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\toptions.settings.addSetting(parser.wiki, macro, parameter, type, currentTiddler);\n\t});\n\t// Return nothing, because this rule is ignored by the parser\n\treturn undefined;\n};\n\nexports.interpretSettings = function(block) {\n\tvar paramString = this.match[2];\n\tif (paramString !== \"\") {\n\t\tvar macro = this.match[1];\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*([^\\s]+))?/mg;\n\t\tvar paramMatch = reParam.exec(paramString);\n\t\twhile (paramMatch) {\n\t\t\tvar parameter = paramMatch[1];\n\t\t\tvar type = paramMatch[2];\n\t\t\tblock(macro, parameter, type);\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n};\n",
            "module-type": "wikirule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() {\n\tthis.parse();\n\treturn undefined;\n};\n\n// Same deal\nexports.report = exports.relink;\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles sys links\n\n$:/sys/link\n\nbut not:\n\n~$:/sys/link\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"syslink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== \"~\") {\n\t\tcallback(title, '~' + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== \"~\") {\n\t\tentry = {output: this.makeSyslink(toTitle, options)};\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeSyslink = function(title, options) {\n\tvar match = title.match(this.matchRegExp);\n\tif (match && match[0] === title && title[0] !== \"~\") {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\trefString = $tw.utils.trim(m[1]),\n\t\tref = parseTextReference(refString);\n\t\ttemplate = $tw.utils.trim(m[2]);\n\tif (ref.title) {\n\t\tvar suffix = '';\n\t\tif (ref.index) {\n\t\t\tsuffix = '##' + ref.index;\n\t\t} else if (ref.field) {\n\t\t\tsuffix = '!!' + ref.field;\n\t\t}\n\t\tif (template) {\n\t\t\tsuffix = suffix + '||' + template;\n\t\t}\n\t\tcallback(ref.title, '{{' + suffix + '}}')\n\t}\n\tif (template) {\n\t\tcallback(template, '{{' + refString + '||}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = parseTextReference(m[1]),\n\t\ttemplate = m[2],\n\t\tentry = undefined,\n\t\tmodified = false;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif ($tw.utils.trim(reference.title) === fromTitle) {\n\t\t// preserve user's whitespace\n\t\treference.title = reference.title.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (modified) {\n\t\tvar output = this.makeTransclude(this.parser, reference, template);\n\t\tif (output) {\n\t\t\t// Adding any newline that might have existed is\n\t\t\t// what allows this relink method to work for both\n\t\t\t// the block and inline filter wikitext rule.\n\t\t\tentry = {output: output + utils.getEndingNewline(m[0])};\n\t\t} else {\n\t\t\tentry = {impossible: true}\n\t\t}\n\t}\n\treturn entry;\n};\n\n// I have my own because the core one is deficient for my needs.\nfunction parseTextReference(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /^([\\w\\W]*?)(?:!!(\\S[\\w\\W]*)|##(\\S[\\w\\W]*))?$/g;\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match) {\n\t\t// Return the parts\n\t\tresult.title = match[1];\n\t\tresult.field = match[2];\n\t\tresult.index = match[3];\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/** This converts a reference and a template into a string representation\n *  of a transclude.\n */\nexports.makeTransclude = function(parser, reference, template) {\n\tvar rtn;\n\tif (!canBePrettyTemplate(template)) {\n\t\tvar widget = utils.makeWidget(parser, '$transclude', {\n\t\t\ttiddler: $tw.utils.trim(template),\n\t\t\tfield: reference.field,\n\t\t\tindex: reference.index});\n\t\tif (reference.title && widget !== undefined) {\n\t\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, widget);\n\t\t} else {\n\t\t\trtn = widget;\n\t\t}\n\t} else if (!canBePrettyTitle(reference.title)) {\n\t\t// This block and the next account for the 1%...\n\t\tvar reducedRef = {field: reference.field, index: reference.index};\n\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, prettyTransclude(reducedRef, template));\n\t} else {\n\t\t// This block takes care of 99% of all cases\n\t\trtn = prettyTransclude(reference, template);\n\t}\n\treturn rtn;\n};\n\nfunction canBePrettyTitle(value) {\n\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn !value || (value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0);\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js": {
            "text": "/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\nexports.makeWidget = function(parser, tag, attributes, body) {\n\tif (!parser.context.allowWidgets()) {\n\t\treturn undefined;\n\t}\n\tvar string = '<' + tag;\n\tfor (var attr in attributes) {\n\t\tvar value = attributes[attr];\n\t\tif (value !== undefined) {\n\t\t\tvar quoted = exports.wrapAttributeValue(value);\n\t\t\tif (!quoted) {\n\t\t\t\tif (!parser.options.placeholder) {\n\t\t\t\t\t// It's not possible to make this widget\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tvar category = getPlaceholderCategory(parser.context, tag, attr);\n\t\t\t\tquoted = '<<' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\n\t\t\t}\n\t\t\tstring += ' ' + attr + '=' + quoted;\n\t\t}\n\t}\n\tif (body !== undefined) {\n\t\tstring += '>' + body + '</' + tag + '>';\n\t} else {\n\t\tstring += '/>';\n\t}\n\treturn string;\n};\n\nfunction getPlaceholderCategory(context, tag, attribute) {\n\tvar element = context.getAttribute(tag);\n\tvar rule = element && element[attribute];\n\t// titles go to relink-\\d\n\t// plaintext goes to relink-plaintext-\\d\n\t// because titles are way more common, also legacy\n\tif (rule === undefined) {\n\t\treturn 'plaintext';\n\t} else {\n\t\trule = rule.fields.text;\n\t\tif (rule === 'title') {\n\t\t\trule = undefined;\n\t\t}\n\t\treturn rule;\n\t}\n};\n\nexports.makePrettylink = function(parser, title, caption) {\n\tvar output;\n\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\n\t\tif (caption !== undefined) {\n\t\t\toutput = \"[[\" + caption + \"|\" + title + \"]]\";\n\t\t} else {\n\t\t\toutput = \"[[\" + title + \"]]\";\n\t\t}\n\t} else if (caption !== undefined) {\n\t\tvar safeCaption = sanitizeCaption(parser, caption);\n\t\tif (safeCaption !== undefined) {\n\t\t\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\n\t\t}\n\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\n\t\toutput = exports.makeWidget(parser, '$link', {to: title});\n\t} else if (parser.context.allowWidgets() && parser.placeholder) {\n\t\t// If we don't have a caption, we must resort to\n\t\t// placeholders anyway to prevent link/caption desync\n\t\t// from later relinks.\n\t\t// It doesn't matter whether the tiddler is quotable.\n\t\tvar ph = parser.placeholder.getPlaceholderFor(title);\n\t\toutput = \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t}\n\treturn output;\n};\n\n/**In version 5.1.20, Tiddlywiki made it so <$link to\"something\" /> would\n * use \"something\" as a caption. This is preferable. However, Relink works\n * going back to 5.1.14, so we need to have different handling for both\n * cases.\n */\nvar _supported;\nexports.shorthandPrettylinksSupported = function(wiki) {\n\tif (_supported === undefined) {\n\t\tvar test = wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<$link to=test/>\");\n\t\t_supported = (test === \"test\");\n\t}\n\treturn _supported;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nfunction canBePrettylink(value, customCaption) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') < 0);\n};\n\nfunction sanitizeCaption(parser, caption) {\n\tvar plaintext = parser.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", caption);\n\tif (plaintext === caption && caption.indexOf(\"</$link>\") <= 0) {\n\t\treturn caption;\n\t} else {\n\t\treturn exports.makeWidget(parser, '$text', {text: caption});\n\t}\n};\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v) && v.length > 0; },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\n/**Like wrapAttribute value, except for macro parameters, not attributes.\n *\n * These are more permissive. Allows brackets,\n * and slashes and '<' in unquoted values.\n */\nexports.wrapParameterValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '[[', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\s>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t\"[[\": canBePrettyOperand,\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n/**Given some text, and a param or  attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n\n// Finds the newline at the end of a string and returns it. Empty string if\n// none exists.\nexports.getEndingNewline = function(string) {\n\tvar l = string.length;\n\tif (string[l-1] === '\\n') {\n\t\treturn (string[l-2] === '\\r') ? \"\\r\\n\" : \"\\n\";\n\t}\n\treturn \"\";\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"wikilink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0],\n\t\tunlink = $tw.config.textPrimitives.unWikiLink;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== unlink) {\n\t\tcallback(title, unlink + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined,\n\t\ttitle = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title === fromTitle && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\tentry = { output: this.makeWikilink(toTitle, options) };\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeWikilink = function(title, options) {\n\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/context.js": {
            "text": "/*\\\n\nBase class for relink contexts.\n\n\\*/\n\nfunction Context() {\n};\n\nexports.context = Context;\n\n// This class does no special handling of fields, operators, or attributes.\n// we pass it along to the parent.\nContext.prototype.getFields = function() {\n\treturn this.parent.getFields();\n};\n\nContext.prototype.getOperator = function(name, index) {\n\treturn this.parent.getOperator(name, index);\n};\n\nContext.prototype.getOperators = function() {\n\treturn this.parent.getOperators();\n};\n\nContext.prototype.getAttribute = function(elementName) {\n\treturn this.parent.getAttribute(elementName);\n};\n\nContext.prototype.getAttributes = function() {\n\treturn this.parent.getAttributes();\n};\n\nContext.prototype.getMacro = function(macroName) {\n\treturn this.parent.getMacro(macroName);\n};\n\nContext.prototype.getMacros = function() {\n\treturn this.parent.getMacros();\n};\n\nContext.prototype.allowPrettylinks = function() {\n\treturn this.parent.allowPrettylinks();\n};\n\nContext.prototype.allowWidgets = function() {\n\treturn this.parent.allowWidgets();\n};\n\nContext.prototype.hasImports = function(value) {\n\treturn this.parent.hasImports(value);\n};\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/context.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/import.js": {
            "text": "/*\\\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction ImportContext(wiki, parent, filter) {\n\tthis.parent = parent;\n\tthis.wiki = wiki;\n\tvar importWidget = createImportWidget(filter, this.wiki, this.parent.widget);\n\tthis._compileList(importWidget.tiddlerList);\n\t// This only works if only one filter is imported\n\tthis.widget = this.getBottom(importWidget);\n\t// Trickle this up, so that any containing tiddlercontext knows that this\n\t// tiddler does some importing, and must be checked regularly.\n\tparent.hasImports(true);\n};\n\nexports.import = ImportContext;\n\nImportContext.prototype = new WidgetContext();\n\nImportContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes)\n};\n\nfunction createImportWidget(filter, wiki, parent) {\n\tvar widget = wiki.makeWidget( { tree: [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\t\"filter\": {\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: filter\n\t\t\t}\n\t\t}\n\t}] }, { parentWidget: parent} );\n\tif (parent) {\n\t\tparent.children.push(widget);\n\t}\n\twidget.execute();\n\twidget.renderChildren();\n\tvar importWidget = widget.children[0];\n\treturn importWidget;\n};\n\nImportContext.prototype._compileList = function(titleList) {\n\tfor (var i = 0; i < titleList.length; i++) {\n\t\tvar parser = this.wiki.parseTiddler(titleList[i]);\n\t\tif (parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile (parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tif (parseTreeNode.relink) {\n\t\t\t\t\tfor (var macroName in parseTreeNode.relink) {\n\t\t\t\t\t\tvar parameters = parseTreeNode.relink[macroName];\n\t\t\t\t\t\tfor (paramName in parameters) {\n\t\t\t\t\t\t\tthis.addSetting(this.wiki, macroName, paramName, parameters[paramName], titleList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t}\n\t}\n};\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/import.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/tiddler.js": {
            "text": "/*\\\n\nContext for a tiddler. Defines nothing but makes an entry point to test if\na tiddler must be refreshed.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction TiddlerContext(wiki, parentContext, title) {\n\tthis.title = title;\n\tthis.parent = parentContext;\n\tvar globalWidget = parentContext && parentContext.widget;\n\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\n\tparentWidget.setVariable('currentTiddler', title);\n\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\n};\n\nexports.tiddler = TiddlerContext;\n\nTiddlerContext.prototype = new WidgetContext();\n\nTiddlerContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes);\n};\n\n// By default, a tiddler context does not use imports, unless an import\n// statement is later discovered somewhere in the fields.\nTiddlerContext.prototype.hasImports = function(value) {\n\treturn this._hasImports || (this._hasImports = value);\n};\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/tiddler.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/variable.js": {
            "text": "/*\\\n\nThis handles the context for variables. Either from $set, $vars, or \\define\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction VariableContext(parent, setParseTreeNode) {\n\tthis.parent = parent;\n\t// Now create a new widget and attach it.\n\tvar attachPoint = parent.widget;\n\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\n\tattachPoint.children.push(setWidget);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\t// point our widget to bottom, where any other contexts would attach to\n\tthis.widget = this.getBottom(setWidget);\n};\n\nexports.variable = VariableContext;\n\nVariableContext.prototype = new WidgetContext();\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/variable.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/whitelist.js": {
            "text": "/*\\\n\nThis top-level context manages settings inside the whitelist. It never has\na parent.\n\n\\*/\n\nvar utils = require('../utils');\nvar Context = require('./context').context;\n\nvar prefix = \"$:/config/flibbles/relink/\";\n\nfunction WhitelistContext(wiki) {\n\tbuild(this, wiki);\n};\n\nexports.whitelist = WhitelistContext;\n\nWhitelistContext.prototype = new Context();\n\n/**Hot directories are directories for which if anything changes inside them,\n * then Relink must completely rebuild its index.\n * By default, this includes the whitelist settings, but relink-titles also\n * includes its rules disabling directory.\n * This is the FIRST solution I came up with to this problem. If you're\n * looking at this, please make a github issue so I have a chance to understand\n * your needs. This is currently a HACK solution.\n */\nWhitelistContext.hotDirectories = [prefix];\n\nWhitelistContext.prototype.getAttribute = function(elementName) {\n\treturn this.attributes[elementName];\n};\n\nWhitelistContext.prototype.getAttributes = function() {\n\treturn flatten(this.attributes);\n};\n\nWhitelistContext.prototype.getFields = function() {\n\treturn this.fields;\n};\n\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\n\tvar op = this.operators[operatorName];\n\treturn op && op[operandIndex || 1];\n};\n\nWhitelistContext.prototype.getOperators = function() {\n\tvar signatures = Object.create(null);\n\tfor (var op in this.operators) {\n\t\tvar operandSet = this.operators[op];\n\t\tfor (var index in operandSet) {\n\t\t\tvar entry = operandSet[index];\n\t\t\tsignatures[entry.key] = entry;\n\t\t}\n\t}\n\treturn signatures;\n};\n\nWhitelistContext.prototype.getMacro = function(macroName) {\n\treturn this.macros[macroName];\n};\n\nWhitelistContext.prototype.getMacros = function() {\n\treturn flatten(this.macros);\n};\n\nWhitelistContext.prototype.changed = function(changedTiddlers) {\n\tfor (var i = 0; i < WhitelistContext.hotDirectories.length; i++) {\n\t\tvar dir = WhitelistContext.hotDirectories[i];\n\t\tfor (var title in changedTiddlers) {\n\t\t\tif (title.substr(0, dir.length) === dir) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nWhitelistContext.prototype.hasImports = function(value) {\n\t// We don't care if imports are used. This is the global level.\n\treturn false;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nvar factories = {\n\tattributes: function(attributes, data, key) {\n\t\tvar elem = root(key);\n\t\tvar attr = key.substr(elem.length+1);\n\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\tattributes[elem][attr] = data;\n\t},\n\tfields: function(fields, data, name) {\n\t\tfields[name] = data;\n\t},\n\tmacros: function(macros, data, key) {\n\t\t// We take the last index, not the first, because macro\n\t\t// parameters can't have slashes, but macroNames can.\n\t\tvar name = dir(key);\n\t\tvar arg = key.substr(name.length+1);\n\t\tmacros[name] = macros[name] || Object.create(null);\n\t\tmacros[name][arg] = data;\n\t},\n\toperators: function(operators, data, key) {\n\t\t// We take the last index, not the first, because the operator\n\t\t// may have a slash to indicate parameter number\n\t\tvar pair = key.split('/');\n\t\tvar name = pair[0];\n\t\tdata.key = key;\n\t\toperators[name] = operators[name] || Object.create(null);\n\t\toperators[name][pair[1] || 1] = data;\n\t}\n};\n\nfunction build(settings, wiki) {\n\tfor (var name in factories) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = factories[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tvar data = utils.getType(tiddler.fields.text.trim());\n\t\t\t\tif (data) {\n\t\t\t\t\tdata.source = title;\n\t\t\t\t\t// Secret feature. You can access a config tiddler's\n\t\t\t\t\t// fields from inside the fieldtype handler. Cool\n\t\t\t\t\t// tricks can be done with this.\n\t\t\t\t\tdata.fields = tiddler.fields;\n\t\t\t\t\tfactory(settings[category], data, name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n\n/* Turns {dir: {file1: 'value1', file2: 'value2'}}\n * into {dir/file1: 'value1', dir/file2: 'value2'}\n */\nfunction flatten(set) {\n\tvar signatures = Object.create(null);\n\tfor (var outerName in set) {\n\t\tvar setItem = set[outerName];\n\t\tfor (var innerName in setItem) {\n\t\t\tsignatures[outerName + \"/\" + innerName] = setItem[innerName];\n\t\t}\n\t}\n\treturn signatures;\n};\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/whitelist.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/widget.js": {
            "text": "/*\\\n\nThis is a virtual subclass of context for contexts that exist within widgets\nof a specific tiddler.\n\nAll widget contexts must have a widget member.\n\n\\*/\n\nvar Context = require('./context.js').context;\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nfunction WidgetContext() {};\n\nexports.widget = WidgetContext;\n\nWidgetContext.prototype = new Context();\n\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\n\t// widget.variables is prototyped, so it looks up into all its parents too\n\treturn this.widget.variables[variableName] || $tw.macros[variableName];\n};\n\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\n\tthis.macros = this.macros || Object.create(null);\n\tvar macro = this.macros[macroName];\n\ttype = type || utils.getDefaultType(wiki);\n\tif (macro === undefined) {\n\t\tmacro = this.macros[macroName] = Object.create(null);\n\t}\n\tvar handler = utils.getType(type);\n\tif (handler) {\n\t\thandler.source = sourceTitle;\n\t\t// We attach the fields of the defining tiddler for the benefit\n\t\t// of any 3rd party field types that want access to them.\n\t\tvar tiddler = wiki.getTiddler(sourceTitle);\n\t\thandler.fields = tiddler.fields;\n\t\tmacro[parameter] = handler;\n\t}\n};\n\nWidgetContext.prototype.getMacros = function() {\n\tvar signatures = this.parent.getMacros();\n\tif (this.macros) {\n\t\tfor (var macroName in this.macros) {\n\t\t\tvar macro = this.macros[macroName];\n\t\t\tfor (var param in macro) {\n\t\t\t\tsignatures[macroName + \"/\" + param] = macro[param];\n\t\t\t}\n\t\t}\n\t}\n\treturn signatures;\n};\n\n/**This does strange handling because it's possible for a macro to have\n * its individual parameters whitelisted in separate places.\n * Don't know WHY someone would do this, but it can happen.\n */\nWidgetContext.prototype.getMacro = function(macroName) {\n\tvar theseSettings = this.macros && this.macros[macroName];\n\tvar parentSettings;\n\tif (this.parent) {\n\t\tparentSettings = this.parent.getMacro(macroName);\n\t}\n\tif (theseSettings && parentSettings) {\n\t\t// gotta merge them without changing either. This is expensive,\n\t\t// but it'll happen rarely.\n\t\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\n\t\treturn rtnSettings;\n\t}\n\treturn theseSettings || parentSettings;\n};\n\n/**Returns the deepest descendant of the given widget.\n */\nWidgetContext.prototype.getBottom = function(widget) {\n\twhile (widget.children.length > 0) {\n\t\twidget = widget.children[0];\n\t}\n\treturn widget;\n};\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/widget.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/contexts/wikitext.js": {
            "text": "/*\\\n\nContext for wikitext. It can contain rules about what's allowed in this\ncurrent layer of wikitext.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction WikitextContext(parentContext) {\n\tthis.parent = parentContext;\n\tthis.widget = parentContext.widget;\n};\n\nexports.wikitext = WikitextContext;\n\nWikitextContext.prototype = new WidgetContext();\n\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\nWikitextContext.prototype.allowWidgets = enabled;\nWikitextContext.prototype.allowPrettylinks = enabled;\n\nfunction enabled() { return true; };\n",
            "module-type": "relinkcontext",
            "title": "$:/plugins/flibbles/relink/js/contexts/wikitext.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/utils/backupIndexer.js": {
            "text": "/*\\\nmodule-type: library\n\nThis is a backup indexer Relink uses if the real one is disabled, or we're\n<V5.1.23. It's not nearly as good, but it caches some.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\n// This is the indexer we use if the current wiki doesn't support indexers.\nfunction BackupIndexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nmodule.exports = BackupIndexer;\n\nBackupIndexer.prototype.lookup = function(title) {\n\treturn getCache(this.wiki).lookup[title];\n};\n\nBackupIndexer.prototype.reverseLookup = function(title) {\n\tvar index = getCache(this.wiki);\n\tif (!index.reverse[title]) {\n\t\tvar record = Object.create(null);\n\t\tfor (var other in index.lookup) {\n\t\t\tif (index.lookup[other][title]) {\n\t\t\t\trecord[other] = index.lookup[other][title];\n\t\t\t}\n\t\t}\n\t\tindex.reverse[title] = record;\n\t}\n\treturn index.reverse[title];\n};\n\n/* The backup indexer doesn't bother caching relink reports. It would always\n * be called after a draft tiddler had changed, which would defeat the point.\n */\nBackupIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tvar cache = getCache(this.wiki);\n\tif (cache.lastRelinkFrom === fromTitle && cache.lastRelinkTo === toTitle) {\n\t\toptions.cache = cache.lastRelinkCache;\n\t\treturn cache.lastRelink;\n\t}\n\tcache.lastRelink = utils.getRelinkResults(this.wiki, fromTitle, toTitle, cache.context, undefined, options);\n\tcache.lastRelinkFrom = fromTitle;\n\tcache.lastRelinkTo = toTitle;\n\tcache.lastRelinkCache = options.cache;\n\treturn cache.lastRelink;\n};\n\nfunction getCache(wiki) {\n\treturn wiki.getGlobalCache('relink', function() {\n\t\tvar tiddlerList = wiki.getRelinkableTitles();\n\t\tvar index = Object.create(null);\n\t\tvar wikiContext = utils.getWikiContext(wiki);\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif (tiddler && !tiddler.fields[\"plugin-type\"]) {\n\t\t\t\tvar context = new TiddlerContext(wiki, wikiContext, title);\n\t\t\t\tindex[title] = utils.getTiddlerRelinkReferences(wiki, title, context);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tlookup: index,\n\t\t\treverse: Object.create(null),\n\t\t\tcontext: wikiContext};\n\t});\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/utils/backupIndexer.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/utils/entry.js": {
            "text": "/*\\\n\nEntries are deprecated. Don't use them. These classes are here just so that\nany 3rd party modules built for Relink V1 don't break.\n\nJust return an object like, {output: \"string\", impossible: true|undefined}\n\n\\*/\n\nfunction EntryNode() {\n\tthis.children = [];\n};\n\nmodule.exports = EntryNode;\n\n/**  PURE VIRTUAL\n * EntryNode.prototype.report = function() -> [\"string\", ...]\n */\n\nEntryNode.newType = function() {\n\treturn EntryNode;\n};\n\nEntryNode.prototype.add = function(entry) {\n\tthis.children.push(entry);\n};\n\nfunction EntryCollection() {\n\tthis.children = Object.create(null);\n\tthis.types = Object.create(null);\n};\n\nEntryNode.newCollection = function(name) {\n\treturn EntryCollection;\n};\n\n// Again. I reiterate. Don't use this. All this is just legacy support.\nObject.defineProperty(EntryCollection, 'impossible', {\n\tget: function() {\n\t\tvar imp = this._impossible;\n\t\tthis.eachChild(function(child) { imp = imp || child.impossible; });\n\t\treturn imp;\n\t},\n\tset: function(impossible) {\n\t\tthis._impossible = true;\n\t}\n});\n\nEntryCollection.prototype.eachChild = function(method) {\n\tfor (var child in this.children) {\n\t\tmethod(this.children[child]);\n\t}\n};\n\nEntryCollection.prototype.addChild = function(child, name, type) {\n\tthis.children[name] = child;\n\tthis.types[name] = type;\n};\n\nEntryCollection.prototype.hasChildren = function() {\n\treturn Object.keys(this.children).length > 0;\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/utils/entry.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/utils/placeholder.js": {
            "text": "/*\\\n\nA method which doles out placeholders when requested, and constructs\nthe necessary supporting pragma when requested.\n\n\\*/\n\nvar utils = require('../utils');\n\nfunction Placeholder() {\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = {};\n\tthis.used = Object.create(null);\n};\n\nmodule.exports = Placeholder;\n\nPlaceholder.prototype.getPlaceholderFor = function(value, category) {\n\tthis.reverseMap[category] = this.reverseMap[category] || Object.create(null);\n\tvar placeholder = this.reverseMap[category][value];\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar config = (this.parser && this.parser.context) || utils.getWikiContext(this.parser.wiki);\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (config.getMacroDefinition(placeholder) || this.used[placeholder]);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[category][value] = placeholder;\n\tthis.used[placeholder] = true;\n\treturn placeholder;\n};\n\n// For registering placeholders that already existed\nPlaceholder.prototype.registerExisting = function(key, value) {\n\tthis.reverseMap[value] = key;\n\tthis.used[key] = true;\n};\n\nPlaceholder.prototype.getPreamble = function() {\n\tvar results = [];\n\tvar keys = Object.keys(this.placeholders);\n\tif (keys.length > 0) {\n\t\tkeys.sort();\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar name = keys[i];\n\t\t\tvar val = this.placeholders[name];\n\t\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t\t}\n\t}\n\treturn results.join('');\n};\n\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/utils/placeholder.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/utils/rebuilder.js": {
            "text": "/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/utils/rebuilder.js",
            "type": "application/javascript"
        },
        "$:/config/flibbles/relink/attributes/$button/set": {
            "title": "$:/config/flibbles/relink/attributes/$button/set",
            "text": "reference"
        },
        "$:/config/flibbles/relink/attributes/$button/setTo": {
            "title": "$:/config/flibbles/relink/attributes/$button/setTo",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$button/to": {
            "title": "$:/config/flibbles/relink/attributes/$button/to",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$checkbox/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$checkbox/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$checkbox/tag": {
            "title": "$:/config/flibbles/relink/attributes/$checkbox/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$count/filter": {
            "title": "$:/config/flibbles/relink/attributes/$count/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$draggable/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$draggable/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$draggable/filter": {
            "title": "$:/config/flibbles/relink/attributes/$draggable/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$edit-text/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$edit-text/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$edit/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$edit/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$encrypt/filter": {
            "title": "$:/config/flibbles/relink/attributes/$encrypt/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$fieldmangler/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$fieldmangler/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$fields/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$fields/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$image/source": {
            "title": "$:/config/flibbles/relink/attributes/$image/source",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$importvariables/filter": {
            "title": "$:/config/flibbles/relink/attributes/$importvariables/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$linkcatcher/to": {
            "title": "$:/config/flibbles/relink/attributes/$linkcatcher/to",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$linkcatcher/set": {
            "title": "$:/config/flibbles/relink/attributes/$linkcatcher/set",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$link/to": {
            "title": "$:/config/flibbles/relink/attributes/$link/to",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$list/filter": {
            "title": "$:/config/flibbles/relink/attributes/$list/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$list/template": {
            "title": "$:/config/flibbles/relink/attributes/$list/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$list/editTemplate": {
            "title": "$:/config/flibbles/relink/attributes/$list/editTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$list/emptyMessage": {
            "title": "$:/config/flibbles/relink/attributes/$list/emptyMessage",
            "text": "wikitext"
        },
        "$:/config/flibbles/relink/attributes/$list/history": {
            "title": "$:/config/flibbles/relink/attributes/$list/history",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$navigator/story": {
            "title": "$:/config/flibbles/relink/attributes/$navigator/story",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$navigator/history": {
            "title": "$:/config/flibbles/relink/attributes/$navigator/history",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$radio/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$radio/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$range/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$range/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$reveal/stateTitle": {
            "title": "$:/config/flibbles/relink/attributes/$reveal/stateTitle",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$select/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$select/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$setvariable/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$setvariable/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$setvariable/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$setvariable/subtiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$setvariable/filter": {
            "title": "$:/config/flibbles/relink/attributes/$setvariable/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$set/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$set/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$set/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$set/subtiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$set/filter": {
            "title": "$:/config/flibbles/relink/attributes/$set/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$tiddler/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$tiddler/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$transclude/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$transclude/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$transclude/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$transclude/subtiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$view/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$view/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$view/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$view/subtiddler",
            "text": "title"
        },
        "$:/plugins/flibbles/relink/configuration": {
            "title": "$:/plugins/flibbles/relink/configuration",
            "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\" \"$:/plugins/flibbles/relink/ui/configuration/Fields\">>\n</div>\n"
        },
        "$:/config/flibbles/relink/fields/caption": {
            "title": "$:/config/flibbles/relink/fields/caption",
            "text": "wikitext"
        },
        "$:/config/flibbles/relink/fields/filter": {
            "title": "$:/config/flibbles/relink/fields/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/fields/list": {
            "title": "$:/config/flibbles/relink/fields/list",
            "text": "list"
        },
        "$:/config/flibbles/relink/fields/list-after": {
            "title": "$:/config/flibbles/relink/fields/list-after",
            "text": "title"
        },
        "$:/config/flibbles/relink/fields/list-before": {
            "title": "$:/config/flibbles/relink/fields/list-before",
            "text": "title"
        },
        "$:/config/flibbles/relink/fields/tags": {
            "title": "$:/config/flibbles/relink/fields/tags",
            "text": "list"
        },
        "$:/plugins/flibbles/relink/language/Buttons/Delete/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/Delete/Hint",
            "text": "delete"
        },
        "$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint",
            "text": "go to defining tiddler"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint",
            "text": "Specify a new widget/element attribute to be updated whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewField/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Hint",
            "text": "Specify a new field to be updated whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewField/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint",
            "text": "Specify a new filter operator to be considered whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint",
            "text": "Specify a new macro parameter to be updated whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Error/InvalidAttributeName": {
            "title": "$:/plugins/flibbles/relink/language/Error/InvalidAttributeName",
            "text": "Illegal characters in attribute name \"<$text text=<<attributeName>>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"
        },
        "$:/plugins/flibbles/relink/language/Error/InvalidElementName": {
            "title": "$:/plugins/flibbles/relink/language/Error/InvalidElementName",
            "text": "Illegal characters in element/widget name \"<$text text=<<elementName>>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"
        },
        "$:/plugins/flibbles/relink/language/Error/InvalidMacroName": {
            "title": "$:/plugins/flibbles/relink/language/Error/InvalidMacroName",
            "text": "Illegal characters in macro name \"<$text text=<<macroName>>/>\". Macros cannot contain whitespace"
        },
        "$:/plugins/flibbles/relink/language/Error/InvalidParameterName": {
            "title": "$:/plugins/flibbles/relink/language/Error/InvalidParameterName",
            "text": "Illegal characters in parameter name \"<$text text=<<parameterName>>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"
        },
        "$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator": {
            "title": "$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator",
            "text": "Filter Error: Unknown suffix for the 'relink' filter operator"
        },
        "$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks": {
            "title": "$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks",
            "text": "Relink could not update '<<from>>' to '<<to>>' inside the following tiddlers:"
        },
        "$:/plugins/flibbles/relink/language/Error/UnrecognizedType": {
            "title": "$:/plugins/flibbles/relink/language/Error/UnrecognizedType",
            "text": "Relink parse error: Unrecognized field type '<<type>>'"
        },
        "$:/plugins/flibbles/relink/language/Help/Attributes": {
            "title": "$:/plugins/flibbles/relink/language/Help/Attributes",
            "text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Attributes]]}}}>Attributes documentation page</a> for details."
        },
        "$:/plugins/flibbles/relink/language/Help/Fields": {
            "title": "$:/plugins/flibbles/relink/language/Help/Fields",
            "text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Fields]]}}}>Fields documentation page</a> for details."
        },
        "$:/plugins/flibbles/relink/language/Help/Macros": {
            "title": "$:/plugins/flibbles/relink/language/Help/Macros",
            "text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Macros]]}}}>Macros documentation page</a> for details."
        },
        "$:/plugins/flibbles/relink/language/Help/Operators": {
            "title": "$:/plugins/flibbles/relink/language/Help/Operators",
            "text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Operators]]}}}>Operators documentation page</a> for details."
        },
        "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty": {
            "title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"
        },
        "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description": {
            "title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description",
            "text": "The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"
        },
        "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption": {
            "title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption",
            "text": "//Relink// References"
        },
        "$:/plugins/flibbles/relink/language/ui/Attributes/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Attributes/Caption",
            "text": "Attributes"
        },
        "$:/plugins/flibbles/relink/language/ui/Fields/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Fields/Caption",
            "text": "Fields"
        },
        "$:/plugins/flibbles/relink/language/ui/Macros/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Macros/Caption",
            "text": "Macros"
        },
        "$:/plugins/flibbles/relink/language/ui/Operators/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Operators/Caption",
            "text": "Operators"
        },
        "$:/plugins/flibbles/relink/license": {
            "title": "$:/plugins/flibbles/relink/license",
            "type": "text/vnd.tiddlywiki",
            "text": "<a href={{$:/plugins/flibbles/relink!!demo}}>Relink Plugin</a> Copyright (c) 2019-<<now YYYY>> Cameron Fischer\n\n[[BSD 3-Clause License|https://raw.githubusercontent.com/flibbles/tw5-relink/master/LICENSE]]\n"
        },
        "$:/config/flibbles/relink/macros/csvtiddlers/filter": {
            "title": "$:/config/flibbles/relink/macros/csvtiddlers/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/datauri/title": {
            "title": "$:/config/flibbles/relink/macros/datauri/title",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/jsontiddler/title": {
            "title": "$:/config/flibbles/relink/macros/jsontiddler/title",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/jsontiddlers/filter": {
            "title": "$:/config/flibbles/relink/macros/jsontiddlers/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/list-links/filter": {
            "title": "$:/config/flibbles/relink/macros/list-links/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/list-links-draggable/tiddler": {
            "title": "$:/config/flibbles/relink/macros/list-links-draggable/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate": {
            "title": "$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/list-tagged-draggable/tag": {
            "title": "$:/config/flibbles/relink/macros/list-tagged-draggable/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate": {
            "title": "$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tabs/buttonTemplate": {
            "title": "$:/config/flibbles/relink/macros/tabs/buttonTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tabs/default": {
            "title": "$:/config/flibbles/relink/macros/tabs/default",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tabs/tabsList": {
            "title": "$:/config/flibbles/relink/macros/tabs/tabsList",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/tabs/template": {
            "title": "$:/config/flibbles/relink/macros/tabs/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tag/tag": {
            "title": "$:/config/flibbles/relink/macros/tag/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tag-pill/tag": {
            "title": "$:/config/flibbles/relink/macros/tag-pill/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/timeline/subfilter": {
            "title": "$:/config/flibbles/relink/macros/timeline/subfilter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/toc/tag": {
            "title": "$:/config/flibbles/relink/macros/toc/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc/itemClassFilter": {
            "title": "$:/config/flibbles/relink/macros/toc/itemClassFilter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/toc-expandable/tag": {
            "title": "$:/config/flibbles/relink/macros/toc-expandable/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter": {
            "title": "$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/toc-expandable/exclude": {
            "title": "$:/config/flibbles/relink/macros/toc-expandable/exclude",
            "text": "list"
        },
        "$:/config/flibbles/relink/macros/toc-selective-expandable/tag": {
            "title": "$:/config/flibbles/relink/macros/toc-selective-expandable/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter": {
            "title": "$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/toc-selective-expandable/exclude": {
            "title": "$:/config/flibbles/relink/macros/toc-selective-expandable/exclude",
            "text": "list"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText",
            "text": "wikitext"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText",
            "text": "wikitext"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText",
            "text": "wikitext"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText",
            "text": "wikitext"
        },
        "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template": {
            "title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/operators/list": {
            "title": "$:/config/flibbles/relink/operators/list",
            "text": "reference"
        },
        "$:/config/flibbles/relink/operators/tag": {
            "title": "$:/config/flibbles/relink/operators/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/operators/title": {
            "title": "$:/config/flibbles/relink/operators/title",
            "text": "title"
        },
        "$:/config/flibbles/relink/operators/field:title": {
            "title": "$:/config/flibbles/relink/operators/field:title",
            "text": "title"
        },
        "$:/language/EditTemplate/Title/Impossibles/Prompt": {
            "title": "$:/language/EditTemplate/Title/Impossibles/Prompt",
            "text": "''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following tiddlers will be updated if relinking:"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$tiddler tiddler=<<fromTitle>> >\n\n<$list filter=\"[relink:wouldchange<toTitle>limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$set\n\tname=\"prompt\"\n\tfilter=\"[relink:wouldchange<toTitle>relink:impossible<toTitle>]\"\n\tvalue=\"EditTemplate/Title/Impossibles/Prompt\"\n\temptyValue=\"EditTemplate/Title/References/Prompt\" >\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}}\n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}}\n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n</$set>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$list variable=\"listItem\" filter=\"[relink:wouldchange<toTitle>!title[$:/StoryList]sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemTemplate\">\n</$list>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$tiddler>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/config/flibbles/relink/PluginLibrary": {
            "title": "$:/config/flibbles/relink/PluginLibrary",
            "caption": "//Relink// Library",
            "url": "https://flibbles.github.io/tw5-relink/library/index.html",
            "tags": "$:/tags/PluginLibrary",
            "text": "The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\n"
        },
        "$:/plugins/flibbles/relink/readme": {
            "title": "$:/plugins/flibbles/relink/readme",
            "type": "text/vnd.tiddlywiki",
            "text": "When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee <a href={{$:/plugins/flibbles/relink!!source}}>the tw5-relink website</a> for more details and examples.\n"
        },
        "$:/config/flibbles/relink/settings/default-type": {
            "title": "$:/config/flibbles/relink/settings/default-type",
            "text": "title"
        },
        "$:/plugins/flibbles/relink/ui/ListItemTemplate": {
            "title": "$:/plugins/flibbles/relink/ui/ListItemTemplate",
            "text": "<$set\n\tname=\"classes\"\n\tfilter=\"[<listItem>relink:impossible<toTitle>]\"\n\tvalue=\"tc-menu-list-item tc-relink-impossible\"\n\temptyValue=\"tc-menu-list-item\">\n<div class=<<classes>>>\n<$link to=<<listItem>>><$text text=<<listItem>> /></$link>\n</div>\n</$set>\n"
        },
        "$:/plugins/flibbles/relink/ui/TiddlerInfo/References": {
            "title": "$:/plugins/flibbles/relink/ui/TiddlerInfo/References",
            "caption": "{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}",
            "tags": "$:/tags/TiddlerInfo",
            "text": "\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [all[current]relink:backreferences[]!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\n<$list filter=\"[subfilter<filter>first[]]\">\n\n<<lingo References/Description>>\n</$list>\n\n<table class=\"tc-relink-references-table\">\n<tbody>\n<$list filter=<<filter>> emptyMessage=<<lingo References/Empty>> variable=\"listItem\" template=\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\" />\n</tbody>\n</table>\n"
        },
        "$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate": {
            "title": "$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate",
            "text": "<tr class=\"tc-relink-references\">\n<td class=\"tc-relink-references-title\">\n<$link to=<<listItem>>/>\n</td>\n<td class=\"tc-relink-references-report\">\n<$list filter=\"[<listItem>relink:report<currentTiddler>]\">\n\n<$text text=<<currentTiddler>> />\n</$list>\n\n</td>\n</tr>\n"
        },
        "$:/plugins/flibbles/relink/ui/components/button-delete": {
            "title": "$:/plugins/flibbles/relink/ui/components/button-delete",
            "text": "\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define prefix() $:/config/flibbles/relink/\n\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list><$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<<tiddlerName>> text=\"\" />\n</$list>\n{{$:/core/images/delete-button}}\n</$button>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$link><$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}</$button></$link>\n</$list>\n"
        },
        "$:/plugins/flibbles/relink/ui/components/select-fieldtype": {
            "title": "$:/plugins/flibbles/relink/ui/components/select-fieldtype",
            "text": "\\define prefix() $:/config/flibbles/relink/\n\n<$vars type={{{ [<signature>relink:type[]] }}} >\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$select tiddler=<<currentTiddler>> >\n<$list variable=\"option\" filter=\"[relink:types[]]\">\n<option><$text text=<<option>> /></option>\n</$list>\n</$select>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$text text=<<type>> />\n</$list>\n</$vars>\n"
        },
        "$:/plugins/flibbles/relink/ui/components/tables": {
            "title": "$:/plugins/flibbles/relink/ui/components/tables",
            "text": "\\define .make-table(title, plugin, default-table-state:yes)\n\n<$list variable=\"render\" filter=\"[relink:signatures<__plugin__>prefix<__category__>first[]]\">\n<$set name=\"table-state\" value=<<qualify \"\"\"$:/state/flibbles/relink/tables/$title$\"\"\">>>\n<tr><th class=\"tc-relink-header-plugin\" colspan=<<column-count>> >\n<$reveal type=\"nomatch\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} ''$title$''\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}} ''$title$''\n</$button>\n</$reveal>\n</th></tr>\n<$list\n\tvariable=\"signature\"\n\tfilter=\"[relink:signatures<__plugin__>prefix<__category__>sort[]]\">\n<$vars key={{{ [<signature>removeprefix<__category__>removeprefix[/]] }}} >\n<$tiddler tiddler={{{[<signature>relink:source[]]}}} >\n<$reveal tag=\"tr\" type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> signature=<<signature>> />\n<td class=\"tc-relink-column-type\">{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td class=\"tc-relink-column-delete\">{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</$reveal>\n</$tiddler>\n</$vars>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n<$vars\n\tcolumn-count={{{[enlist<__header-list__>] [[DeleteColumn]] +[count[]]}}}>\n\n<table class=\"tc-relink-whitelist\"><tbody>\n<tr>\n<$list variable=\"header\" filter=\"[enlist<__header-list__>butlast[]]\"><th><<header>></th></$list>\n<!-- We have the last column extend into the delete/link column, which is unlabeled. -->\n<th colspan=2><$text text={{{ [enlist<__header-list__>last[]] }}} /></th>\n</tr>\n\n<<.make-table Custom \"\" yes>>\n\n<$list\n\tfilter=\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\">\n<$set name=\"subtitle\" value={{!!description}} emptyValue={{!!title}} >\n<$macrocall $name=\".make-table\" title=<<subtitle>> plugin=<<currentTiddler>> />\n</$set>\n</$list>\n\n<<.make-table Core \"$:/plugins/flibbles/relink\">>\n\n</tbody></table>\n</$vars>\n\\end\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Attributes": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Attributes",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define element-name-tiddler() $:/state/flibbles/relink/element-name\n\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\n\n\\define row()\n<$set name=\"element\"\n      filter=\"[<key>splitbefore[/]removesuffix[/]]\">\n<$set name=\"attribute\"\n      filter=\"[<key>removeprefix<element>removeprefix[/]]\">\n<td><$text text=<<element>> /></td>\n<td><$text text=<<attribute>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<em class=\"tc-edit\">Add a new attribute:</em>\n<$edit-text\n\ttiddler=<<element-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"widget/element\" />\n<$edit-text\n\ttiddler=<<attribute-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"attribute\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<element-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<attribute-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\n\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-attribute\"\n\telement={{$(element-name-tiddler)$}}\n\tattribute={{$(attribute-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<attribute-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<element-name-tiddler>> />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<attribute-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<element-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n\n<$macrocall\n\t$name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Fields": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Fields",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define field-name-tiddler() $:/state/flibbles/relink/field-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<em class=\"tc-edit\">Add a new field:</em>\n<$edit-text\n\ttiddler=<<field-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"field name\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<field-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewField/Hint}}\n\taria-label={{$(lingo-base)$NewField/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-field\"\n\tfield={{$(field-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<field-name-tiddler>> />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<field-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$reveal>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Macros": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Macros",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\n\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\n\n\\define row()\n<$set name=\"parameter\"\n      filter=\"[<key>relink:splitafter[/]]\">\n<$set name=\"macro\"\n      filter=\"[<key>removesuffix<parameter>removesuffix[/]]\">\n<td><$text text=<<macro>> /></td>\n<td><$text text=<<parameter>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<em class=\"tc-edit\">Add a new macro parameter:</em>\n<$edit-text\n\ttiddler=<<macro-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"macro\" />\n<$edit-text\n\ttiddler=<<parameter-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"parameter\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<macro-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<parameter-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewParameter/Hint}}\n\taria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-parameter\"\n\tmacro={{$(macro-name-tiddler)$}}\n\tparameter={{$(parameter-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<parameter-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<macro-name-tiddler>> />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<parameter-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<macro-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Operators": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Operators",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<em class=\"tc-edit\">Add a new filter operator:</em>\n<$edit-text\n\ttiddler=<<operator-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"operator name\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<operator-name-tiddler>>>\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewOperator/Hint}}\n\taria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-operator\"\n\toperator={{$(operator-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<operator-name-tiddler>> />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<operator-name-tiddler>>>\n<$button>\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$reveal>\n\n<$macrocall\n\t$name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/stylesheet.css": {
            "title": "$:/plugins/flibbles/relink/ui/stylesheet.css",
            "text": ".tc-relink-references {\n}\n\n.tc-relink-references-table {\n\twidth: 100%;\n\tborder: none;\n}\n\n.tc-relink-references-table td {\n\tborder-left: none;\n}\n\n.tc-relink-references-table tr:first-child td {\n\tborder-top: none;\n}\n\n.tc-relink-references-title {\n\ttext-align: left;\n\tvertical-align: top;\n}\n\n.tc-relink-references-occurrence {\n\tfont-style: italic;\n\ttext-align: left;\n\tfont-weight: 200;\n\tpadding-left: 25px;\n\tvertical-align: top;\n}\n\n.tc-relink-header-plugin {\n\ttext-align: left;\n}\n\n.tc-relink-header-plugin button {\n\twidth: 100%\n}\n\n.tc-relink-column-type {\n\twidth: 8em;\n}\n\n.tc-relink-column-type select {\n\twidth: 100%;\n}\n\n.tc-relink-column-delete {\n\tborder-left: none;\n\ttext-align: left;\n}\n\n.tc-relink-column-delete button {\n\tpadding-left: 1em;\n}\n\n.tc-relink-impossible a.tc-tiddlylink {\n\tcolor: red;\n}\n",
            "tags": "$:/tags/Stylesheet",
            "type": "text/css"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/frd/calendar/calendarCellContent": {
            "text": "\\define calendarCellContentAux(year day mmonth dday)\n   [[$day$|$year$-$mmonth$-$dday$]]\n\\end\n\n\\define calendarCellContent_link(year month day numDay)\n  <$set name=\"m\" value=<<zeropad $month$ 2>>>\n  <$set name=\"d\" value=<<zeropad $day$ 2>>>\n   <$macrocall $name=\"calendarCellContentAux\" year=$year$ day=$day$ mmonth=<<m>> dday=<<d>>/>\n</$set></$set>\n\\end\n\n\\define calendarCellContent_basic(year month day numDay)\n$day$\n\\end\n\n\\define calendarCellContent_linkFormat(year month day numDay,)\n  <$set name=\"format\" value=<<calendarConfigElement \"dateFormat\">>>\n   <$macrocall $name=\"calendarCellContent_linkFormatAux\" year=$year$ month=$month$ day=$day$/>\n</$set>\n\\end\n\n\\define calendarCellContent_linkFormatAux(year month day)\n<$set name=\"linktarget\" value=<<formatDate $year$ $month$ $day$ \"$(format)$\">>>\n<$link to=<<linktarget>>>$day$</$link>\n\\end\n\n\\define calendarCellContent(year month day numDay)\n  <$set name=\"m\" value=<<zeropad $month$ 2>>>\n  <$set name=\"d\" value=<<zeropad $day$ 2>>>\n   <$macrocall $name=\"calendarCellContentAux\" year=$year$ day=$day$ mmonth=<<m>> dday=<<d>>/>\n</$set></$set>\n\\end",
            "created": "20151016064849231",
            "modified": "20151025074555697",
            "tags": "macro $:/tags/Macro",
            "title": "$:/plugins/frd/calendar/calendarCellContent"
        },
        "$:/plugins/frd/calendar/calendarMacro": {
            "text": "\\define calendar(state config startingDay year month buttons cellContent)\n<$set name=\"calendarState\" value=\"$state$\">\n<$set name=\"calendarConfig\" value=\"$config$\">\n<$macrocall $name=\"calendarAux\" startingDay =\"$startingDay$\" year=\"$year$\" month=\"$month$\" buttons=\"$buttons$\" cellContent=\"$cellContent$\"/>\n</$set></$set>\n\\end\n\n\\define calendarAux(startingDay year month buttons cellContent)\n<$set name=\"calendarYear\" value={{$(calendarState)$!!year}}>\n<$set name=\"calendarMonth\" value={{$(calendarState)$!!month}}>\n<$macrocall $name=\"calendarjs\" fieldyear=<<calendarYear>> fieldmonth=<<calendarMonth>> startingDay=\"$startingDay$\" year=\"$year$\" month=\"$month$\" buttons=\"$buttons$\" cellContent=\"$cellContent$\"/>\n</$set></$set>\n\\end",
            "created": "20151016065101913",
            "modified": "20151016065123646",
            "tags": "$:/tags/Macro",
            "title": "$:/plugins/frd/calendar/calendarMacro",
            "type": ""
        },
        "$:/plugins/frd/calendar/formatDate.js": {
            "created": "20151016065436917",
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/formatDate.js\ntype: application/javascript\nmodule-type: macro\n\n<<formatDate year month day format>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"formatDate\";\n\nexports.params = [\n\t{ name: \"year\" },\n\t{ name: \"month\" },\n\t{ name: \"day\" },\n\t{ name: \"format\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function formatDate(year, month, day, format) {\n\tvar date = new Date(parseInt(year), parseInt(month)-1, parseInt(day));\n\tvar defaultFormat = this.wiki.getTiddlerText(\"$:/config/NewJournal/Title\", \"YYYY-0MM-0DD\")\n\treturn $tw.utils.formatDateString(date,format || defaultFormat);\n}\n\n})();",
            "modified": "20151016150908725",
            "module-type": "macro",
            "tags": "macro",
            "title": "$:/plugins/frd/calendar/formatDate.js",
            "type": "application/javascript"
        },
        "$:/plugins/frd/calendar/calendarCellCss.js": {
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/calendarCellCss.js\ntype: application/javascript\nmodule-type: macro\n\n<<calendarCellCss year month day numDay>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"calendarCellCss\";\n\nexports.params = [\n\t{ name: \"year\" },\n\t{ name: \"month\" },\n\t{ name: \"day\" },\n\t{ name: \"numDay\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function calendarCellCss (year, month, day, numDay) {\n\tvar f;\n\tvar classes=[\"calendar-basic\"];\n\tvar cssarray=[];\n\tvar configVariable = this.getVariable(\"calendarConfig\");\n\tvar config = (configVariable) ? configVariable : \"$:/plugins/frd/calendar/calendarConfig\";\n\tvar obj = this.wiki.getTiddlerData(config,\"erreur\");\n\tif (obj!==\"erreur\") {\n\t\tvar arr = obj[\"cellCssConfig\"];\n\t\tvar l=arr.length;\n\t\tfor (var i=0;i<l;i++) {\n\t\t\tcssarray=arr[i];\n\t\t\tf=cssarray[0];\n\t\t\tif(testfunctions[f](year, month, day, numDay, cssarray.slice(2), this)) classes.push(cssarray[1]);\n\t\t}\n\t\treturn classes.join(\" \");\n\t} else return \"Erreur calendarConfig dans calendarCellCss\";\n}\n\nvar testfunctions={\n\t\n\trestdays: function(year, month, day, numDay, arr, obj) {\n\t\tif(arr.indexOf(numDay)!==-1) return true;\n\t\telse return false;\n\t},\n\t\n\tholidays: function(year, month, day, numDay, arr, obj){\n\t\tvar date=year+\"-\"+$tw.utils.pad(month)+\"-\"+$tw.utils.pad(day);\n\t\tif(arr.indexOf(date)!==-1) return true;\n\t\telse return false;\n\t},\n\t\t\n\ttoday: function(year, month, day, numDay, arr, obj) {\n\t\tvar d=new Date();\n\t\tvar y=d.getFullYear();\n\t\tvar m=d.getMonth()+1;\n\t\tvar dd=d.getDate();\n\t\tvar todaydate=y+\"-\"+$tw.utils.pad(m)+\"-\"+$tw.utils.pad(dd);\n//\t\tvar todaydate=$tw.utils.formatDateString(d, \"YYYY-OMM-ODD\");\n\t\tvar currentdate=year+\"-\"+$tw.utils.pad(month)+\"-\"+$tw.utils.pad(day);\n\t\tif(todaydate===currentdate) return true;\n\t\telse return false;\n\t},\n\t\t\n\tdatepicker: function(year, month, day, numDay, arr, obj) {\n\t\tvar datePickerDate = obj.getVariable(\"datePickerDate\");\n//\t\tvar datePickerDate = $tw.getVariable(\"datePickerDate\");\n\t\tif (datePickerDate) {\n\t\t\tvar currentdate=year+\"-\"+$tw.utils.pad(month)+\"-\"+$tw.utils.pad(day);\n\t\t\tif (datePickerDate == currentdate) return true;\n\t\t} else return false;\n\t}\n}\n\n\n})();",
            "created": "20151016065156021",
            "modified": "20151025161921254",
            "module-type": "macro",
            "tags": "macro",
            "title": "$:/plugins/frd/calendar/calendarCellCss.js",
            "type": "application/javascript"
        },
        "$:/plugins/frd/calendar/calendarConfigElement.js": {
            "created": "20151016065242575",
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/calendarConfigElement.js\ntype: application/javascript\nmodule-type: macro\n\n<<calendarConfigElement element>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"calendarConfigElement\";\n\nexports.params = [\n\t{ name: \"element\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function calendarConfigElement(element) {\n\tvar s;\n\tvar configVariable = this.getVariable(\"calendarConfig\");\n\tvar config = (configVariable) ? configVariable : \"$:/plugins/frd/calendar/calendarConfig\";\n\tvar obj = this.wiki.getTiddlerData(config,\"erreur\");\n\ts=obj[element];\n\tif(s!==undefined) return s;\n\telse return \"\";\n};\n\n})();",
            "modified": "20151016150705479",
            "module-type": "macro",
            "tags": "macro",
            "title": "$:/plugins/frd/calendar/calendarConfigElement.js",
            "type": "application/javascript"
        },
        "$:/plugins/frd/calendar/calendarjs.js": {
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/calendarjs.js\ntype: application/javascript\nmodule-type: macro\n\n<<calendarjs fieldyear fieldmonth startingDay year month buttons cellContent>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"calendarjs\";\n\nexports.params = [\n\t{ name: \"fieldyear\" },\n\t{ name: \"fieldmonth\" },\n\t{ name: \"startingDay\" },\n\t{ name: \"year\" },\n\t{ name: \"month\" },\n\t{ name: \"buttons\" },\n\t{ name: \"cellContent\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function calendar(fieldyear, fieldmonth, sstartingDay, syear, smonth, buttons, cellContent) {\n\tvar calStr=\"\";\n\tvar d=new Date();\n\tvar year=probeAndParseData(fieldyear, \"year\");\n\tvar month=probeAndParseData(fieldmonth, \"month\");\n\tvar nyear=probeAndParseData(syear, \"year\");\n\tvar nmonth=probeAndParseData(smonth, \"month\");\n\tvar startingDay;\n\tif ((year===false)||(month===false)||(nyear===false)||(nmonth===false)||(startingDay===false)) return \"Erreur dans les données de mois, d année ou de startingDay\";\n\tif (year===0) year = (nyear===0) ? d.getFullYear(): nyear;\n\tif (month===0) month = (nmonth === 0) ? (d.getMonth()+1) : nmonth;\n\tvar state = this.getVariable(\"calendarState\")||this.getVariable(\"currentTiddler\");\n\tvar configVariable = this.getVariable(\"calendarConfig\");\n\tvar config = (configVariable) ? configVariable : \"$:/plugins/frd/calendar/calendarConfig\";\n\tvar obj = this.wiki.getTiddlerData(config,\"erreur\");\n\tif (obj!==\"erreur\") {\n\t\tstartingDay = (sstartingDay===\"\") ? probeAndParseData(obj[\"startingDay\"]) : probeAndParseData(sstartingDay);\n\t\tvar weekDays=obj[\"days\"];\n\t\tvar days=getDaysInMonth(year, month);\n\t\tvar firstOfMonth = new Date (year, month-1, 1);\n\t\tvar firstDay=firstOfMonth.getDay();\n\t\tvar w=calendarArray(year, month, startingDay, firstDay, days);\n\t\tcalStr+=\"<table>\";\n\t\tcalStr+=calendarButtonsTitle(state, config, year, month, buttons);\n\t\tcalStr+=\"<tr><th>\"+rotateArray(startingDay, weekDays).join(\"</th><th>\")+\"</th></tr>\";\n\t\tcalStr += calendarCells(config, w, cellContent);\n\t\tcalStr+=\"</table>\";\n\t\treturn calStr;\n\t} else return \"Erreur calendarConfig\";\n}\n\nfunction probeAndParseData(data, field) {\n\tvar num;\n\tif (data===\"\") {\n\t\tnum = 0;\n\t} else {\n\t\tnum = parseInt(data, 10);\n\t\tif (isNaN(num)) num=false;\n\t\telse {\n\t\t\tif ((field===\"year\") && ((num < 999) || (num > 9999))) {\n\t\t\t\tnum = false;\n\t\t\t} else if ((field===\"month\") && ((num < 1) || (num > 12))) {\n\t\t\t\tnum = false;\n\t\t\t} else if ((field===\"startingDay\") && ((num < 0) || (num > 6))) {\n\t\t\t\tnum = false;\n\t\t\t}\n\t\t}\n\t}\n\treturn num;\n}\n\nfunction calendarButtonsTitle(state, config, year, month, sbuttons) {\n\tvar buttons;\n\tvar s=\"\";\n\tvar obj = $tw.wiki.getTiddlerData(config,\"erreur\");\n\tif (obj!==\"erreur\") {\n\t\tbuttons = (sbuttons===\"\") ? obj[\"buttons\"] : sbuttons;\n\t\tif(buttons===\"none\") {\n\t\t\ts+=\"<th colspan='7'><<calendarTitle \"+year+\" \"+month+\" basic>></th>\";\n\t\t} else {\n\t\t\tvar buttonsImages = obj[\"buttonsImages\"];\n\t\t\ts+=\"<tr>\";\n\t\t\ts+=\"<td class='tc-popup-handle'>\"+calendarButton(state, buttonsImages[0], \"previous\", \"year\", year, month) + \"</td>\";\n\t\t\ts+=\"<td class='tc-popup-handle'>\"+calendarButton(state, buttonsImages[1], \"previous\", \"month\", year, month) + \"</td>\";\n\t\t\ts+=\"<th colspan='3' class='tc-popup-handle'><<calendarTitle \"+year+\" \"+month+\">></th>\";\n\t\t\ts+=\"<td class='tc-popup-handle'>\"+calendarButton(state, buttonsImages[2], \"next\", \"month\", year, month) + \"</td>\";\n\t\t\ts+=\"<td class='tc-popup-handle'>\"+calendarButton(state, buttonsImages[3], \"next\", \"year\", year, month) + \"</td>\";\n\t\t\ts+=\"</tr>\";\n\t\t}\n\t} else s+=\"Erreur calendarConfig dans calendarButtonsTitle\";\n\treturn s;\n}\n\nfunction calendarButton (state, title, direction, yearmonth, year, month) {\n\tvar s=\"\";\n\tvar arr = getPrevNextMonthYear(direction, yearmonth, year, month);\n\ts+=\"<$button class='tc-btn-invisible'>\"+title;\n\ts+=\"<$action-setfield $tiddler='\"+state+\"'  year=\"+arr[0]+\"/>\";\n\ts+=\"<$action-setfield $tiddler='\"+state+\"'  month=\"+arr[1]+\"/>\";\n\ts+=\"</$button>\";\n\treturn s;\n}\n\nfunction getPrevNextMonthYear(direction, yearmonth, yyear, mmonth) {\n\tvar ymarr=new Array();\n\tvar year=yyear;\n\tvar month=mmonth;\n\tif(yearmonth==\"year\"){\n\t\tif(direction==\"previous\") year=year-1;\n\t\telse if(direction==\"next\") year=year+1;\n\t} else if(yearmonth==\"month\"){\n\t\tif(direction==\"previous\"){\n\t\t\tif(month==1){\n\t\t\t\tmonth=12;\n\t\t\t\tyear=year-1;\n\t\t\t} else month=month-1;\n\t\t} else if(direction==\"next\"){\n\t\t\tif(month==12){\n\t\t\t\tmonth=1;\n\t\t\t\tyear=year+1;\n\t\t\t}else month=month+1;\n\t\t}\n\t}\n\tymarr[0] = year;\n\tymarr[1] = month;\n\treturn ymarr;\n}\n\nfunction calendarArray(year, month, startingDay, firstDay, days) {\n\tvar pdays;\n\tvar ymarr;\n\tvar daysNumArray=[0,1,2,3,4,5,6];\n\tvar currDay=0;\n\tvar w=[];\n\tvar nbz=nbZeros(startingDay, firstDay);\n\tvar nbComplWeeks;\n\tvar rem;\n\tvar zrem;\n\trotateArray(startingDay, daysNumArray);\n\tw[0]=[];\n\tfor(var i=0; i < nbz; i++) {\n\t\tymarr = getPrevNextMonthYear(\"previous\", \"month\", year, month);\n\t\tpdays=getDaysInMonth(ymarr[0], ymarr[1]);\n\t\tcalendarArrayCell(w, ymarr[0], ymarr[1], pdays-nbz+i+1, daysNumArray, 0, i)\n\t}\n\tfor(var i=nbz; i < 7; i++) {\n\t\tcurrDay+=1;\n\t\tcalendarArrayCell(w, year, month, currDay, daysNumArray, 0, i)\n\t}\n\tnbComplWeeks =parseInt((days-currDay)/7, 10);\n\tfor(i=0;i<nbComplWeeks;i++) {\n\t\tw[i+1]=[];\n\t\tfor (var j=0;j<7;j++) {\n\t\t\tcurrDay+=1;\n\t\t\tcalendarArrayCell(w, year, month, currDay, daysNumArray, i+1, j)\n\t\t}\n\t}\n\trem=days-currDay;\n\tif(rem>0) {\n\t\tw[nbComplWeeks+1]=[];\n\t\tfor (var i=0;i<rem;i++) {\n\t\t\tcurrDay+=1;\n\t\t\tcalendarArrayCell(w, year, month, currDay, daysNumArray, nbComplWeeks+1, i)\n\t\t}\n\t\tzrem=7-rem;\n\t\tif (zrem>0) {\n\t\t\tcurrDay=0;\n\t\t\tfor (var i=rem;i<7;i++){\n\t\t\t\tcurrDay+=1;\n\t\t\t\tymarr = getPrevNextMonthYear(\"next\", \"month\", year, month);\n\t\t\t\tcalendarArrayCell(w, ymarr[0], ymarr[1], currDay, daysNumArray, nbComplWeeks+1, i)\n\t\t\t}\n\t\t}\n\t}\n\treturn w;\n}\n\n\nfunction calendarArrayCell(calArray, year, month, currDay, daysNumArray, i, j){\n\tcalArray[i][j]=[];\n\tcalArray[i][j][0]=year;\n\tcalArray[i][j][1]=month;\n\tcalArray[i][j][2]=currDay;\n\tcalArray[i][j][3]=daysNumArray[j];\n}\n\nfunction nbZeros(startingDay, firstDay) {\n\tvar nbz = firstDay - startingDay;\n\treturn (nbz >= 0)?nbz:nbz+7;\n}\n\nfunction calendarCells(configTiddlerTitle, cellsArray, scellContent) {\n\tvar l=cellsArray.length;\n\tvar cellContent;\n\tvar cellContentMacro;\n\tvar str=\"\";\n\tvar obj = $tw.wiki.getTiddlerData(configTiddlerTitle,\"erreur\");\n\tif (obj!==\"erreur\") {\n\t\tcellContent = (scellContent===\"\") ? obj[\"cellContent\"] : scellContent;\n\t\tvar contentPreDef = obj[\"cellContentPreDef\"];\n\t\tif (contentPreDef.indexOf(cellContent) !== -1) cellContentMacro = \"calendarCellContent_\"+cellContent;\n\t\telse cellContentMacro = cellContent;\n\t\tfor (var i=0;i<l;i++) {\n\t\t\tstr+=\"<tr>\";\n\t\t\tfor (var j=0;j<7;j++) {\n\t\t\t\tstr+=\"<td class=<<calendarCellCss \"+cellsArray[i][j][0] +\" \";\n\t\t\t\tstr+=cellsArray[i][j][1]+\" \"+cellsArray[i][j][2] + \" \"+cellsArray[i][j][3] + \">>>\";\n\t\t\t\tstr+=\"<<\"+cellContentMacro + \" \" + cellsArray[i][j][0] +\" \";\n\t\t\t\tstr+=cellsArray[i][j][1]+\" \"+cellsArray[i][j][2] + \" \"+cellsArray[i][j][3] + \">>\";\n\t\t\t\tstr+=\"</td>\";\n\t\t\t}\n\t\t\tstr+=\"</tr>\";\n\t\t}\n\t} else return \"Erreur calendarConfig dans calendarCells\";\n\treturn str;\n}\n\n\n\nfunction isLeapYear (Year) {\n\tif (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {\n\t\treturn true;\n\t} else { return false; }\n}\n\nfunction getDaysInMonth(year, month)  {\n\tvar days;\n\tif (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)  days=31;\n\telse if (month==4 || month==6 || month==9 || month==11) days=30;\n\telse if (month==2)  {\n\t\tif (isLeapYear(year)) { days=29; }\n\t\telse { days=28; }\n\t}\n\treturn days;\n}\n\nfunction rotateArray(num, array) {\n\tvar d;\n\tfor (var i = 0;i<num;i++) {\n\t\td=array[0];\n\t\tarray.shift();\n\t\tarray.push(d);\n\t}\n\treturn array;\n}\n\n})();\n",
            "created": "20151016065324532",
            "modified": "20151103114814463",
            "module-type": "macro",
            "tags": "macro",
            "title": "$:/plugins/frd/calendar/calendarjs.js",
            "type": "application/javascript"
        },
        "$:/plugins/frd/calendar/calendarTitle.js": {
            "created": "20151016065401861",
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/calendarTitle.js\ntype: application/javascript\nmodule-type: macro\n\n<<calendarTitle year month style>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"calendarTitle\";\n\nexports.params = [\n\t{ name: \"year\" },\n\t{ name: \"month\" },\n\t{ name: \"style\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function calendarTitle(year, month, style) {\n\tvar s='';\n\tvar obj = this.wiki.getTiddlerData(\"$:/plugins/frd/calendar/calendarConfig\",\"erreur\");\n\tvar monthabr=obj[\"monthabr\"][month-1];\n\tif (style===\"basic\") {\n\t\ts+=monthabr + \" \" + year;\n\t} else {\n\t\tvar tiddler = this.getVariable(\"calendarState\")||this.getVariable(\"currentTiddler\");\n\t\tvar date= new Date();\n\t\tvar yearnow=date.getFullYear();\n\t\tvar monthnow=date.getMonth() +1;\n\t\ts+='<$button class=\"tc-btn-invisible\">'+monthabr +' '+year;\n\t\ts+='<$action-setfield $tiddler=\"'+tiddler+'\" year='+yearnow+'/>';\n\t\ts+='<$action-setfield $tiddler=\"'+tiddler+'\" month='+monthnow+'/>';\n\t\ts+='</$button>';\n\t\t}\n\treturn s;\n};\n\n})();\n",
            "modified": "20151016150834882",
            "module-type": "macro",
            "tags": "macro",
            "title": "$:/plugins/frd/calendar/calendarTitle.js",
            "type": "application/javascript"
        },
        "$:/plugins/frd/calendar/calendarCss": {
            "text": ".tc-sidebar-lists table button\n{\n\tcolor:inherit;\n\tfill:inherit;\n}\n\ntable td.calendar-basic\n{\n\tbackground-color: #EBFCEC;\n\tpadding:0 2px 0 2px;\n\ttext-align:center;\n}\n\ntable td.calendar-holidays1\n{\n\tbackground-color: #FFFFCC;\n}\n\ntable td.calendar-restdays\n{\n\tbackground-color: #F0F0F0;\n}\n\n\ntable td.calendar-holidays2\n{\n\tbackground-color: #CCFFCC;\n}\n\ntable td.calendar-today\n{\n\tbackground-color: #FFCCCC;\n\tbackground-clip:padding-box;\n}\n\ntable td.calendar-datepicker-cell .tc-tiddlylink\n{\n\tcolor:red;\n}\n\n\n.calendar-datepicker table th, .calendar-datepicker table td\n{\n\tpadding:0 4px 0 4px;\n\tfont-size:90%;\n}\n\n.calendar-pop {\n\tbackground:white;\n\tpadding:0 15px;\n\tborder-radius: 3px;\n\tborder: 1px solid #ccc;\n\tmargin:5px 0 0 3px;\n}",
            "created": "20151016065005704",
            "modified": "20151030110445567",
            "tags": "$:/tags/Stylesheet css",
            "title": "$:/plugins/frd/calendar/calendarCss",
            "type": "text/plain"
        },
        "$:/plugins/frd/calendar/calendarConfig": {
            "text": "{\n\t\"startingday\":\"1\",\n\t\"days\":[\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\"months\": [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\"monthabr\": [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\",\"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\"buttons\": \"yes\",\n\t\"buttonsImages\": [\"{{$:/core/images/chevron-left}}\", \"{{$:/core/images/left-arrow}}\", \"{{$:/core/images/right-arrow}}\", \"{{$:/core/images/chevron-right}}\"],\n\t\"cellContentPreDef\": [\"basic\", \"link\", \"linkFormat\", \"linkJournal\"],\n\t\"cellContent\": \"linkFormat\",\n\t\"dateFormat\":\"YYYY-0MM-0DD\",\n\t\"cellCss\": \"standard\",\n\t\"cellCssConfig\":[\n\t\t[\n\t\t\"restdays\", \"calendar-restdays\", \"0\", \"6\"\n\t\t],\n\t\t[\n\t\t\"holidays\", \"calendar-holidays1\", \"2015-10-05\", \"2015-09-26\"\n\t\t],\n\t\t[\n\t\t\"holidays\", \"calendar-holidays2\", \"2015-12-25\", \"2015-10-29\"\n\t\t],\n\t\t[\n\t\t\"today\", \"calendar-today\"\n\t\t],\n\t\t[\n\t\t\"datepicker\", \"calendar-datepicker-cell\"\n\t\t]\n\t]\n}",
            "created": "20151016064932797",
            "modified": "20151025161047999",
            "tags": "calendarConfig",
            "title": "$:/plugins/frd/calendar/calendarConfig",
            "type": "application/json"
        },
        "$:/plugins/frd/calendar/datePicker": {
            "created": "20151030111230684",
            "text": "<span class=\"calendar-datepicker\">\n<$macrocall $name=\"calendar\" year=<<year>> month=<<month>> state=<<state>> startingDay=1/>\n</span>",
            "modified": "20151115191403085",
            "tags": "",
            "title": "$:/plugins/frd/calendar/datePicker"
        },
        "$:/plugins/frd/calendar/datePickerMacro": {
            "created": "20151101190513989",
            "text": "\\define datePickerAux1(field config)\n<$set name=\"datePickerDate\" value={{$(targetTiddler)$!!$field$}}>\n<$macrocall $name=\"datePickerAux2\" field=$field$ config=$config$/>\n</$set>\n\\end\n\n\\define datePickerAux2(field config)\n<$set name=\"year\"  value=<<readFromDateString \"year\" \"$(datePickerDate)$\">>>\n<$set name=\"month\" value=<<readFromDateString \"month\" \"$(datePickerDate)$\">>>\n<$set name=\"state\" value=<<constructState $field$>>>\n<$edit-text tiddler=\"$(targetTiddler)$\" field=\"$field$\" tag=\"input\" default=\"\" focusPopup=<<state>> class=\"tc-popup-handle\"/>\n<$reveal state=<<state>> type=\"popup\" text=\"\" default=\"\" class=\"calendar-pop\">\n<$linkcatcher to=\"$(targetTiddler)$!!$field$\">\n<span>\n{{$:/plugins/frd/calendar/datePicker}}\n</span>\n</$linkcatcher>\n</$reveal>\n</$set></$set></$set>\n\\end\n\n\\define constructState(field)\n$:/state/calendar/datePickerState$(targetTiddler)$$field$\n\\end\n\n\\define datePicker(tiddler:<<currentTiddler>> field:date config)\n<$set name=\"targetTiddler\" value=$tiddler$>\n<$macrocall $name=\"datePickerAux1\" field=$field$ config=$config$/>\n</$set>\n\\end",
            "modified": "20151115201555216",
            "tags": "$:/tags/Macro",
            "title": "$:/plugins/frd/calendar/datePickerMacro"
        },
        "$:/plugins/frd/calendar/readFromDateString.js": {
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/readFromDateString.js\ntype: application/javascript\nmodule-type: macro\n\n<<readFromDateString ymd dateString>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"readFromDateString\";\n\nexports.params = [\n\t{ name: \"ymd\" },\n\t{ name: \"dateString\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function readFromDateString(ymd, dateString) {\n\tvar s=\"\";\n\tvar arr = dateString.split(\"-\");\n\tif (ymd==\"year\") s = arr[0];\n\telse if (ymd==\"month\") s = arr[1];\n\treturn s;\n}\n\n})();",
            "created": "20151024184507261",
            "modified": "20151025090444494",
            "module-type": "macro",
            "tags": "",
            "title": "$:/plugins/frd/calendar/readFromDateString.js",
            "type": "application/javascript"
        },
        "$:/plugins/frd/calendar/splitDate.js": {
            "text": "/*\\\ntitle: $:/plugins/frd/calendar/splitDate.js\ntype: application/javascript\nmodule-type: macro\n\n<<splitDate date>>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n\n*/\n\nexports.name = \"splitDate\";\n\nexports.params = [\n\t{ name: \"date\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function splitDate(date) {\n\treturn date.replace(/-/g, \" \");\n}\n\n})();",
            "created": "20151024184507261",
            "modified": "20151024190512809",
            "module-type": "macro",
            "tags": "",
            "title": "$:/plugins/frd/calendar/splitDate.js",
            "type": "application/javascript"
        }
    }
}
\define calendarCellContentAux(year day mmonth dday)
   [[$day$|$year$-$mmonth$-$dday$]]
\end

\define calendarCellContent_link(year month day numDay)
  <$set name="m" value=<<zeropad $month$ 2>>>
  <$set name="d" value=<<zeropad $day$ 2>>>
   <$macrocall $name="calendarCellContentAux" year=$year$ day=$day$ mmonth=<<m>> dday=<<d>>/>
</$set></$set>
\end

\define calendarCellContent_basic(year month day numDay)
$day$
\end

\define calendarCellContent_linkFormat(year month day numDay,)
  <$set name="format" value=<<calendarConfigElement "dateFormat">>>
   <$macrocall $name="calendarCellContent_linkFormatAux" year=$year$ month=$month$ day=$day$/>
</$set>
\end

\define calendarCellContent_linkFormatAux(year month day)
<$set name="linktarget" value=<<formatDate $year$ $month$ $day$ "$(format)$">>>
<$link to=<<linktarget>>>$day$</$link>
\end

\define calendarCellContent(year month day numDay)
  <$set name="m" value=<<zeropad $month$ 2>>>
  <$set name="d" value=<<zeropad $day$ 2>>>
   <$macrocall $name="calendarCellContentAux" year=$year$ day=$day$ mmonth=<<m>> dday=<<d>>/>
</$set></$set>
\end
{
	"startingday":"1",
	"days":["zo", "ma", "di", "wo", "do", "vr", "za"],
	"months": ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "october", "november", "december"],
	"monthabr": ["januari", "februari", "maart", "april", "mei","juni", "juli", "augustus", "september", "oktober", "november", "december"],
	"buttons": "yes",
	"buttonsImages": ["{{$:/core/images/chevron-left}}", "{{$:/core/images/left-arrow}}", "{{$:/core/images/right-arrow}}", "{{$:/core/images/chevron-right}}"],
	"cellContentPreDef": ["basic", "link", "linkFormat", "linkJournal"],
	"cellContent": "linkFormat",
	"dateFormat":"DD MMM",
	"cellCss": "standard",
	"cellCssConfig":[
		[
		"restdays", "calendar-restdays", "0", "6"
		],
		[
		"holidays", "calendar-holidays1", "2015-10-05", "2015-09-26"
		],
		[
		"holidays", "calendar-holidays2", "2015-12-25", "2015-10-29"
		],
		[
		"today", "calendar-today"
		],
		[
		"datepicker", "calendar-datepicker-cell"
		]
	]
}
.tc-sidebar-lists table button
{
	color:inherit;
	fill:inherit;
}

table td.calendar-basic
{
	background-color: #282a36;
	padding:0 2px 0 2px;
	text-align:center;
}

table td.calendar-holidays1
{
	background-color: #bd93fg;
}

table td.calendar-restdays
{
	background-color: #bd93fg;
}


table td.calendar-holidays2
{
	background-color: #bd93fg;
}

table td.calendar-today
{
	background-color: blue;
	background-clip:padding-box;
}

table td.calendar-datepicker-cell .tc-tiddlylink
{
	color:red;
}


.calendar-datepicker table th, .calendar-datepicker table td
{
	padding:0 4px 0 4px;
	font-size:90%;
}

.calendar-pop {
	background:white;
	padding:0 15px;
	border-radius: 3px;
	border: 1px solid #ccc;
	margin:5px 0 0 3px;
}
\define calendar(state config startingDay year month buttons cellContent)
<$set name="calendarState" value="$state$">
<$set name="calendarConfig" value="$config$">

|<$macrocall $name="calendarAux" startingDay ="$startingDay$" year="$year$" month="$month$" buttons="$buttons$" cellContent="$cellContent$"/>|^<br><br><br><p style="line-height:2.3"><$button><$action-createtiddler $basetitle=<<now "DD MMM">> tags=<<now "#agenda MMM">> text=<<now "<tblauw>DDD YYYY, °</tblauw>">> tocnr=<<now "0MM0DD">> /><$action-navigate $to=<<now "DD MMM">>/>Vandaag</$button><br><$button><$action-createtiddler $basetitle=<<now "x MMM">> tags=<<now "#agenda MMM">> text=<<now "<tblauw>YYYY, °</tblauw>">> tocnr=<<now "0MM">> /><$action-navigate $to=<<now "x MMM">>/><<now "MMM">></$button><br><$button><$action-createtiddler $basetitle=<<now "DDD DD MMM YYYY">> tags=<<now "#dagboek YYYY">> tocnr=<<now "0MM0DD">> /><$action-navigate $to=<<now "DDD DD MMM YYYY">>/>Dagboek</$button></p>|

</$set>
</$set>
\end

\define calendarAux(startingDay year month buttons cellContent)
<$set name="calendarYear" value={{$(calendarState)$!!year}}>
<$set name="calendarMonth" value={{$(calendarState)$!!month}}>
<$macrocall $name="calendarjs" fieldyear=<<calendarYear>> fieldmonth=<<calendarMonth>> startingDay="$startingDay$" year="$year$" month="$month$" buttons="$buttons$" cellContent="$cellContent$"/>
</$set></$set>
\end
<span class="calendar-datepicker">
<$macrocall $name="calendar" year=<<year>> month=<<month>> state=<<state>> startingDay=1/>
</span>
{
    "tiddlers": {
        "$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_count": {
            "text": "<$link to=<<currentTiddler>>>\n  <$transclude field=\"caption\"><$view field=\"title\"/></$transclude> <<toc_counting>>\n</$link>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_count",
            "tags": "$:/plugins/HCHaase/toc_counting $:/tags/bimlas/locator/field-templates $:/tags/bimlas/locator/context-item-templates",
            "modifier": "HC Haase",
            "modified": "20200309121557750",
            "creator": "HC Haase",
            "created": "20200214102303417",
            "caption": "Link (with counter)"
        },
        "$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_org": {
            "text": "<$link to=<<currentTiddler>>>\n  <$transclude field=\"caption\"><$view field=\"title\"/></$transclude>\n</$link>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_org",
            "tags": "$:/plugins/HCHaase/toc_counting",
            "modifier": "HC Haase",
            "modified": "20200217074813681",
            "creator": "HC Haase",
            "created": "20200214111229175",
            "caption": "Link"
        },
        "$:/plugins/HCHaase/toc_counting/core/macros/list": {
            "created": "20200309130857070",
            "creator": "HC Haase",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link><<toc_counting>>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link><<toc_counting>>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\">\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link><<toc_counting>>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\">\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n",
            "title": "$:/plugins/HCHaase/toc_counting/core/macros/list",
            "tags": "$:/tags/Macro",
            "modifier": "HC Haase",
            "modified": "20200309151438339"
        },
        "$:/plugins/HCHaase/toc_counting/license": {
            "text": "Copyright 2020 Hans Christian Haase\n\nhttps://opensource.org/licenses/BSD-3-Clause\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
            "title": "$:/plugins/HCHaase/toc_counting/license",
            "tags": "plugins count-stuff $:/tags/Macro",
            "modifier": "HC Haase",
            "modified": "20200218144230423",
            "creator": "HC Haase",
            "created": "20200217123344397"
        },
        "$:/plugins/HCHaase/toc_counting/more/tag": {
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/><<toc_counting>>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n",
            "title": "$:/plugins/HCHaase/toc_counting/more/tag",
            "tags": "count-stuff",
            "modifier": "HC Haase",
            "modified": "20200309124130572",
            "list-after": "Recent",
            "description": "placeholder for code including counting for the tags sidebar tab",
            "creator": "HC Haase",
            "created": "20200213124045173",
            "caption": "{{$:/language/SideBar/Tags/Caption}}"
        },
        "$:/plugins/HCHaase/toc_counting/more/tag_org": {
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n",
            "title": "$:/plugins/HCHaase/toc_counting/more/tag_org",
            "tags": "count-stuff",
            "modifier": "HC Haase",
            "modified": "20200225101821161",
            "list-after": "Recent",
            "description": "placeholder for original code  for the tags sidebar tab. to insert if toggle off counting",
            "creator": "HC Haase",
            "created": "20200214110918457",
            "caption": "{{$:/language/SideBar/Tags/Caption}}"
        },
        "$:/plugins/HCHaase/toc_counting/tocP/macros": {
            "text": "\\define tocP-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <span title={{!!tooltip}}><$view field=\"title\"/> <small class=\"tc-menu-list-count\"><$list filter='[parent<currentTiddler>]limit[1]]'  variable=null>(<$count filter=\"[parent<currentTiddler>]\"/>)</$list></small>\n  </$transclude>\n</$set>\n\\end\n\n\\define tocP-body(tag,sort:\"\",itemClassFilter,exclude,path,field:\"parent\")\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[has[$field$]$field$[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n    <$vars item=<<currentTiddler>> path=\"\"\"$path$/$tag$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" field=\"\"\"$field$\"\"\">\n      <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n        <li class=<<toc-item-class>>>\n          <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link tooltip={{!!tooltip}}><$view field='caption'><$view field='title'/></$view></$link>\">\n            <<tocP-caption>>\n          </$list>\n          <$transclude tiddler='$:/config/wikilabs/tocP/newChild'></$transclude>\n          <$macrocall $name=\"tocP-body\" tag=<<item>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> field=<<field>> />\n        </li> \n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define tocP(tag,sort:\"\",itemClassFilter:\" \",field:\"parent\")\n<<tocP-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\" field:\"\"\"$field$\"\"\">>\n\\end\n\n\\define tocP-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path,field:\"parent\")\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n    <$link>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<tocP-caption>>\n    </$link>\n    <$transclude tiddler='$:/config/wikilabs/tocP/newChild'></$transclude>\n    <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"tocP-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"  field=\"\"\"$field$\"\"\"/>\n    </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define tocP-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path,field:\"parent\")\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\" tooltip={{!!tooltip}}>\n          {{$:/core/images/right-arrow}}\n          <<tocP-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\" tooltip={{!!tooltip}}>\n          {{$:/core/images/down-arrow}}\n          <<tocP-caption>>\n        </$button>\n      </$reveal> \n      <$transclude tiddler='$:/config/wikilabs/tocP/newChild'></$transclude>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"tocP-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\" field=\"\"\"$field$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define tocP-expandable-empty-message()\n<<tocP-linked-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\" field:\"\"\"$(field)$\"\"\">>\n\\end\n\n\\define tocP-expandable(tag,sort:\"\",itemClassFilter:\" \",exclude,path,field:\"parent\")\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\"  field=\"\"\"$field$\"\"\">\n  <ol class=\"tc-toc toc-expandable\">\n    <$list filter=\"\"\"[has[$field$]$field$[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<tocP-expandable-empty-message>> >\n        <$macrocall $name=\"tocP-unlinked-expandable-body\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> field=<<field>> />\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define tocP-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path,field:\"parent\")\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$link>\n          <$list filter=\"\"\"[has[$field$]$field$<currentTiddler>limit[1]]\"\"\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<tocP-caption>> \n      </$link>\n      <$transclude tiddler='$:/config/wikilabs/tocP/newChild'></$transclude>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"tocP-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"  field=\"\"\"$field$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define tocP-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path,field:\"parent\")\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"\"\"[has[$field$]$field$<currentTiddler>limit[1]]\"\"\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\" tooltip={{!!tooltip}}>\n            {{$:/core/images/right-arrow}}\n            <<tocP-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\" tooltip={{!!tooltip}}>\n            {{$:/core/images/down-arrow}}\n            <<tocP-caption>>\n          </$button> \n        </$reveal> \n      </$list>\n      <$transclude tiddler='$:/config/wikilabs/tocP/newChild'></$transclude>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"\"\"tocP-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"  field=\"\"\"$field$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define tocP-selective-expandable-empty-message()\n<<tocP-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\" field:\"\"\"$(field)$\"\"\">>\n\\end\n\n\\define tocP-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path,field:\"parent\")\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\" field=\"\"\"$field$\"\"\">\n  <ol class=\"tc-toc toc-selective-expandable\">\n    <$list filter=\"\"\"[has[$field$]$field$[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<tocP-selective-expandable-empty-message>> >\n        <$macrocall $name=tocP-unlinked-selective-expandable-body tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> field=<<field>> >\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define tocP-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define tocP-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=\"$selectedTiddler$\">\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"tocP-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=\"$template$\">\n          <h1><<tocP-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define tocP-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n  <$macrocall $name=\"tocP-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n",
            "title": "$:/plugins/HCHaase/toc_counting/tocP/macros",
            "tags": "plugins count-stuff",
            "modifier": "HC Haase",
            "modified": "20200309124446220",
            "description": "code from p Marios tocp plugin with counting inserted. will be given tag tags/macro to replace the original toc macro",
            "creator": "HC Haase",
            "created": "20200217120703732"
        },
        "$:/plugins/HCHaase/toc_counting/button/toggle-counting-level": {
            "created": "20200310153832712",
            "creator": "HC Haase",
            "text": "<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" text=\"off\"><$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" setTo=\"1\" tooltip=\"TOC: count first level\" class=<<tv-config-toolbar-class>>>{{$:/core/images/down-arrow}}</$button></$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" text=\"1\"><$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" setTo=\"deep\" tooltip=\"TOC: count all levels\" class=<<tv-config-toolbar-class>>>{{$:/core/images/right-arrow}}</$button></$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" text=\"deep\"> <$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" setTo=\"off\" tooltip=\"TOC: turn off\" class=<<tv-config-toolbar-class>>>{{$:/core/images/left-arrow}}</$button> </$reveal>  \n",
            "title": "$:/plugins/HCHaase/toc_counting/button/toggle-counting-level",
            "tags": "$:/tags/PageControls",
            "modifier": "HC Haase",
            "modified": "20200311075508619",
            "description": "Toggle counting in TOCs (1. leve/all levels/off)",
            "caption": "{{$:/core/images/right-arrow}} TOC_counting"
        },
        "$:/state/plugins/HCHaase/toc_counting/macro/toc_counting": {
            "created": "20200309145412325",
            "creator": "HC Haase",
            "text": "tag/link",
            "title": "$:/state/plugins/HCHaase/toc_counting/macro/toc_counting",
            "modifier": "HC Haase",
            "modified": "20200311110035694",
            "level": "1",
            "description": "state for the the count type of the toc_counting macro. level field to choose between clasin and deep level search with kin filter"
        },
        "$:/plugins/HCHaase/toc_counting/readme": {
            "created": "20190611082221870",
            "creator": "HC Haase",
            "text": "The //TOC counting// plugin adds a count of child tiddlers to the right of each entry in the TOC(s) and list. No count will be shown if there isn't any child tiddlers (e.g. no 0).\n\nChange state by pressing the number\n\n# show tags (tag)\n# show tags and backlinkslinkls (tag/__links__)\n# show backlinks (__links__)\n\n\nLinks are __underlined__.\n\n(Note: if you are filtering by e.g. links[] (or using the list-links macro), you might want to change the view to links and not tags) \n\nIf you want to use the plugin in deep mode with counting of all sub-level tiddlers, you also need to install the kin-filter by Bimlas.\n\n* Plugin homepage: https://hchaase.github.io/HC-Plugins/\n* Plugin dependencies (only for deep mode): The [[kin-filter|https://bimlas.gitlab.io/tw5-kin-filter/]]\n\nThe plugin can be toggled on or of in the settings or below.\n\n{{$:/plugins/HCHaase/toc_counting/settings}}\n\n\nSee [[changelog and roadmap here|$:/plugins/HCHaase/toc_counting/changelog]].",
            "title": "$:/plugins/HCHaase/toc_counting/readme",
            "modifier": "HC Haase",
            "modified": "20200311084928641"
        },
        "$:/plugins/HCHaase/toc_counting/settings": {
            "created": "20190611081555857",
            "creator": "HC Haase",
            "text": "! [[Counting in Table of Contents|$:/plugins/HCHaase/toc_counting/settings]] \n\nChoose between classic mode, counting tags for the// first level//, deep mode with counting, tags in //all levels//  (requires the kin-filter plugin) or turn off.\nToggle below or press the button <<icon {{$:/plugins/HCHaase/toc_counting/button/toggle-counting-level}}>> in the page toolbar.\n\n*<$radio tiddler=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" field=\"level\" value=\"1\"> Classic mode (1 level)</$radio>\n*<$radio tiddler=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" field=\"level\" value=\"deep\"> Deep mode (all levels)</$radio> (NB: will slowdown the wiki)\n*<$radio tiddler=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" field=\"level\" value=\"off\"> Turn off</$radio>\n\n!! Enable \n*<$checkbox tiddler=\"$:/plugins/HCHaase/toc_counting\" tag=\"$:/tags/Macro\" default=\"$:/tags/Macro\"> <$link to=\"$:/plugins/HCHaase/toc_counting/settings/readme\">Enable counting of sub-tiddlers in TOC</$link> </$checkbox>\n*<$checkbox tiddler=\"$:/core/ui/MoreSideBar/Tags\" field=\"text\" checked={{$:/plugins/HCHaase/toc_counting/more/tag!!text}} unchecked={{$:/plugins/HCHaase/toc_counting/more/tag_org!!text}}default={{!!tags_count}} > <$link to=\"$:/plugins/HCHaase/toc_counting/more/tag\">Enable counting of sub-tiddlers in More/Tags</$link> </$checkbox>  \n*<$checkbox tiddler=\"$:/plugins/HCHaase/toc_counting/core/macros/list\" tag=\"$:/tags/Macro\" default=\"$:/tags/Macro\"> <$link to=\"$:/plugins/HCHaase/toc_counting/core/macros/list\">Enable counting of sub-tiddlers in list-links and list link-draggable</$link> </$checkbox>\n\n!! Integration with other plugins\nHere you can toggle counting in other TOC making plugins. If this interfere undesirably with these plugins (e.g. with future updates), you can leave them unchecked.\n\n*<$checkbox  tiddler=\"$:/plugins/bimlas/locator/field-templates/link\" field=\"text\" checked={{$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_count!!text}} unchecked={{$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_org!!text}}>\n<$link to=\"$:/plugins/bimlas/locator/field-templates/link\">Enable counting of sub-tiddlers in Locator TOC</$link> </$checkbox>\n\nIf you have the [[locator plugin|https://bimlas.gitlab.io/tw5-locator/#]] form bimlas, you can toggle the counting above. OR you can use the locator/context setting, in the locator plugin to toggle it. Press the context menu (cog wheel) and change the `Template of context items:` to LINKS (with counter).\n\n*<$checkbox tiddler=\"$:/plugins/HCHaase/toc_counting/tocP/macros\" tag=\"$:/tags/Macro\" default=\"\"> <$link to=\"$:/plugins/HCHaase/toc_counting/tocP/readme\">Enable (partial) counting of sub-tiddlers in tocP</$link> </$checkbox>\n\nNB: The support for the [[tocP plugin|https://wikilabs.github.io/editions/tocP/]] is only partial. It will only work when the plugin is used with the `parent` field and not when used with a custom field.\n\n",
            "title": "$:/plugins/HCHaase/toc_counting/settings",
            "tags": "$:/tags/ControlPanel/Settings",
            "modifier": "HC Haase",
            "modified": "20200311101838852"
        },
        "$:/plugins/HCHaase/toc_counting/toc": {
            "created": "20180911090306734",
            "creator": "HC Haase",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$\"\"\">\n    <$vars item=<<currentTiddler>> path=\"\"\"$path$/$tag$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\">\n      <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n        <li class=<<toc-item-class>>>\n          <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n            <<toc-caption>><<toc_counting>>\n          </$list>\n          <$macrocall $name=\"toc-body\" tag=<<item>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>>/>\n        </li>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\" \")\n<<toc-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n    <$link>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>><<toc_counting>>\n    </$link>\n    <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n    </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>><<toc_counting>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>><<toc_counting>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-expandable-empty-message()\n<<toc-linked-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n        <$macrocall $name=\"toc-unlinked-expandable-body\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\" >\n    <li class=<<toc-item-class>>>\n      <$link>\n          <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>><<toc_counting>>\n      </$link>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>><<toc_counting>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>><<toc_counting>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<<toc-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-selective-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n        <$macrocall $name=toc-unlinked-selective-expandable-body tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> >\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=\"$selectedTiddler$\">\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=\"$template$\">\n          <h1><<toc-caption>><<toc_counting>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n",
            "title": "$:/plugins/HCHaase/toc_counting/toc",
            "tags": "$:/tags/Macro",
            "modifier": "HC Haase",
            "modified": "20200311082533637",
            "description": "code from toc macro with counting inserted. will be given tag tags/macro to replace the original toc macro"
        },
        "$:/HCHaase/macros/icon": {
            "text": "\\define icon(icon navigate tooltip) \n<$button to=\"$navigate$\" tooltip=\"$tooltip$\"class=\"tc-btn-invisible\"><<__icon__>></$button>\n\\end\n\n\\define _icon(icon) \n<button class=\"tc-btn-invisible\"disabled><<__icon__>></button>\n\\end\n\n\n* ''Version'': 1.0.0\n* ''Date'': 2020/02/27\n* ''Creator'': HC Haase. Inspired by [[Bimlas|https://bimlas.gitlab.io/tw5-locator/#%24%3A%2Fbimlas%2Fmacros%2Ficon]].\n\n!! Function\nThis macro make transcluded icons follow the line height of the text with the option of a link and a tooltip. \nThis makes prettier references to buttons (like this <<_icon {{$:/core/images/new-button}} \"link\" \"tooltip text\">> instead of  this  {{$:/core/images/new-button}}) in documentation text.\n\nThere is a'' simple macro'' without a button and an ''extended macro'' with a button.\n\n!! Use\n\n;Syntax, simple macro  (note the `_`)\n:`<<_icon <transclusion> >>`<$button message=\"tm-copy-to-clipboard\" param=\"<<_icon <transclusion> >>\"}>Copy</$button>\n\n;Syntax, extended macro\n:`<<icon <transclusion> <link> \"<tooltip text>\" >>`<$button message=\"tm-copy-to-clipboard\" param=\"<<icon <transclusion> >>\"}>Copy</$button>\n\n|! Attribute|!Option|!Description|\n|transclusion|required|a transclusion of an icon|\n|link|optional|name of tiddler to link to (omit with `\"\"`)|\n|tooltip text|optional|text of tooltip|\n\n\n;Example\n:`<<icon {{$:/core/images/new-button}} \"link\" \"tooltip text\">>` \n:will produce <<icon {{$:/core/images/new-button}} \"link\" \"tooltip text\">> that links to \"link\".\nNB: if you want no link, but at tooltip, use `\"\"` for a empty link.\n\n!! Code\n\n```\n\\define icon(icon navigate tooltip) \n<$button to=\"$navigate$\" tooltip=\"$tooltip$\"class=\"tc-btn-invisible\"><<__icon__>></$button>\n\\end\n\n\\define _icon(icon) \n<button class=\"tc-btn-invisible\"disabled><<__icon__>></button>\n\\end\n```",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/HCHaase/macros/icon",
            "tags": "Macros plugins TW $:/tags/Macro",
            "revision": "0",
            "modifier": "HC Haase",
            "modified": "20200309121756465",
            "creator": "HC Haase",
            "created": "20200210162320311",
            "bag": "default"
        },
        "$:/plugins/HCHaase/toc_counting/macro/toc_counting": {
            "created": "20200309120858675",
            "creator": "HC Haase",
            "text": "\\define toc_counting()\n\n<!-- clasic 1. level search in tags -->\n\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" text=\"1\">\n<!-- show tag count if any-->\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" text=\"tag\">\n<$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" setTo=\"tag/link\" class=\"tc-btn-invisible\">\n<small class=\"tc-menu-list-count\"><$list filter='[all[tiddlers]tag<currentTiddler>limit[1]]'  variable=null> (<$count filter=\"[all[current]tagging[]]\"/>)</$list></small>\n</$button>\n</$reveal> \n\n<!-- show tag/link count if any-->\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" text=\"tag/link\">\n<$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" setTo=\"link\" class=\"tc-btn-invisible\">\n<small class=\"tc-menu-list-count\"><$list filter='[all[tiddlers]tag<currentTiddler>] [all[current]backlinks[]] +[limit[1]]'  variable=null> (<$count filter=\"[all[current]tagging[]]\"/>/__<$count filter='[all[current]backlinks[]]'/>__)</$list></small>\n</$button>\n</$reveal> \n\n<!-- show backlink count if any-->\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" text=\"link\">\n<$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" setTo=\"tag\" class=\"tc-btn-invisible\">\n<small class=\"tc-menu-list-count\"><$list filter='[all[current]backlinks[]limit[1]]'  variable=null> (__<$count filter='[all[current]backlinks[]]'/>__)</$list></small>\n</$button>\n</$reveal>\n</$reveal> \n\n\n<!-- deep level search in tags  -->\n\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting!!level\" text=\"deep\">\n<!-- show tag count if any-->\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" text=\"tag\">\n<$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" setTo=\"tag/link\" class=\"tc-btn-invisible\">\n<small class=\"tc-menu-list-count\"><$list filter='[all[tiddlers]tag<currentTiddler>limit[1]]'  variable=null> (<$count filter=\"[kin::to<currentTiddler>!<currentTiddler>]\"/>)</$list></small>\n</$button>\n</$reveal> \n\n<!-- show tag/link count if any-->\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" text=\"tag/link\">\n<$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" setTo=\"link\" class=\"tc-btn-invisible\">\n<small class=\"tc-menu-list-count\"><$list filter='[all[tiddlers]tag<currentTiddler>] [all[current]backlinks[]] +[limit[1]]'  variable=null> (<$count filter=\"[kin::to<currentTiddler>!<currentTiddler>]\"/>/__<$count filter='[all[current]backlinks[]]'/>__)</$list></small>\n</$button>\n</$reveal> \n\n<!-- show backlink count if any-->\n<$reveal type=\"match\" state=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" text=\"link\">\n<$button set=\"$:/state/plugins/HCHaase/toc_counting/macro/toc_counting\" setTo=\"tag\" class=\"tc-btn-invisible\">\n<small class=\"tc-menu-list-count\"><$list filter='[all[current]backlinks[]limit[1]]'  variable=null> (__<$count filter='[all[current]backlinks[]]'/>__)</$list></small>\n</$button>\n</$reveal> \n</$reveal> \n\n\\end\n\n\n!!Function\nused in the TOC_counting plugin.\n\nuse the toc counint plugin in the different TOC's and lists to put counting at the end of entries.\n\nChange state by pressing the number\n\n# show tags (tag)\n# show tags and __backlinkslinkls__ (tag/__links__) (slower)\n# show __backlinks__ (__links__)\n\nLinks are __underlined__.\n\nswithc between one level counting, and all sub-level counting (with kin filter) (very slow) in the [[settings|$:/plugins/HCHaase/toc_counting/settings]].\n\n!!Use \n\nPut in the macros for the lists you want to add the counter to.\n\n;Syntax\n:`<<toc_counting>>` <$button message=\"tm-copy-to-clipboard\" param=\"<<toc_counting>>\"}>Copy</$button>\n\n\n",
            "title": "$:/plugins/HCHaase/toc_counting/macro/toc_counting",
            "tags": "$:/tags/Macro",
            "state": "tag/link",
            "modifier": "HC Haase",
            "modified": "20200311110008835",
            "description": "code from toc macro with counting inserted. will be given tag tags/macro to replace the original toc macro"
        },
        "$:/plugins/HCHaase/toc_counting/changelog": {
            "created": "20200214111942791",
            "creator": "HC Haase",
            "text": "I'm trying to follow the rules of [[Semantic Versioning|https://semver.org/]].\n\n2.2.1\n\n* [fix] counting of zeros in deep mode and tag/link view (corrected filter)\n\n2.2.0\n\n* [new] added counting for all sub-levels of tags (kin- filter). WARNING: this is very slow.\n* [new] added button in page toolbar with 3 modes. 1level count/all level count/turn off\n* [new] added count of links or tag/links (and tag). toggle by pressing the number (3 views)\n*[new] added support for list-links, list-links-draggable and list-tag-draggable\n*[new] moved code to a [[macro|$:/plugins/HCHaase/macro/toc_counting]] that is used in the plugin, and can be used with the syntax `<<toc_counting>>` (not used in tocp)\n* [fix] removed counting of 0 zero in the locator and tocp plugins\n*[fix] removed the double \"tags\" tab form the sidebar. $:/plugins/HCHaase/toc_counting/more/tag_org still had sidebar tag. \n\n2.1.0\n\n* [fix] removed `$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_org` from templates in the locator plugin (removed tag)\n* [documentation] clarity: change caption of `$:/plugins/HCHaase/toc_counting/bimlas/locator/field-templates/link_count ` to` Link (with counter)`\n* [documentation] clarity: added description field to tiddlers, describing there function\n* [documentation] added reference to the locator plugin settings\n* [new] added count for P Marios[[ tocP|https://wikilabs.github.io/editions/tocP/]] plugin. It only works when the `parent` field is used but not with a custom field  (I don't know how to do this).\n\n2.0.0\n\n* [fix] more sidebar/tags had old and new version. now toggle between two\n* [new] toggle the more sidebar/tags count/no.count\n* [new] added count for bimlas locator plugin\n* [new] added toggle count/no.count for bimlas locator plugin\n\n1.0.0\n\n  * First public version\n  * toggle count/no.count for main toc macro\n  * add a more sidebar/tags with counts\n\n!!! Roadmap\n When I have time \n\n# ~~make the toggle 1./all levels button more pretty~~\n# speed up performance somehow.\n#~~I would like to expand this to lists as well.~~\n# ~~I would also like to add an extra count of sub-sub-tiddlers~~",
            "title": "$:/plugins/HCHaase/toc_counting/changelog",
            "tags": "",
            "modifier": "HC Haase",
            "modified": "20200311110312148"
        }
    }
}
{
    "tiddlers": {
        "$:/.tb/macros/calc": {
            "created": "20150126131341956",
            "creator": "Tobias Beer",
            "modified": "20150211234300814",
            "modifier": "inmysocks",
            "module-type": "macro",
            "summary": "allows simple calculations based on tiddler fields",
            "tags": "[[Icon Menus]]",
            "title": "$:/.tb/macros/calc",
            "type": "application/javascript",
            "text": "/*\\\ntitle: $:/.tb/macros/calc.js\ntype: application/javascript\nmodule-type: macro\n\nComputes a (Field) value +,-,*,/ a provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"calc\";\n\nexports.params = [\n\t{name: \"value\"},\n\t{name: \"operation\"},\n\t{name: \"until\"},\n\t{name: \"beyond\"},\n\t{name: \"decimals\"},\n\t{name: \"tiddler\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(value, operation, until, beyond, decimals, tiddler) {\n\tif(!value) {\n\t\treturn;\n\t}\n\tif(\"\" == operation){\n\t\toperation = \"0\";\n\t}\n\n\tvar \n\t\tcurr,dec,op,r,result,val,\n\t\tops = [\"+\",\"-\",\"*\",\"/\"];\n\n\tcurr = parseFloat(\n\t\t0 > value.indexOf('!!') ?\n\t\tvalue :\n\t\tthis.wiki.getTextReference(value, \"NaN\", tiddler || this.getVariable(\"currentTiddler\"))\n\t);\n\n\tuntil = parseFloat(until);\n\tdecimals = parseInt(decimals);\n\n\top = operation.charAt(0);\n\tval = parseFloat(0 > ops.indexOf(op) ? operation : operation.substr(1));\n\top = 0 > ops.indexOf(op) ? \"+\" : op;\n\n\tif(isNaN(curr)) {\n\t\tresult = \"NaN\";\n\t} else {\n\t\tswitch (op){\n\t\t\tcase \"-\": result = curr - val; break;\n\t\t\tcase \"*\": result = curr * val; break;\n\t\t\tcase \"/\": result = curr / val; break;\n\t\t\tcase \"+\":\n\t\t\tdefault: result = curr + val;\t\t\n\t\t}\n\t\tif(!isNaN(until)) {\n\t\t\tif (!(\n\t\t\t\t\"+\" == op || \"*\" == op ?\n\t\t\t\tresult <= until :\n\t\t\t\tresult >= until\n\t\t\t)) {\n\t\t\t\tif(\"true\" == beyond) {\n\t\t\t\t\tresult = true;\n\t\t\t\t} else {\n\t\t\t\t\tresult = until;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(beyond && result !== true) {\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif(!isNaN(result)){\n\t\tr = result.toString();\n\t\tdec = r.indexOf('.');\n\t\tif(dec > -1){\n\t\t\tdec = r.substr(dec).length;\n\t\t\tif(\n\t\t\t\t!isNaN(decimals) && dec > decimals ||\n\t\t\t\tisNaN(decimals) && dec > 2\n\t\t\t){\n\t\t\t\tresult = result.toFixed(isNaN(decimals) ? 2 : decimals);\n\t\t\t}\t\t\t\n\t\t}\n\t}\n\treturn result;\n};\n\n})();\n"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Bar Basic Style": {
            "caption": "Bottom Bar Basic Style",
            "created": "20150218055430633",
            "creator": "inmysocks",
            "modified": "20150218062317869",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] [[Bottom Bar Style]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Bar Basic Style",
            "text": "html .tc-iconmenubottombar {\n     display:block;\n     width:100%;\n     position:fixed;\n     text-align:center;\n     line-width:100%;\n     left:0%;\n     bottom: 0px;\n     background-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_background_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_text_size}};\n     border-top-style:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_border}};\n     border-top-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_border_color}};\n     height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n     overflow: hidden;\n     z-index: 70;\n} "
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Bar Pop Out on Hover Style": {
            "caption": "Bottom Bar Pop Out on Hover Style",
            "created": "20150218070608761",
            "creator": "inmysocks",
            "modified": "20150218072609780",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] [[Bottom Bar Style]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Bar Pop Out on Hover Style",
            "text": "html .tc-iconmenubottombar {\n     display:block;\n     width:100%;\n     position:fixed;\n     text-align:center;\n     line-width:100%;\n     left:0%;\n     bottom:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_hidden_size}};\n     background-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_background_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_text_size}};\n     border-top-style:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_border}};\n     border-top-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_border_color}};\n     height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n} \n\nhtml .tc-iconmenubottombar:hover {\n     display:block;\n     width:100%;\n     position:fixed;\n     text-align:center;\n     line-width:100%;\n     left:0%;\n     bottom:0px;\n     background-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_background_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_text_size}};\n     border-top-style:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_border}};\n     border-top-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_border_color}};\n     height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n} "
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Bar Settings": {
            "caption": "Bottom Bar Settings",
            "created": "20150218062005015",
            "creator": "inmysocks",
            "modified": "20150218062133982",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Bar Settings",
            "text": "Bottom Bar Height: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_height'/><br>\nAmount of Bottom Bar Hidden: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_hidden_size'/> (Used for the pop out on hover style, this should be negative and Bottom Bar Height+Amount Hidden>0)<br>\nBottom Bar Background Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_background_color'/><br>\nShow Bottom Bar Border: <$checkbox tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_border' checked=solid unchecked=none/><br>\nBottom Bar Border Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_border_color'/><br>\nBottom Bar Text Size: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_text_size'/>"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Left Menu Basic Style": {
            "caption": "Bottom Left Menu Basic Style",
            "created": "20150218060908174",
            "creator": "inmysocks",
            "modified": "20150218072638363",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] [[Bottom Left Menu Style]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Left Menu Basic Style",
            "text": "html .tc-bottomleftmenu {\n     display: block;\n     padding: 0px 0px 0px 0px;\n     position: absolute;\n     left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_left_menu_left_offset}};\n     bottom: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_left_menu_vertical_offset}};\n     z-index: 199;\n     border-top-style: none;\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_left_menu_font_size}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_left_menu_text_color}};\n     height: inherit;\n     overflow: inherit;\n     text-align: left;\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Left Menu Settings": {
            "caption": "Bottom Left Menu Settings",
            "created": "20150218063423349",
            "creator": "inmysocks",
            "modified": "20150218074017097",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Left Menu Settings",
            "text": "Vertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_left_menu_vertical_offset'/><br>\nLeft Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_left_menu_left_offset'/><br>\nFont Size <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_left_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_left_menu_text_color'/> \n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]nsort[bottom_left_menu_order]][plugintiddlers[]tag[Menu Icon]nsort[bottom_left_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/BottomLeftMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!bottom_left_menu_order\" setTo=<<calc !!bottom_left_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!bottom_left_menu_order\" setTo=<<calc !!bottom_left_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='bottom_left_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Middle Menu Basic Style": {
            "caption": "Bottom Middle Menu Basic Style",
            "created": "20150218064331010",
            "creator": "inmysocks",
            "modified": "20150218065212654",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] [[Bottom Middle Menu Style]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Middle Menu Basic Style",
            "text": "html .tc-bottomcentermenu {\n     width: 100%;\n     text-align: center;\n     display: block;\n     padding: 0px 0px 0px 0px;\n     position: absolute;\n     bottom: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_middle_menu_vertical_offset}};\n     z-index: 99;\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_middle_menu_font_size}};\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_middle_menu_text_color}};\n     line-height: inherit;\n     height: inherit;\n     overflow: inherit;\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Middle Menu Settings": {
            "caption": "Bottom Middle Menu Settings",
            "created": "20150218064443583",
            "creator": "inmysocks",
            "modified": "20150218065448341",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Middle Menu Settings",
            "text": "Vertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_middle_menu_vertical_offset'/><br>\nFont Size: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_middle_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_middle_menu_text_color'/><br>\n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]nsort[bottom_middle_menu_order]][plugintiddlers[]tag[Menu Icon]nsort[bottom_middle_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/BottomMiddleMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!bottom_middle_menu_order\" setTo=<<calc !!bottom_middle_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!bottom_middle_menu_order\" setTo=<<calc !!bottom_middle_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='bottom_middle_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Right Menu Basic Style": {
            "caption": "Bottom Right Menu Basic Style",
            "created": "20150218065745731",
            "creator": "inmysocks",
            "modified": "20150218070226373",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] [[Bottom Right Menu Style]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Right Menu Basic Style",
            "text": "html .tc-bottomrightmenu {\n     display: block;\n     padding: 0px 0px 0px 0px;\n     position: absolute;\n     right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_right_menu_right_offset}};\n     bottom: inherit;\n     z-index: 99;\n     border-bottom-style: none;\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_right_menu_font_size}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_height}};\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_right_menu_text_color}};\n     height: inherit;\n     overflow: inherit;\n     text-align: right;\n}\n"
        },
        "$:/plugins/inmysocks/iconmenus/Bottom Right Menu Settings": {
            "caption": "Bottom Right Menu Settings",
            "created": "20150218065919970",
            "creator": "inmysocks",
            "modified": "20150218074153026",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Bottom Right Menu Settings",
            "text": "Vertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_right_menu_vertical_offset'/><br>\nRight Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_right_menu_right_offset'/><br>\nFont Size <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_right_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_right_menu_text_color'/>\n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]nsort[top_right_menu_order]][plugintiddlers[]tag[Menu Icon]nsort[top_right_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/BottomRightMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!bottom_right_menu_order\" setTo=<<calc !!bottom_right_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!bottom_right_menu_order\" setTo=<<calc !!bottom_right_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='bottom_right_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/BottomBar/menu": {
            "created": "20150218055034581",
            "creator": "inmysocks",
            "modified": "20150218072006520",
            "modifier": "inmysocks",
            "show_left": "show",
            "show_middle": "show",
            "show_right": "show",
            "tags": "[[Icon Menus]] $:/tags/PageTemplate",
            "title": "$:/plugins/inmysocks/iconmenus/BottomBar/menu",
            "text": "<div class=\"tc-iconmenubottombar tc-page-controls\">\n<$reveal type=match state='$:/plugins/inmysocks/iconmenus/BottomBar/menu!!show_left' text=show>\n<div class='tc-bottomleftmenu'>\n<$list filter='[tag[$:/tags/BottomLeftMenu]nsort[bottom_left_menu_order]]'><$transclude/></$list>\n</div>\n</$reveal>\n<$reveal type=match state='$:/plugins/inmysocks/iconmenus/BottomBar/menu!!show_middle' text=show>\n<div class='tc-bottomcentermenu'>\n<$list filter='[tag[$:/tags/BottomMiddleMenu]nsort[bottom_middle_menu_order]]'><$transclude/></$list>\n</div>\n</$reveal>\n<$reveal type=match state='$:/plugins/inmysocks/iconmenus/BottomBar/menu!!show_right' text=show>\n<div class='tc-bottomrightmenu'>\n<$list filter='[tag[$:/tags/BottomRightMenu]nsort[bottom_right_menu_order]]'><$transclude/></$list>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/plugins/inmysocks/iconmenus/Icon Menu Settings": {
            "caption": "Icon Menu Settings",
            "created": "20150123193933540",
            "creator": "inmysocks",
            "modified": "20150218075309346",
            "modifier": "inmysocks",
            "tags": "$:/tags/ControlPanel [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Icon Menu Settings",
            "topbar_height": "2",
            "text": "\\define thisMakeTiddlerReference()\n\"\"\"{{$(TiddlerName)$}}\"\"\"\n\\end\n\n\\define thisMakeOption()\n<option value=<<thisMakeTiddlerReference <<TiddlerName>>>>><<currentTiddler>></option>\n\\end\n\n\\define thisTopBarStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_style'>\n<$list filter='[tag[Top Bar Style]][plugintiddlers[]tag[Top Bar Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisTopLeftMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_left_menu_style'>\n<$list filter='[tag[Top Left Menu Style]][plugintiddlers[]tag[Top Left Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisTopRightMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_right_menu_style'>\n<$list filter='[tag[Top Right Menu Style]][plugintiddlers[]tag[Top Right Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisTopMiddleMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_middle_menu_style'>\n<$list filter='[tag[Top Middle Menu Style]][plugintiddlers[]tag[Top Middle Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisLeftMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_style'>\n<$list filter='[tag[Left Menu Style]][plugintiddlers[]tag[Left Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisRightMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_style'>\n<$list filter='[tag[Right Menu Style]][plugintiddlers[]tag[Right Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisBottomBarStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_bar_style'>\n<$list filter='[tag[Bottom Bar Style]][plugintiddlers[]tag[Bottom Bar Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisBottomLeftMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_left_menu_style'>\n<$list filter='[tag[Bottom Left Menu Style]][plugintiddlers[]tag[Bottom Left Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisBottomRightMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_right_menu_style'>\n<$list filter='[tag[Bottom Right Menu Style]][plugintiddlers[]tag[Bottom Right Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n\\define thisBottomMiddleMenuStyleSelector()\n<$select tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='bottom_middle_menu_style'>\n<$list filter='[tag[Bottom Middle Menu Style]][plugintiddlers[]tag[Bottom Middle Menu Style]]'>\n<$set name=TiddlerName value=<<currentTiddler>>>\n<option value=<<thisMakeTiddlerReference>>><$view field=caption/></option>\n</$set>\n</$list>\n</$select>\n\\end\n\n<$button>Set tiddler top position<$action-setfield $tiddler='$:/themes/tiddlywiki/vanilla/metrics/storytop' $field=text $value=\"\"\"{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}}\"\"\"/></$button> - This sets the position of the top of the story river to the bottom of the top bar. It isn't perfect, but it mostly works.\n\nToggle menus and set css styles, further custimization is available in the tabs below. \n\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/TopBar/menu' tag='$:/tags/TopRightBar'>Show Top Bar</$checkbox>|<<thisTopBarStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/leftmenu-icons' tag='$:/tags/PageTemplate'>Show Left Menu</$checkbox>|<<thisLeftMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/rightmenu-icons' tag='$:/tags/PageTemplate'>Show Right Menu</$checkbox>|<<thisRightMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/TopBar/menu' field='show_middle' checked='show' unchecked='hide'> Show Top Middle Menu</$checkbox>|<<thisTopMiddleMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenu/TopBar/menu' field='show_left' checked='show' unchecked='hide'> Show Top Left Menu</$checkbox>|<<thisTopLeftMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenu/TopBar/menu' field='show_right' checked='show' unchecked='hide'> Show Top Right Menu</$checkbox>|<<thisTopRightMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/BottomBar/menu' tag='$:/tags/PageTemplate'>Show Bottom Bar</$checkbox>|<<thisBottomBarStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/BottomBar/menu' field='show_left' checked='show' unchecked='hide'>Show Bottom Left Menu</$checkbox>|<<thisBottomLeftMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/BottomBar/menu' field='show_right' checked='show' unchecked='hide'>Show Bottom Right Menu</$checkbox>|<<thisBottomRightMenuStyleSelector>>|\n|<$checkbox tiddler='$:/plugins/inmysocks/iconmenus/BottomBar/menu' field='show_middle' checked='show' unchecked='hide'>Show Bottom Middle</$checkbox>|<<thisBottomMiddleMenuStyleSelector>>|\n\n\nTiddlers labeled `<menu name> Style` appear as options here. (So `Top Bar Style`, `Right Menu Style`, etc.)\n\nMenus on the top bar will inherit attributes from the top bar settings if an attribute is set to `inherit` or left blank.\n\n<<tabs \"[[$:/plugins/inmysocks/iconmenus/Top Bar Settings]] [[$:/plugins/inmysocks/iconmenus/Left Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Right Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Top Left Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Top Middle Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Top Right Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Bottom Bar Settings]] [[$:/plugins/inmysocks/iconmenus/Bottom Left Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Bottom Middle Menu Settings]] [[$:/plugins/inmysocks/iconmenus/Bottom Right Menu Settings]]\" [[$:/plugins/inmysocks/iconmenus/Top Bar Settings]]>>"
        },
        "$:/plugins/inmysocks/iconmenus/Left Menu Appear on Hover Style": {
            "caption": "Left Menu Appear on Hover Style",
            "created": "20150125145441628",
            "creator": "inmysocks",
            "modified": "20150211235141695",
            "modifier": "inmysocks",
            "tags": "[[Left Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Left Menu Appear on Hover Style",
            "text": "html .tc-leftmenu {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_left_offset}};\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_width}};\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_font_size}};\n}\n\n\nhtml .tc-leftmenu-wrapper {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: 0px;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_vertical_offset}};\n     width: 30px;\n     height: 100%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_font_size}};\n     background-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_background_color}};\n     opacity:  {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_hidden_opacity}};\n     border-right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_show_border}};\n}\n\nhtml .tc-leftmenu-wrapper:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: 0px;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_vertical_offset}};\n     width: 30px;\n     height 100%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_font_size}};\n     background-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_background_color}};\n     opacity: 1;\n     border-right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_show_border}};\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Left Menu Basic Style": {
            "caption": "Left Menu Basic Style",
            "created": "20150125143220099",
            "creator": "inmysocks",
            "modified": "20150211235210592",
            "modifier": "inmysocks",
            "tags": "[[Left Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Left Menu Basic Style",
            "text": "html .tc-leftmenu {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_left_offset}};\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_width}};\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_font_size}};\n}\n"
        },
        "$:/plugins/inmysocks/iconmenus/Left Menu Pop Out on Hover Style": {
            "caption": "Left Menu Pop Out on Hover Style",
            "created": "20150125215119078",
            "creator": "inmysocks",
            "modified": "20150211235239719",
            "modifier": "inmysocks",
            "tags": "[[Left Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Left Menu Pop Out on Hover Style",
            "text": "html .tc-leftmenu {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: inherit;\n     top: inherit;\n     width: inherit;\n     z-index: 99;\n     color:inherit;\n     font-size:inherit;\n     opacity: 1;\n     height: inherit;\n}\n\nhtml .tc-leftmenu:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: inherit;\n     top: inherit;\n     width: inherit;\n     z-index: 99;\n     color:inherit;\n     font-size:inherit;\n     opacity: 1;\n     height: inherit;\n     text-align: center;\n}\n\nhtml .tc-leftmenu-wrapper {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_hidden_size}};\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_width}};\n     height: 110%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_font_size}};\n     background-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_background_color}};\n     opacity: 1; \n     overflow: hidden;\n     border-right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_show_border}};\n     border-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_border_color}};\n}\n\nhtml .tc-leftmenu-wrapper:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: 0px;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_width}};\n     height 110%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_font_size}};\n     background-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_background_color}};\n     opacity: 1;\n     overflow: hidden;\n     border-right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_show_border}};\n     border-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_border_color}};\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Left Menu Settings": {
            "caption": "Left Menu Settings",
            "created": "20150121172547555",
            "creator": "inmysocks",
            "modified": "20150211235324783",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Left Menu Settings",
            "text": "Left Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_left_offset'/> (Distance from the left side of the screen)<br>\nVertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_vertical_offset'/> (Distance from the bottom of the top bar or top of the screen)<br>\nWidth: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_width'/> (Menu width)<br>\nFont Size: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_text_color'/><br>\nBackground Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_background_color'/><br>\nShow Border: <$checkbox tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field=left_menu_show_border checked=solid unchecked=''/><br>\nBorder Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field=left_menu_border_color/><br>\nOpacity When Hidden: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_hidden_opacity'/> (used for the 'appear on hover' style)<br>\nPosition of Hidden Menu: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='left_menu_hidden_size'/> (used for the 'pop out on hover' style)<br>\n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]][plugintiddlers[]tag[Menu Icon]]+[nsort[left_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/LeftMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!left_menu_order\" setTo=<<calc !!left_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!left_menu_order\" setTo=<<calc !!left_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='left_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/inmysocks/iconmenus/icon/Old Hide Menu Button": {
            "caption": "Old Hide Menu Button",
            "created": "20150130003607080",
            "creator": "inmysocks",
            "left_menu_order": "7",
            "modified": "20150130023013778",
            "modifier": "inmysocks",
            "order": "0",
            "right_menu_order": "0",
            "tags": "[[Menu Icon]] $:/tags/RightMenu",
            "title": "$:/inmysocks/iconmenus/icon/Old Hide Menu Button",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>"
        },
        "$:/plugins/inmysocks/iconmenus/Right Menu Appear on Hover Style": {
            "caption": "Right Menu Appear on Hover Style",
            "created": "20150125144411278",
            "creator": "inmysocks",
            "modified": "20150211235408762",
            "modifier": "inmysocks",
            "tags": "[[Right Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Right Menu Appear on Hover Style",
            "text": "html .tc-rightmenu {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: inherit;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: inherit;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     opacity: 1;\n     background-color: inherit;\n     height: 100%;\n     border: none;\n     border-color: #000000;\n}\n\nhtml .tc-rightmenu:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: inherit;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: inherit;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     opacity: 1;\n     background-color: inherit;\n     height: 100%;\n     border: none;\n     border-color: #000000;\n}\n\nhtml .tc-rightmenu-wrapper {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: 0px;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: 30px;\n     height: 100%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     background-color: transparent;\n     opacity: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_hidden_opacity}};\n     overflow: hidden;\n}\n\nhtml .tc-rightmenu-wrapper:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: 0px;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: 30px;\n     height 100%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     background-color: transparent;\n     opacity: 1;\n     overflow: hidden;\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Right Menu Basic Style": {
            "caption": "Right Menu Basic Style",
            "created": "20150125143649507",
            "creator": "inmysocks",
            "modified": "20150211235444836",
            "modifier": "inmysocks",
            "tags": "[[Right Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Right Menu Basic Style",
            "text": "html .tc-rightmenu {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_right_offset}};\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_width}};\n     z-index: 98;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     opacity: 1;\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Right Menu Pop Out on Hover Style": {
            "caption": "Right Menu Pop Out on Hover Style",
            "created": "20150125213040915",
            "creator": "inmysocks",
            "modified": "20150211235556154",
            "modifier": "inmysocks",
            "tags": "[[Right Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Right Menu Pop Out on Hover Style",
            "text": "html .tc-rightmenu {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: inherit;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: inherit;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     opacity: 1;\n     height: inherit;\n     text-align: center;\n     background-color: inherit;\n}\n\nhtml .tc-rightmenu:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: inherit;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: inherit;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     opacity: 1;\n     height: inherit;\n     border-left: inherit;\n     text-align: center;\n     background-color: inherit;\n}\n\nhtml .tc-rightmenu-wrapper {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_hidden_size}};\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_width}};\n     height: 110%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     background-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_background_color}};\n     opacity: 1; \n     overflow: hidden;\n     border-left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_show_border}};\n     border-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_border_color}};\n}\n\nhtml .tc-rightmenu-wrapper:hover {\n     display: block;\n     padding: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}} 0px 0px 0px;\n     position: fixed;\n     right: 0px;\n     top: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_vertical_offset}};\n     width: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_width}};\n     height 110%;\n     z-index: 99;\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_text_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_font_size}};\n     background-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_background_color}};\n     opacity: 1;\n     overflow: hidden;\n     border-left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_show_border}};\n     border-color: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_border_color}};\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Right Menu Settings": {
            "caption": "Right Menu Settings",
            "created": "20150123193835943",
            "creator": "inmysocks",
            "modified": "20150211235639496",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Right Menu Settings",
            "text": "Right Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_right_offset'/> (Distance from the right side of the screen)<br>\nVertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_vertical_offset'/> (Distance from the bottom of the top bar or top of the screen)<br>\nWidth: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_width'/> (Menu width)<br>\nFont Size: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_text_color'/> <br>\nBackground Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_background_color'/><br>\nShow Border: <$checkbox tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field=right_menu_show_border checked=solid unchecked=''/><br>\nBorder Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field=right_menu_border_color/><br>\nOpacity When Hidden: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_hidden_opacity'/> (used for the 'appear on hover' style)<br>\nPosition of Hidden Menu: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='right_menu_hidden_size'/> (used for the 'pop out on hover' style)<br>\n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]][plugintiddlers[]tag[Menu Icon]]+[nsort[right_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/RightMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!right_menu_order\" setTo=<<calc !!right_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!right_menu_order\" setTo=<<calc !!right_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='right_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/Top Bar Basic Style": {
            "caption": "Top Bar Basic Style",
            "created": "20150125150421416",
            "creator": "inmysocks",
            "modified": "20150211235758122",
            "modifier": "inmysocks",
            "tags": "[[Top Bar Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Bar Basic Style",
            "text": "html .tc-iconmenutopbar {\n     display:block;\n     width:100%;\n     position:fixed;\n     text-align:center;\n     line-width:100%;\n     left:0%;\n     top:0px;\n     background-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_background_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_text_size}};\n     border-bottom-style:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_border}};\n     border-bottom-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_border_color}};\n     height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n     overflow: hidden;\n     z-index: 70;\n} "
        },
        "$:/plugins/inmysocks/iconmenus/Top Bar Pop Out on Hover Style": {
            "caption": "Top Bar Pop Out on Hover Style",
            "created": "20150125150523066",
            "creator": "inmysocks",
            "modified": "20150211235826817",
            "modifier": "inmysocks",
            "tags": "[[Top Bar Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Bar Pop Out on Hover Style",
            "text": "html .tc-iconmenutopbar {\n     display:block;\n     width:100%;\n     position:fixed;\n     text-align:center;\n     line-width:100%;\n     left:0%;\n     top:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_hidden_size}};\n     background-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_background_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_text_size}};\n     border-bottom-style:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_border}};\n     border-bottom-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_border_color}};\n     height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n} \n\nhtml .tc-iconmenutopbar:hover {\n     display:block;\n     width:100%;\n     position:fixed;\n     text-align:center;\n     line-width:100%;\n     left:0%;\n     top:0px;\n     background-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_background_color}};\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_text_size}};\n     border-bottom-style:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_border}};\n     border-bottom-color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_border_color}};\n     height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n} "
        },
        "$:/plugins/inmysocks/iconmenus/Top Bar Settings": {
            "caption": "Top Bar Settings",
            "created": "20150124124443910",
            "creator": "inmysocks",
            "modified": "20150211235855713",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Bar Settings",
            "text": "Top Bar Height: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_height'/><br>\nAmount of Top Bar Hidden: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_hidden_size'/> (Used for the pop out on hover style, this should be negative and Top Bar Height+Amount Hidden>0)<br>\nTop Bar Background Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_background_color'/><br>\nShow Top Bar Border: <$checkbox tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_border' checked=solid unchecked=none/><br>\nTop Bar Border Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_border_color'/><br>\nTop Bar Text Size: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_bar_text_size'/>"
        },
        "$:/plugins/inmysocks/iconmenus/Top Left Menu Basic Style": {
            "caption": "Top Left Menu Basic Style",
            "created": "20150125145544310",
            "creator": "inmysocks",
            "modified": "20150211235925529",
            "modifier": "inmysocks",
            "tags": "[[Top Left Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Left Menu Basic Style",
            "text": "html .tc-topleftmenu {\n     display: block;\n     padding: 0px 0px 0px 0px;\n     position: absolute;\n     left: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_left_menu_left_offset}};\n     top: inherit;\n     z-index: 199;\n     border-bottom-style: none;\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_left_menu_font_size}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_left_menu_text_color}};\n     height: inherit;\n     overflow: inherit;\n     text-align: left;\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Top Left Menu Settings": {
            "caption": "Top Left Menu Settings",
            "created": "20150123211512650",
            "creator": "inmysocks",
            "modified": "20150218074042858",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Left Menu Settings",
            "text": "Vertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_left_menu_vertical_offset'/><br>\nLeft Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_left_menu_left_offset'/><br>\nFont Size <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_left_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_left_menu_text_color'/> \n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]nsort[top_left_menu_order]][plugintiddlers[]tag[Menu Icon]nsort[top_left_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/TopLeftMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!top_left_menu_order\" setTo=<<calc !!top_left_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!top_left_menu_order\" setTo=<<calc !!top_left_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='top_left_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/Top Middle Menu Basic Style": {
            "caption": "Top Middle Menu Basic Style",
            "created": "20150125150136727",
            "creator": "inmysocks",
            "modified": "20150212002050972",
            "modifier": "inmysocks",
            "tags": "[[Top Middle Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Middle Menu Basic Style",
            "text": "html .tc-topcentermenu {\n     width: 100%;\n     text-align: center;\n     display: block;\n     padding: 0px 0px 0px 0px;\n     position: absolute;\n     top: inherit;\n     z-index: 99;\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_middle_menu_font_size}};\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_middle_menu_text_color}};\n     line-height: inherit;\n     height: inherit;\n     overflow: inherit;\n}"
        },
        "$:/plugins/inmysocks/iconmenus/Top Middle Menu Settings": {
            "caption": "Top Middle Menu Settings",
            "created": "20150124160659217",
            "creator": "inmysocks",
            "modified": "20150212001641676",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Middle Menu Settings",
            "text": "Vertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_middle_menu_vertical_offset'/><br>\nLeft Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_middle_menu_left_offset'/><br>\nFont Size: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_middle_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_middle_menu_text_color'/><br>\n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]][plugintiddlers[]tag[Menu Icon]]+[nsort[top_middle_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/TopMiddleMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!top_middle_menu_order\" setTo=<<calc !!top_middle_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!top_middle_menu_order\" setTo=<<calc !!top_middle_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='top_middle_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/Top Right Menu Basic Style": {
            "caption": "Top Right Menu Basic Style",
            "created": "20150125145928143",
            "creator": "inmysocks",
            "modified": "20150212001919454",
            "modifier": "inmysocks",
            "tags": "[[Top Right Menu Style]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Right Menu Basic Style",
            "text": "html .tc-toprightmenu {\n     display: block;\n     padding: 0px 0px 0px 0px;\n     position: absolute;\n     right: {{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_right_menu_right_offset}};\n     top: inherit;\n     z-index: 99;\n     border-bottom-style: none;\n     font-size:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_right_menu_font_size}};\n     line-height:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}};\n     color:{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_right_menu_text_color}};\n     height: inherit;\n     overflow: inherit;\n     text-align: right;\n}\n"
        },
        "$:/plugins/inmysocks/iconmenus/Top Right Menu Settings": {
            "caption": "Top Right Menu Settings",
            "created": "20150123223246312",
            "creator": "inmysocks",
            "modified": "20150218074242218",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/Top Right Menu Settings",
            "text": "Vertical Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_right_menu_vertical_offset'/><br>\nRight Offset: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_right_menu_right_offset'/><br>\nFont Size <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_right_menu_font_size'/><br>\nText Color: <$edit-text tiddler='$:/plugins/inmysocks/iconmenus/icon_menu_settings' field='top_right_menu_text_color'/>\n\nThe checkbox sets if the item is in the menu, the numbers in the `Order` column set the order in which the entries appear.\n\n<table>\n<tr>\n <th>In Menu?</th>\n <th>Name</th>\n <th>Order</th>\n</tr>\n<$list filter='[tag[Menu Icon]nsort[top_right_menu_order]][plugintiddlers[]tag[Menu Icon]nsort[top_right_menu_order]]'>\n<tr>\n <td><$checkbox tiddler=<<currentTiddler>> tag='$:/tags/TopRightMenu'></$checkbox></td>\n <td><$link to=<<currentTiddler>>><$view field=caption><$view field='title'/></$view></$link></td>\n <td><$button set=\"!!top_right_menu_order\" setTo=<<calc !!top_right_menu_order 1>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}}</$button> \n<$button set=\"!!top_right_menu_order\" setTo=<<calc !!top_right_menu_order -1 0>> class=\"tc-btn-invisible\">{{$:/core/images/chevron-up}}</$button><$edit-text field='top_right_menu_order' placeholder='Order' size=4/></td>\n</tr>\n</$list>\n</table>"
        },
        "$:/plugins/inmysocks/iconmenus/TopBar/menu": {
            "created": "20150123102312282",
            "creator": "inmysocks",
            "modified": "20150218075611266",
            "modifier": "inmysocks",
            "show_left": "show",
            "show_middle": "show",
            "show_right": "show",
            "tags": "[[Icon Menus]] $:/tags/TopRightBar",
            "title": "$:/plugins/inmysocks/iconmenus/TopBar/menu",
            "text": "<div class=\"tc-iconmenutopbar\">\n<$reveal type=match state='$:/plugins/inmysocks/iconmenu/TopBar/menu!!show_left' text=show>\n<div class='tc-topleftmenu'>\n<$list filter='[tag[$:/tags/TopLeftMenu]nsort[top_left_menu_order]][plugintiddlers[]tag[$:/tags/TopLeftMenu]nsort[top_left_menu_order]]'><$transclude/></$list>\n</div>\n</$reveal>\n<$reveal type=match state='$:/plugins/inmysocks/iconmenus/TopBar/menu!!show_middle' text=show>\n<div class='tc-topcentermenu'>\n<$list filter='[tag[$:/tags/TopMiddleMenu]nsort[top_middle_menu_order]][plugintiddlers[]tag[$:/tags/TopMiddleMenu]nsort[top_middle_menu_order]]'><$transclude/></$list>\n</div>\n</$reveal>\n<$reveal type=match state='$:/plugins/inmysocks/iconmenu/TopBar/menu!!show_right' text=show>\n<div class='tc-toprightmenu'>\n<$list filter='[tag[$:/tags/TopRightMenu]nsort[top_right_menu_order]][plugintiddlers[]tag[$:/tags/TopRightMenu]nsort[top_right_menu_order]]'><$transclude/></$list>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Wiki Title and Subtitle": {
            "caption": "Wiki Title and Subtitle",
            "created": "20150124161741302",
            "creator": "inmysocks",
            "left_menu_order": "11",
            "modified": "20150211234949335",
            "modifier": "inmysocks",
            "order": "2",
            "right_menu_order": "15",
            "tags": "[[Menu Icon]] $:/tags/TopMiddleMenu [[Icon Menus]] $:/tags/TopRightMenu",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Wiki Title and Subtitle",
            "top_left_menu_order": "2",
            "top_middle_menu_order": "2",
            "top_right_menu_order": "2",
            "text": "{{$:/SiteTitle}} -- {{$:/SiteSubtitle}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Advanced Search": {
            "caption": "Advanced Search",
            "created": "20150121174337179",
            "creator": "inmysocks",
            "left_menu_order": "17",
            "modified": "20150211234653390",
            "modifier": "inmysocks",
            "order": "10",
            "right_menu_order": "3",
            "tags": "[[Menu Icon]] [[Icon Menus]] $:/tags/TopRightMenu",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Advanced Search",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "1",
            "text": "{{$:/core/ui/Buttons/advanced-search}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Close All": {
            "caption": "Close All",
            "created": "20150121173410074",
            "creator": "inmysocks",
            "left_menu_order": "4",
            "modified": "20150211234704048",
            "modifier": "inmysocks",
            "order": "11",
            "right_menu_order": "4",
            "tags": "$:/tags/LeftMenu [[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Close All",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/close-all}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Control Panel": {
            "caption": "Control Panel",
            "created": "20150121164820855",
            "creator": "inmysocks",
            "left_menu_order": "2",
            "modified": "20150211234724302",
            "modifier": "inmysocks",
            "order": "3",
            "right_menu_order": "2",
            "tags": "$:/tags/LeftMenu [[Menu Icon]] $:/tags/RightMenu [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Control Panel",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "3",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/control-panel}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Create New Tiddler From Template": {
            "caption": "Create New Tiddler From Template",
            "created": "20150121161849750",
            "creator": "inmysocks",
            "image": "{{$:/core/images/new-button}}",
            "left_menu_order": "3",
            "modified": "20150211234734888",
            "modifier": "inmysocks",
            "order": "3",
            "right_menu_order": "5",
            "tags": "[[Menu Icon]] $:/tags/LeftMenu [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Create New Tiddler From Template",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "<$button popup='$:/state/createnewtiddler' class='tc-btn-invisible' tooltip='New Tiddler from Template'>{{$:/core/images/new-button}}</$button><$reveal type='popup' state='$:/state/createnewtiddler'><div class=\"tc-drop-down\">\nCreate New Tiddler Using Template:\n<$list filter='[prefix[New Tiddler Template - ]]' variable=TemplateName><$button><$view tiddler=<<TemplateName>> field=title/><$action-sendmessage $message='tm-new-tiddler' $param=<<TemplateName>>/></$button>\n</$list>\n</div>\n</$reveal>"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Full Screen": {
            "caption": "Full Screen",
            "created": "20150121174043988",
            "creator": "inmysocks",
            "left_menu_order": "5",
            "modified": "20150211234745336",
            "modifier": "inmysocks",
            "order": "12",
            "right_menu_order": "6",
            "tags": "$:/tags/LeftMenu [[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Full Screen",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/full-screen}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Home": {
            "caption": "Home",
            "created": "20150121170719185",
            "creator": "inmysocks",
            "left_menu_order": "0",
            "modified": "20150212000308501",
            "modifier": "inmysocks",
            "order": "NaN",
            "right_menu_order": "1",
            "tags": "[[Menu Icon]] $:/tags/RightMenu $:/tags/TopMiddleMenu $:/tags/LeftMenu [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Home",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "1",
            "top_right_menu_order": "18",
            "text": "{{$:/core/ui/Buttons/home}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Import": {
            "caption": "Import",
            "created": "20150121173313491",
            "creator": "inmysocks",
            "left_menu_order": "16",
            "modified": "20150211234809719",
            "modifier": "inmysocks",
            "order": "4",
            "right_menu_order": "7",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Import",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/import}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Language": {
            "caption": "Language",
            "created": "20150121174250819",
            "creator": "inmysocks",
            "left_menu_order": "6",
            "modified": "20150211234820489",
            "modifier": "inmysocks",
            "order": "13",
            "right_menu_order": "8",
            "tags": "$:/tags/LeftMenu [[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Language",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/language}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/New Journal": {
            "caption": "New Journal",
            "created": "20150121173516193",
            "creator": "inmysocks",
            "left_menu_order": "15",
            "modified": "20150211234830211",
            "modifier": "inmysocks",
            "order": "14",
            "right_menu_order": "9",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/New Journal",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/new-journal}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Permaview": {
            "caption": "Permaview",
            "created": "20150121173435603",
            "creator": "inmysocks",
            "left_menu_order": "14",
            "modified": "20150211234841496",
            "modifier": "inmysocks",
            "order": "5",
            "right_menu_order": "11",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Permaview",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/permaview}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Refresh": {
            "caption": "Refresh",
            "created": "20150121173606555",
            "creator": "inmysocks",
            "left_menu_order": "1",
            "modified": "20150212001438268",
            "modifier": "inmysocks",
            "order": "6",
            "right_menu_order": "12",
            "tags": "[[Menu Icon]] [[Icon Menus]] $:/tags/TopLeftMenu",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Refresh",
            "top_left_menu_order": "1",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/refresh}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Save Wiki": {
            "caption": "Save Wiki",
            "created": "20150121175630282",
            "creator": "inmysocks",
            "left_menu_order": "12",
            "modified": "20150211234904103",
            "modifier": "inmysocks",
            "order": "7",
            "right_menu_order": "13",
            "tags": "[[Menu Icon]] $:/tags/TopLeftMenu $:/tags/TopMiddleMenu [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Save Wiki",
            "top_left_menu_order": "3",
            "top_middle_menu_order": "4",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/save-wiki}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Search": {
            "caption": "Search",
            "created": "20150121171609124",
            "creator": "inmysocks",
            "left_menu_order": "13",
            "modified": "20150211234913046",
            "modifier": "inmysocks",
            "order": "11",
            "right_menu_order": "14",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Search",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "<$button to='$:/AdvancedSearch' class='tc-btn-invisible'>{{$:/core/ui/Buttons/advanced-search}}</$button>\n"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Storyview": {
            "caption": "Storyview",
            "created": "20150121174204933",
            "creator": "inmysocks",
            "left_menu_order": "10",
            "modified": "20150211234921335",
            "modifier": "inmysocks",
            "order": "15",
            "right_menu_order": "18",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Storyview",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/storyview}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Tag Manager": {
            "caption": "Tag Manager",
            "created": "20150121174313928",
            "creator": "inmysocks",
            "left_menu_order": "9",
            "modified": "20150211234931184",
            "modifier": "inmysocks",
            "order": "16",
            "right_menu_order": "17",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Tag Manager",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/tag-manager}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon/Theme": {
            "caption": "Theme",
            "created": "20150121174228645",
            "creator": "inmysocks",
            "left_menu_order": "8",
            "modified": "20150211234940567",
            "modifier": "inmysocks",
            "order": "17",
            "right_menu_order": "16",
            "tags": "[[Menu Icon]] [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon/Theme",
            "top_left_menu_order": "0",
            "top_middle_menu_order": "0",
            "top_right_menu_order": "0",
            "text": "{{$:/core/ui/Buttons/theme}}"
        },
        "$:/plugins/inmysocks/iconmenus/icon_menu_settings": {
            "bottom_bar_background_color": "lightgrey",
            "bottom_bar_border": "solid",
            "bottom_bar_border_color": "green",
            "bottom_bar_height": "40px",
            "bottom_bar_hidden_size": "-20px",
            "bottom_bar_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Bottom Bar Basic Style}}\"\"\"",
            "bottom_bar_text_size": "20px",
            "bottom_left_menu_font_size": "20px",
            "bottom_left_menu_left_offset": "10px",
            "bottom_left_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Bottom Left Menu Basic Style}}\"\"\"",
            "bottom_left_menu_vertical_offset": "0px",
            "bottom_middle_menu_font_size": "20px",
            "bottom_middle_menu_left_offset": "",
            "bottom_middle_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Bottom Middle Menu Basic Style}}\"\"\"",
            "bottom_middle_menu_text_color": "black",
            "bottom_middle_menu_vertical_offset": "0px",
            "bottom_right_menu_font_size": "20px",
            "bottom_right_menu_right_offset": "0px",
            "bottom_right_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Bottom Right Menu Basic Style}}\"\"\"",
            "bottom_right_menu_vertical_offset": "",
            "created": "20150124120530941",
            "creator": "inmysocks",
            "left_menu_background_color": "",
            "left_menu_border_color": "#000",
            "left_menu_font_size": "20px",
            "left_menu_hidden_opacity": "0.2",
            "left_menu_hidden_size": "99%",
            "left_menu_left_offset": "5px",
            "left_menu_show_border": "",
            "left_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Left Menu Appear on Hover Style}}\"\"\"",
            "left_menu_text_color": "#000000",
            "left_menu_vertical_offset": "-20px",
            "left_menu_width": "40px",
            "modified": "20150218080207581",
            "modifier": "inmysocks",
            "right_menu_background_color": "grey",
            "right_menu_border_color": "",
            "right_menu_font_size": "20px",
            "right_menu_hidden_opacity": "0.1",
            "right_menu_hidden_size": "99.5%",
            "right_menu_right_offset": "0px",
            "right_menu_show_border": "solid",
            "right_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Right Menu Pop Out on Hover Style}}\"\"\"",
            "right_menu_text_color": "#000000",
            "right_menu_vertical_offset": "-20px",
            "right_menu_width": "30px",
            "tags": "[[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/icon_menu_settings",
            "top_bar_background_color": "#191919",
            "top_bar_border": "solid",
            "top_bar_border_color": "#a00000",
            "top_bar_height": "40px",
            "top_bar_hidden_size": "-25px",
            "top_bar_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Top Bar Basic Style}}\"\"\"",
            "top_bar_text_size": "20px",
            "top_left_menu_font_size": "inherit",
            "top_left_menu_left_offset": "0px",
            "top_left_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Top Left Menu Basic Style}}\"\"\"",
            "top_left_menu_text_color": "#000000",
            "top_left_menu_vertical_offset": "0px",
            "top_middle_menu_font_size": "inherit",
            "top_middle_menu_left_offset": "0px",
            "top_middle_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Top Middle Menu Basic Style}}\"\"\"",
            "top_middle_menu_text_color": "#ffffff",
            "top_middle_menu_vertical_offset": "0px",
            "top_right_menu_font_size": "inherit",
            "top_right_menu_left_offset": "0px",
            "top_right_menu_right_offset": "10px",
            "top_right_menu_style": "\"\"\"{{$:/plugins/inmysocks/iconmenus/Top Right Menu Basic Style}}\"\"\"",
            "top_right_menu_text_color": "#0020f0",
            "top_right_menu_vertical_offset": "0px",
            "text": ""
        },
        "$:/plugins/inmysocks/iconmenus/leftmenu-icons": {
            "created": "20140610090914688",
            "creator": "TonGerner",
            "modified": "20150212000316434",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] $:/tags/PageTemplate",
            "title": "$:/plugins/inmysocks/iconmenus/leftmenu-icons",
            "type": "application/x-tiddler",
            "text": "<div class='tc-leftmenu-wrapper'>\n<div class=\"tc-leftmenu tc-page-controls\">\n\n@@.tc-site-title\n\n@@\n\n<$list filter='[tag[$:/tags/LeftMenu]][plugintiddlers[]tag[$:/tags/LeftMenu]]+[nsort[left_menu_order]]'>\n\n<$transclude/>\n\n</$list>\n\n</div>\n</div>"
        },
        "$:/plugins/inmysocks/iconmenus/rightmenu-icons": {
            "class": "tc-rightmenu-wrapper",
            "created": "20150123170243215",
            "creator": "TonGerner",
            "modified": "20150212000317330",
            "modifier": "inmysocks",
            "tags": "[[Icon Menus]] $:/tags/PageTemplate",
            "title": "$:/plugins/inmysocks/iconmenus/rightmenu-icons",
            "type": "application/x-tiddler",
            "text": "<div class=\"tc-rightmenu-wrapper\">\n<div class=\"tc-page-controls tc-rightmenu\">\n\n@@.tc-site-title\n\n@@\n\n<$list filter='[tag[$:/tags/RightMenu]][plugintiddlers[]tag[$:/tags/RightMenu]]+[nsort[right_menu_order]]'>\n\n<$transclude/>\n\n</$list>\n\n</div>\n</div>"
        },
        "$:/plugins/inmysocks/iconmenus/stylesheet/IconMenus": {
            "created": "20140607071109226",
            "creator": "TonGerner",
            "left_menu_style": "{{Left Menu Basic Style}}",
            "leftmenu-width": "0px",
            "modified": "20150218073041489",
            "modifier": "inmysocks",
            "right_menu_style": "{{Right Menu Basic Style}}",
            "story-left": "0px",
            "story-width": "",
            "tags": "$:/tags/Stylesheet [[Icon Menus]]",
            "title": "$:/plugins/inmysocks/iconmenus/stylesheet/IconMenus",
            "top-leftmenu": "0px",
            "type": "text/vnd.tiddlywiki",
            "text": "/* STORY-RIVER */\n.tc-story-river {\n     left: {{!!story-left}};\n     width: {{!!story-width}};\n}\n\n/* LEFT MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!left_menu_style}}\n\n/* RIGHT MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!right_menu_style}}\n\n/* TOP LEFT MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_left_menu_style}}\n\n/* TOP RIGHT MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_right_menu_style}}\n\n/* TOP MIDDLE MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_middle_menu_style}}\n\n/* TOP BAR */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_style}}\n\n/* BOTTOM LEFT MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_left_menu_style}}\n\n/* BOTTOM RIGHT MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_right_menu_style}}\n\n/* BOTTOM MIDDLE MENU */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_middle_menu_style}}\n\n/* BOTTOM BAR */\n{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!bottom_bar_style}}"
        }
    }
}
<div class="tc-iconmenubottombar tc-page-controls">
<$reveal type=match state='$:/plugins/inmysocks/iconmenus/BottomBar/menu!!show_left' text=show>
<div class='tc-bottomleftmenu'>
<$list filter='[tag[$:/tags/BottomLeftMenu]nsort[bottom_left_menu_order]]'><$transclude/></$list>
</div>
</$reveal>
<$reveal type=match state='$:/plugins/inmysocks/iconmenus/BottomBar/menu!!show_middle' text=show>
<div class='tc-bottomcentermenu'>
<$list filter='[tag[$:/tags/BottomMiddleMenu]nsort[bottom_middle_menu_order]]'><$transclude/></$list>
</div>
</$reveal>
<$reveal type=match state='$:/plugins/inmysocks/iconmenus/BottomBar/menu!!show_right' text=show>
<div class='tc-bottomrightmenu'>
<$list filter='[tag[$:/tags/BottomRightMenu]nsort[bottom_right_menu_order]]'><$transclude/></$list>
</div>
</$reveal>
</div>

{{$:/core/ui/Buttons/control-panel}}
{{$:/core/ui/Buttons/new-tiddler}}
\whitespace trim
\define DagboekButton()
<$button tooltip="$:/plugins/inmysocks/iconmenus/icon/Dagboek" class='tc-btn-invisible tc-tiddlylink'><$action-createtiddler $basetitle=<<now "DDD DD MMM YYYY">> tags=<<now "#dagboek YYYY">> tocnr=<<now "0MM0DD">> /><$action-sendmessage $message="tm-edit-tiddler" $param=<<now "DDD DD MMM YYYY">>/>{{$:/core/images/add-comment}}</$button>
\end
<<DagboekButton>>
{{$:/core/ui/Buttons/home}}
{{$:/core/ui/Buttons/language}}
\define CreateVandaag()
<$action-createtiddler $basetitle=<<now "DD MMM">> tags=<<now "#agenda MMM">> text="<tblauw>{{!!weekdag}} {{!!jaar}}, °</tblauw> 

|customTable|k
" tocnr=<<now "0MM0DD">> weekdag=<<now "DDD">> jaar=<<now "YYYY">>/><$action-sendmessage $message="tm-edit-tiddler" $param=<<now "DD MMM">>/>
\end

\define nontidexist(tiddler)
<<CreateVandaag>>
\end
\define tidexist(tiddler)
<$vars tiddler="""$tiddler$""">
<$list filter="[title[$tiddler$]] +[has[title]]" emptyMessage=<<nontidexist """$tiddler$""">>>
<$action-navigate $to=<<now "DD MMM">>/>
<$action-setfield $tiddler=<<now "DD MMM">> $field="weekdag" $value=<<now "DDD">>/>
<$action-setfield $tiddler=<<now "DD MMM">> $field="jaar" $value=<<now "YYYY">>/>
</$list>
</$vars>
\end

<$button tooltip="$:/plugins/inmysocks/iconmenus/icon/New Journal" class='tc-btn-invisible tc-tiddlylink'>
<$macrocall $name="tidexist" tiddler=<<now "DD MMM">>/>
{{$:/core/images/new-journal-button}}</$button>
{{$:/core/ui/Buttons/refresh}}
{{$:/core/ui/Buttons/save-wiki}}
{{$:/core/ui/Buttons/storyview}}
{{$:/core/ui/Buttons/tag-manager}}
{{$:/core/ui/Buttons/theme}}
{{$:/SiteTitle}} -- {{$:/SiteSubtitle}}
<div class='tc-leftmenu-wrapper'>
<div class="tc-leftmenu tc-page-controls">

@@.tc-site-title

@@

<$list filter='[tag[$:/tags/LeftMenu]][plugintiddlers[]tag[$:/tags/LeftMenu]]+[nsort[left_menu_order]]'>

<$transclude/>

</$list>

</div>
</div>
<div class="tc-rightmenu-wrapper">
<div class="tc-page-controls tc-rightmenu">

@@.tc-site-title

@@

<$list filter='[tag[$:/tags/RightMenu]][plugintiddlers[]tag[$:/tags/RightMenu]]+[nsort[right_menu_order]]'>

<$transclude/>

</$list>

</div>
</div>
<div class="tc-iconmenutopbar">
<$reveal type=match state='$:/plugins/inmysocks/iconmenu/TopBar/menu!!show_left' text=show>
<div class='tc-topleftmenu'>
<$list filter='[tag[$:/tags/TopLeftMenu]nsort[top_left_menu_order]][plugintiddlers[]tag[$:/tags/TopLeftMenu]nsort[top_left_menu_order]]'><$transclude/></$list>
</div>
</$reveal>
<$reveal type=match state='$:/plugins/inmysocks/iconmenus/TopBar/menu!!show_middle' text=show>
<div class='tc-topcentermenu'>
<$list filter='[tag[$:/tags/TopMiddleMenu]nsort[top_middle_menu_order]][plugintiddlers[]tag[$:/tags/TopMiddleMenu]nsort[top_middle_menu_order]]'><$transclude/></$list>
</div>
</$reveal>
<$reveal type=match state='$:/plugins/inmysocks/iconmenu/TopBar/menu!!show_right' text=show>
<div class='tc-toprightmenu'>
<$list filter='[tag[$:/tags/TopRightMenu]nsort[top_right_menu_order]][plugintiddlers[]tag[$:/tags/TopRightMenu]nsort[top_right_menu_order]]'><$transclude/></$list>
</div>
</$reveal>
</div>
{"tiddlers":{"$:/plugins/kookma/slider/stylesheet/slide-footer":{"title":"$:/plugins/kookma/slider/stylesheet/slide-footer","created":"20180907070611557","creator":"Mohammad","modified":"20190614025939297","modifier":"Mohammad","tags":"$:/tags/Stylesheet","type":"text/css","text":".slider-slide-footer {\n  display:flex;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.slider-slide-footer{  \n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  box-sizing: border-box;\n  width: 100%;\n  padding: 5px;\n  background-color: #efefef;\n opacity: 0.55;\n}\n\n.slider-slide-footer:hover{\n  opacity: 1.0;   \n}\n\n.slider-slide-footer-buttons{\n  display:flex;\n  justify-content: space-around;\n  width:120px;\n  margin-left:5px;\n  outline:none;\n}\n\n.slider-slidenumber{\n    height: 22pt;\n    width: 22pt;\n    line-height:22pt;\n    border-radius: 50%;\n    text-align: center;\n    margin-right:5px;\n}\n\n.slider-slidenumber{\n    background: gray;\n    color: #fff;\n    font-size:1em;\n    font-weight:700;  \n}\n.buttons-no-outline {\n  outline:none;\n} /*remove the blue border on button focus */"},"$:/plugins/kookma/slider/stylesheet/slide-height":{"title":"$:/plugins/kookma/slider/stylesheet/slide-height","created":"20181028090101249","creator":"Mohammad","modified":"20190614063856949","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"<pre>/* The size of tiddlers of curent slider can be dynamically set here */\n[data-tags ~=\"{{$:/plugins/kookma/slider/state!!current-trail}}\"] .tc-tiddler-body {\nmin-height: 70vh;\n}\n</pre>"},"$:/plugins/kookma/slider/stylesheet/theme/dark":{"title":"$:/plugins/kookma/slider/stylesheet/theme/dark","created":"20180722195027124","creator":"Mohammad","modified":"20190614122154053","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"<pre>/* Set styles for the slider viewtemplate */\n\n[data-tags ~=\"{{$:/plugins/kookma/slider/state!!current-trail}}\"]  {\n    background-color:#d9edf7;\n    color:#31708f;\n}\n\n[data-tags~=\"trail\"] {\n  border: 1px solid #999;\n  background-color: #f0efea; \n}\n\n.sliderDashboard-header,\n.sliderDashboard-footer {\n  background-color:#fcfdfe;\n  padding: 5px;\n}\n.sliderDashboard-buttons {\n  float:right;\n  padding:8px;\n}\n\n.sliderDashboard-slide-list{\n  min-height:250px;\n  color:#dfdfdf;\n  background-color:#4e4a4a; /*ffffeb */\n  border-radius:3px;\n  padding:12px;\n}\n\n.sliderDashboard-slide-list .tc-tiddlylink      {  color:#dfdfdf;}\n.sliderDashboard-slide-list .tc-tiddlylink:hover{  color:#dfdfdf;}\n\n.slider-trail-list {\n  text-shadow:none;\n  background-color:#4e4a4a;\n  height: 400px; \n}\n\n.slider-trail-list a.tc-tiddlylink      {  color:#dfdfdf;}\n.slider-trail-list a.tc-tiddlylink:hover{  color:#dfdfdf;}\n</pr>"},"$:/plugins/kookma/slider/stylesheet/theme/light":{"title":"$:/plugins/kookma/slider/stylesheet/theme/light","created":"20181028153618499","creator":"Mohammad","modified":"20190614122154056","modifier":"Mohammad","tags":"$:/tags/Stylesheet","type":"text/css","text":"/* Set styles for the trail viewtemplate */\n\n[data-tags~=\"trail\"] {\n  border: 1px solid #999;\n  background-color: #f0efea;\n}\n\n.sliderDashboard-header,\n.sliderDashboard-footer {\n  background-color:#fcfdfe;\n  padding: 5px;\n}\n.sliderDashboard-buttons {\n  float:right;\n  padding:8px;\n}\n\n.sliderDashboard-slide-list{\n  min-height:250px;\n  color:#111;\n  background-color:#fff;\n  border-radius:3px;\n  padding:12px;\n}\n\n\n.slider-trail-list {\n  background-color:#eee;\n  height: 400px; \n}\n"},"$:/plugins/kookma/slider/stylesheet/tooltip":{"title":"$:/plugins/kookma/slider/stylesheet/tooltip","created":"20180728144429505","creator":"Mohammad","modified":"20190614031606722","modifier":"Mohammad","tags":"$:/tags/Stylesheet","type":"text/css","text":".slider-tooltip {\n    position: relative;\n    display: inline-block;\n\n}\n\n.slider-tooltip .slider-tooltiptext {\n    visibility: hidden;\n    background-color: #ffffff;\n    color: #111111;\n    text-align: left;\n    border-radius: 6px;\n    padding: 5px 0;\n    min-width: 360px;\n    max-height: 60vh;\n    overflow-y: auto;\n\n    /* Position the tooltip */\n    position: absolute;\n    z-index: 1;\n    bottom: 100%;\n    left: 50%;\n    margin-left: -40px;\n    box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)\n}\n\n.slider-tooltip:hover .slider-tooltiptext {\n    visibility: visible;\n}\n"},"$:/plugins/kookma/slider/stylesheet/slide-background-class":{"title":"$:/plugins/kookma/slider/stylesheet/slide-background-class","created":"20181029071532524","creator":"Mohammad","modified":"20190613151047228","modifier":"Mohammad","tags":"$:/tags/Stylesheet","type":"text/css","text":"/* Colors taked from [1] https://www.w3schools.com/colors/colors_names.asp \n[2] http://www.workwithcolor.com/color-chart-full-01.htm\n*/\n.MistyRose{background-color:#FFE4E1;}\n.LemonChiffon{background-color:#FFFACD;}\n.LavenderBlush{background-color:#FFF0F5;}\n.Lavender{background-color:#E6E6FA;}\n.Honeydew{background-color:#F0FFF0;}\n.LightCyan{background-color:#E0FFFF;}\n.AliceBlue{background-color:#F0F8FF;}\n.Cornsilk{background-color:#FFF8DC;}\n.Gainsboro{background-color:#DCDCDC;}\n.Bisque{background-color:#FFE4C4;}\n.Snow{background-color:#FFFAFA;}\n/* darker ones*/\n.PowderBlue{background-color:#B0E0E6}\n.Aquamarine{background-color:#7FFFD4;}\n.PaleGreen{background-color:#98FB98;}\n.Pink{background-color:#FFC0CB;}\n.LightSalmon{background-color:#FFA07A;}\n.Lime{background-color:#bfef45;}\n.Mint{background-color:#aaffc3;}\n.Beige{background-color:#fffac8;}\n.Appricot{background-color:#ffd8b1;}"},"$:/plugins/kookma/slider/toggle-slider-theme":{"title":"$:/plugins/kookma/slider/toggle-slider-theme","created":"20181028155841125","creator":"Mohammad","modified":"20190614025740912","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=\"$:/plugins/kookma/slider/state/slider-theme\" text=\"dark\">\n  <$button style=\"fill:#8058A5;color:#8058A5;\"\n    tooltip=\"Set theme to dark\"\n  > {{$:/core/images/palette}}\n    <$action-setfield $tiddler=\"$:/plugins/kookma/slider/state/slider-theme\" text=\"dark\"/>\n    <$action-setfield $tiddler=\"$:/plugins/kookma/slider/stylesheet/theme/dark\"  tags=\"$:/tags/Stylesheet\"/>\n    <$action-setfield $tiddler=\"$:/plugins/kookma/slider/stylesheet/theme/light\" tags=\"\"/>\n  </$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/plugins/kookma/slider/state/slider-theme\" text=\"light\">\n  <$button style=\"fill:#8058A5;color:#8058A5;\"\n    tooltip=\"Set theme to light\"\n  > {{$:/core/images/palette}}\n    <$action-setfield $tiddler=\"$:/plugins/kookma/slider/state/slider-theme\" text=\"light\"/>\n    <$action-setfield $tiddler=\"$:/plugins/kookma/slider/stylesheet/theme/light\"  tags=\"$:/tags/Stylesheet\"/>\n    <$action-setfield $tiddler=\"$:/plugins/kookma/slider/stylesheet/theme/dark\" tags=\"\"/>\n  </$button>\n</$reveal>"},"$:/plugins/kookma/slider/viewtemplate/navigation-buttons":{"title":"$:/plugins/kookma/slider/viewtemplate/navigation-buttons","created":"20180726134237633","creator":"Mohammad","list-after":"$:/core/ui/ViewTemplate/body","modified":"20190614033600285","modifier":"Mohammad","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\\define no-more-slides()\n<button class=\"tc-btn-invisible disabled\" disabled>{{$:/plugins/kookma/slider/images/stop.svg}}</button>\n\\end\n\n\\define previous-slide()\n    <$list filter=\"[tag<parent>!tag[slideFooter]before<currentTiddler>]\" \n           emptyMessage=<<no-more-slides>> >\n      <$button class=\"tc-btn-invisible buttons-no-outline\" \n        to={{!!title}} set=\"$:/plugins/kookma/slider/state\" \n        setTo={{!!title}} tooltip={{!!title}} >\n        {{$:/plugins/kookma/slider/images/slide-previous.svg}}\n      </$button>\n    </$list>\n\\end\n\n\\define next-slide()\n    <$list filter=\"[tag<parent>!tag[slideFooter]after<currentTiddler>]\" emptyMessage=<<no-more-slides>>>\n      <$button class=\"tc-btn-invisible buttons-no-outline\" to={{!!title}} \n        set=\"$:/plugins/kookma/slider/state\" \n        setTo={{!!title}} \n        tooltip={{!!title}} >\n        {{$:/plugins/kookma/slider/images/slide-next.svg}}\n      </$button>\n    </$list>\n\\end\n\n\\define slide-list()\n<div class=\"slider-tooltip\"> \n  <$button class=\"tc-btn-invisible buttons-no-outline\">{{$:/plugins/kookma/slider/images/slide-list.svg}}</$button>\n  <div class=\"slider-tooltiptext\">\n    <$macrocall $name=\"trackable-links\" tag=<<parent>> />\n  </div>\n</div>\n\\end\n\n\n\\define show-slidenumber()\n<$count filter='[tag<parent>!tag[slideFooter]allbefore:include<currentTiddler>]'/>\n\\end\n\n\n<$set name=\"parent\" value={{$:/plugins/kookma/slider/state!!current-trail}}>\n\n<$list filter=\"[all[current]tag<parent>!tag[slideFooter]]\"> <!-- only show slide number if it is belong to active trail and not tagged with slideFooter -->\n\n<div class=\"slider-slide-footer\">\n  <div class=\"slider-slide-footer-buttons\">\n    <<previous-slide>>\n    <<next-slide>>\n    <<slide-list>>\n  </div>\n  <div class=\"slider-slide-footer-text\"> <!--show all tiddlers tagged with slideFooter and parent as footer --> \n    <$list filter=\"[title<parent>addsuffix[ - Footer]]\" variable=\"slide-footer\">\n         <$transclude tiddler=<<slide-footer>> field=\"text\" mode=\"inline\"/> \n    </$list>\n  </div>\n  <div class=\"slider-slidenumber\">\n    <<show-slidenumber>>\n  </div>\n</div>\n\n</$list>\n\n</$set>\n\n"},"$:/plugins/kookma/slider/viewtemplate/slider-dashboard":{"title":"$:/plugins/kookma/slider/viewtemplate/slider-dashboard","caption":"Trail Template","created":"20180527182942488","creator":"Mohammad","modified":"20190614040139833","modifier":"Mohammad","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\\define draggable-list-of-slides()\n <div class=\"sliderDashboard-slide-list\">\n    <h2>List of slides</h2>\n    <h4>Drag and drop your slides (tiddlers) here to add them to this trail or reorder the list</h4>\n    <ol>\n      <<list-tagged-draggable \n      tag:\"\"\"$(currentTiddler)$\"\"\"\n      subFilter:\"!tag[slideFooter]\"\n      itemTemplate:\"$:/plugins/kookma/slider/draggable-template\"\n      emptyMessage:\"You don't have any slide in this trail\"\n      >>\n    </ol>\n </div>    \n\\end\n\n\\define show-slider-header()\n  <div class=\"sliderDashboard-header\">\n    <b>Trail caption:</b> <$text text={{!!caption}}/><br>\n    <b>Trail tag:</b> <$text text={{!!title}}/><br>\n    <b>Number of slides:</b> <$count filter=\"[tag<currentTiddler>!tag[slideFooter]]\"></$count><br>\n  </div>\n\\end  \n\n\\define show-slider-footer()\n <div class=\"sliderDashboard-footer\">\n  <b>Slide footer:</b>\n  <$list filter=\"[title[$(currentTiddler)$]addsuffix[ - Footer]]  +[has[title]]\" \n         variable=\"slide-footer\" \n         emptyMessage=<<newSlideFooter \"\"\"$(currentTiddler)$\"\"\">>\n  >       \n    <$link to=<<slide-footer>> tooltip=\"Click to edit\"> <<slide-footer>> </$link>\n    <$transclude tiddler=<<slide-footer>> field=\"text\" mode=\"block\"/> \n  </$list>\n  </div>\n\\end\n\n\\define show-slider-buttons()\n  <div class=\"sliderDashboard-buttons\">\n  <<newSlide param:\"\"\"$(currentTiddler)$\"\"\"\n     caption:\"New slide here\"\n     color:\"#00d\">>\n  <br>\n  <$button style=\"fill:#8058A5;\"\n      set=\"$:/plugins/kookma/slider/state!!current-trail\"\n      setTo={{!!title}}\n    >\n      {{$:/plugins/kookma/slider/images/slide.svg}} Set for presentation\n    </$button> \n  </div>\n\\end\n\n\n<$list filter=\"[all[current]tag[trail]]\"><!--If this tiddler is a trail show dashboard elements-->\n  <<show-slider-header>> <br>\n  <<show-slider-buttons>>\n  <<draggable-list-of-slides>> <br>\n  <<show-slider-footer>>\n</$list>\n"},"$:/plugins/kookma/slider/readme":{"title":"$:/plugins/kookma/slider/readme","created":"20181101134242465","creator":"Mohammad","modified":"20190614115410022","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"!! What ia slider plugin?\nSlider is a small plugin to create an ordered set of tiddlers also called ''Trail''.\n\nA trail can be used to create a sequence of selected contents like step by step tutorial, guided help, lessons and similar.\n\nThe slider plugin user interface contains three sections\n\n# A sidebar tab called ''Trails'' to manage trails\n# A ''dashboard'' for each trail (where trail structure is managed)\n# Tiddlers in a trail, also called ''slides''\n\n!! How to create a trail\nFrom the sibebar tab ''Trails'' click on the ''Create new trail'' button. In the newly opened tiddler:\n\n# Enter a short name for //title//\n#* This title is used as a parent //tag// for all slides in the trail\n# Enter a meaningful caption to describe the subject of trail\n#* Caption is displayed in ''Trails'' sidebar tab, so it used to find and recognize the trail\n# Save the tiddler\n#* After saving the dashboard will be appeared\n#* Using dashboard, manage the trail\n\n!! Add slides to trail\nSlides (tiddlers) can be added to a specified trail in several ways including:\n\n# By clicking on the `New slide` button on the trail dashboard\n# By dragging and droping a tiddler into the `List of slides` on the trail dashboard\n# By opening the `sidebar / Trails` tab and then clicking on the `Add slide to ...` button\n# By creating new tiddler and tagging with the specified trail title\n# By tagging an exisiting tiddler with the specified trail title\n\n!! Create slide footer \n* The slider footer can be used to add a text to all slides in a trail.\n* The slider footer is an ordinary tiddler and can be opned and edited\n* The slider footer has the same title of trail with `-Footer` prefix and tagged with `slideFooter`\n* The footer can be used for date stamp, author and institution name or any other information you like.\n* The footer can be formatted for color, size, font and etc. It can accept all the standard markup.\n\n!! Navigate through slides\n# Set the desired trail as the active trail by opening it and clicking on `Set for presentation`\n# From the //List of slides// click on the first slide or any slide you like to start from\n# One the footer of newly opened slide, click on the next button to navigate to the next slide\n# You can click on the slide-list button to open a local window and see the list of all slides, then you can click on any slide you like and jump to that slide\n# The slide footer also has a //previous// button which lets to navigate to previous slide in the list\n\n\n!! Demo\nThere few trails for demonstration on\nhttps://kookma.github.io/slider/\n\n!! Installation\nSimply drag and drop the below ling into your wiki\n\n* $:/plugins/kookma/slider"},"$:/plugins/kookma/slider/release":{"title":"$:/plugins/kookma/slider/release","created":"20180905085705897","creator":"Mohammad","modified":"20190613174726855","modifier":"Mohammad","type":"text/vnd.tiddlywiki","version":"1.2","text":"!! Revision 1.1 \n<<<\n* Date: [13th Jun 2019]\n* Minor issues fixed\n* sliderTiddler renamed to sliderDashboard\n* Plugin packged using Thirdflow\n<<<\n\n!! Revision 1.0.1 \n<<<\n* Date: [9th Nov 2018]\n* Added background color class\n* Customized buttons in slide footer\n<<<\n\n!! Revision 1.0.0 \n<<<\n* Date: [1th Nov 2018]\n* Initial release\n<<<"},"$:/plugins/kookma/slider/draggable-template":{"title":"$:/plugins/kookma/slider/draggable-template","created":"20180926153157940","creator":"Mohammad","modified":"20190614025201318","modifier":"Mohammad","type":"text/vnd.tiddlywiki","text":"<li><$link to={{!!title}}><$text text={{!!title}}/></$link></li>"},"$:/plugins/kookma/slider/images/slide-list.svg":{"title":"$:/plugins/kookma/slider/images/slide-list.svg","created":"20180810102339886","creator":"Mohammad","modified":"20190613151047194","modifier":"Mohammad","type":"image/svg+xml","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 476.737 476.737\" enable-background=\"new 0 0 476.737 476.737\" xml:space=\"preserve\" width=\"22pt\" height=\"22pt\" fill=\"#C0C0C0\">\n<g>\n<path d=\"M238.369,0C106.726,0,0,106.726,0,238.369c0,131.675,106.726,238.369,238.369,238.369      c131.675,0,238.369-106.694,238.369-238.369C476.737,106.726,370.043,0,238.369,0z M238.369,444.955      c-113.908,0-206.586-92.678-206.586-206.586S124.46,31.782,238.369,31.782s206.586,92.678,206.586,206.586 S352.277,444.955,238.369,444.955z\" />\n<path d=\"M365.499,222.477h-254.26c-8.772,0-15.891,7.119-15.891,15.891      c0,8.74,7.119,15.891,15.891,15.891h254.26c8.74,0,15.891-7.151,15.891-15.891C381.39,229.597,374.239,222.477,365.499,222.477z\" />\n<path d=\"M365.499,127.13h-254.26c-8.772,0-15.891,7.119-15.891,15.891      c0,8.772,7.119,15.891,15.891,15.891h254.26c8.74,0,15.891-7.119,15.891-15.891C381.39,134.249,374.239,127.13,365.499,127.13z\" />\n<path d=\"M365.499,317.825h-254.26c-8.772,0-15.891,7.151-15.891,15.891      c0,8.74,7.119,15.891,15.891,15.891h254.26c8.74,0,15.891-7.151,15.891-15.891C381.39,324.976,374.239,317.825,365.499,317.825z\" />\n</g>\n</svg>\n"},"$:/plugins/kookma/slider/images/slide-next.svg":{"title":"$:/plugins/kookma/slider/images/slide-next.svg","created":"20180810102349659","creator":"Mohammad","modified":"20190613151047192","modifier":"Mohammad","type":"image/svg+xml","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 474.449 474.449\" style=\"enable-background:new 0 0 474.449 474.449;\" xml:space=\"preserve\" width=\"22pt\" height=\"22pt\" fill=\"#C0C0C0\">\n<g><path d=\"M237.24,0C106.233,0,0.016,106.217,0.016,237.224S106.233,474.449,237.24,474.449 s237.193-106.217,237.193-237.224S368.248,0,237.24,0z M237.24,442.666c-113.273,0-205.442-92.169-205.442-205.442 S123.968,31.782,237.24,31.782s205.41,92.169,205.41,205.442C442.682,350.465,350.545,442.666,237.24,442.666z\" />\n<path d=\"M207.714,121.727c-6.198-6.198-16.273-6.198-22.47,0c-6.198,6.198-6.198,16.273,0,22.47      l91.883,91.883l-91.883,91.883c-6.198,6.198-6.198,16.273,0,22.47c6.198,6.198,16.273,6.198,22.47,0l103.071-103.039      c3.146-3.146,4.672-7.246,4.64-11.283c0-4.1-1.494-8.168-4.64-11.283L207.714,121.727z\"/></g>\n</svg>\n"},"$:/plugins/kookma/slider/images/slide-previous.svg":{"title":"$:/plugins/kookma/slider/images/slide-previous.svg","created":"20180810102356807","creator":"Mohammad","modified":"20190613151047189","modifier":"Mohammad","type":"image/svg+xml","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 476.737 476.737\" enable-background=\"new 0 0 476.737 476.737\" xml:space=\"preserve\" width=\"22pt\" height=\"22pt\" fill=\"#C0C0C0\">\n<g>\n<path d=\"M238.369,0C106.726,0,0,106.726,0,238.369c0,131.675,106.726,238.369,238.369,238.369      c131.675,0,238.369-106.694,238.369-238.369C476.737,106.726,370.043,0,238.369,0z M238.369,444.955      c-113.908,0-206.586-92.678-206.586-206.586S124.46,31.782,238.369,31.782s206.586,92.678,206.586,206.586 S352.277,444.955,238.369,444.955z\" />\n<path d=\"M289.221,124.015c-6.198-6.198-16.273-6.198-22.47,0L163.68,227.086      c-3.115,3.115-4.64,7.183-4.64,11.283s1.526,8.168,4.64,11.283L266.75,352.722c6.198,6.166,16.273,6.166,22.47,0      c6.198-6.198,6.198-16.304,0-22.47l-91.883-91.883l91.883-91.883C295.418,140.288,295.418,130.213,289.221,124.015z\"/>\n</g>\n\n</svg>\n"},"$:/plugins/kookma/slider/images/stop.svg":{"title":"$:/plugins/kookma/slider/images/stop.svg","created":"20180810102403934","creator":"Mohammad","modified":"20190613151047185","modifier":"Mohammad","type":"image/svg+xml","text":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 476.737 476.737\" enable-background=\"new 0 0 476.737 476.737\" xml:space=\"preserve\" width=\"22pt\" height=\"22pt\" fill=\"#C0C0C0\">\n<g><path d=\"M238.369,0C106.726,0,0,106.726,0,238.369c0,131.675,106.726,238.369,238.369,238.369      c131.675,0,238.369-106.694,238.369-238.369C476.737,106.726,370.043,0,238.369,0z M238.369,444.955      c-113.908,0-206.586-92.678-206.586-206.586S124.46,31.782,238.369,31.782s206.586,92.678,206.586,206.586 S352.277,444.955,238.369,444.955z\"/>\n<path d=\"M365.499,222.477h-254.26c-8.772,0-15.891,7.119-15.891,15.891      c0,8.74,7.119,15.891,15.891,15.891h254.26c8.74,0,15.891-7.151,15.891-15.891C381.39,229.597,374.239,222.477,365.499,222.477z\"/>\n</g>\n</svg>\n"},"$:/plugins/kookma/slider/images/slide.svg":{"title":"$:/plugins/kookma/slider/images/slide.svg","caption":"Slider Icon","created":"20150613112427442","creator":"Birthe","modified":"20190614122145385","modifier":"Mohammad","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image tc-image-button tc-image-slide-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 412 412\" enable-background=\"new 0 0 512 512\">\n<path id=\"video-4-icon\"\n     d=\"M 193.391,116.334 409.139,73.568 408.994,72.841 394.558,0 31.158,72.035 C 13.07,75.62 0,91.485 0,109.924 0,157.578 0,278.623 0,352.208 0,385.227 26.764,412 59.783,412 l 292.425,0 C 385.23,412 412,385.23 412,352.208 l 0,-235.133 0,-0.741 -218.609,0 z m 151.834,-86.166 41.139,27.529 -51.396,10.214 -41.17,-27.55 51.427,-10.193 z M 243.981,50.236 285.18,77.804 233.786,88.017 192.557,60.429 243.981,50.236 Z M 142.625,70.327 183.882,97.935 132.487,108.148 91.2,80.521 142.625,70.327 Z m -43.855,101.007 35,-35 52.426,0 -35,35 -52.426,0 z m 80.225,170.851 0,-120.841 98.548,60.422 -98.548,60.419 z m 75.533,-170.851 -52.426,0 35,-35 52.426,0 -35,35 z m 103.213,0 -52.426,0 35,-35 52.426,0 -35,35 z\"/>\n</svg>\n"},"$:/plugins/kookma/slider/license":{"title":"$:/plugins/kookma/slider/license","created":"20181101134530634","creator":"Mohammad","modified":"20190613151047182","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"slider distributed under an MIT license.\n\nCopyright (c) 2018-2019 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/slider/macro/modified-toc":{"title":"$:/plugins/kookma/slider/macro/modified-toc","created":"20181103191736109","creator":"Mohammad","modified":"20190614034620798","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"\\define toc-se(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-selective-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] -[[$tag$]] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n        <$macrocall $name=toc-unlinked-selective-expandable-body tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> >\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n<!-- IMPORTANT Note: 11:22, 6th November 2018\nThis is a clone of toc-selective-expandable from TW5.1.17. In the new release the toc macro and specially the exclude attribute has been modified which does not allow exclude tiddlers (say \"-[tag[myTag]]\" and similar). So this clone of toc-selective-expandable (here called toc-se) is used.\n-->\n"},"$:/plugins/kookma/slider/macro/new-slide-footer":{"title":"$:/plugins/kookma/slider/macro/new-slide-footer","caption":"Create a new slide footer","created":"20181004194512056","creator":"Mohammad","modified":"20190613151047178","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define newSlideFooter(parent:\"\", btn-caption:\"New slide footer\", color:\"#8058A5\") \n<$button style=\"color:$color$; fill:$color$; margin-bottom:5px;\">\n{{$:/core/images/new-button}} $btn-caption$\n\n<$action-sendmessage $message=\"tm-new-tiddler\"\n    title=\"\"\"$parent$ - Footer\"\"\"\n    tags=\"slideFooter [[$parent$]]\"\n/>\n</$button>\n\\end"},"$:/plugins/kookma/slider/macro/new-slide-here":{"title":"$:/plugins/kookma/slider/macro/new-slide-here","caption":"Create a new slide here","created":"20180504084439629","creator":"Mohammad","modified":"20190613151047175","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define content()\nfill in the contents ....\n\\end\n\n\\define newSlide(param:\"\", btn-caption:\"New slide\", color:\"#8058A5\") \n<$button style=\"color:$color$; fill:$color$; margin-bottom:5px;\">\n{{$:/core/images/new-button}} $btn-caption$\n\n<$action-sendmessage $message=\"tm-new-tiddler\"\n    title=\"New slide...\"\n    text=<<content>>\n    tags=\"[[$param$]]\"\n/>\n</$button>\n\\end"},"$:/plugins/kookma/slider/macro/trackable-links":{"title":"$:/plugins/kookma/slider/macro/trackable-links","created":"20180729154346545","creator":"Mohammad","modified":"20190613151047171","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define trackable-links(tag:\"\")\n  <ol>\n    <$list filter=\"[tag[$tag$]!tag[slideFooter]]\" variable=\"myTid\">\n      <li>\n        <$button class=\"tc-btn-invisible\" style=\"text-align: left;\"\n          set=\"$:/plugins/kookma/slider/state\" \n          setTo=<<myTid>>\n          >\n            <$view tiddler=<<myTid>> field=\"title\"/>\n            <$action-navigate $to=<<myTid>>/>\n        </$button>\n      </li>\n    </$list>\n  </ol>\n\\end\n"},"$:/plugins/kookma/slider/manager/trails-sidebar":{"title":"$:/plugins/kookma/slider/manager/trails-sidebar","caption":"Trails","created":"20180527184455440","creator":"Mohammad","modified":"20190614085255628","modifier":"Mohammad","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\\define btn-label() Add slide to $(current-trail)$\n\n{{$:/plugins/kookma/slider/manager/new-trail}}{{$:/plugins/kookma/slider/toggle-slider-theme}}\n<$set name=\"current-trail\" value={{$:/plugins/kookma/slider/state!!current-trail}}>\n  <$macrocall $name=\"newSlide\" \n    param=<<current-trail>>\n    btn-caption=<<btn-label>> />\n</$set>\n{{$:/plugins/kookma/slider/manager/trail-list}}\n\n"},"$:/plugins/kookma/slider/manager/new-trail":{"title":"$:/plugins/kookma/slider/manager/new-trail","caption":"Create new slider","created":"20180527185543611","creator":"Mohammad","modified":"20190613154626393","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"<$button tooltip=\"Create new trail\" class=\"tc-btn-visible\" style=\"fill:#8058A5;color:#8058A5;\">\n<$action-sendmessage $message=\"tm-new-tiddler\" caption=\"Set the caption ...\" tags=\"trail\"/>\n{{$:/plugins/kookma/slider/images/slide.svg}}\n</$button>"},"$:/plugins/kookma/slider/manager/trail-list":{"title":"$:/plugins/kookma/slider/manager/trail-list","created":"20181103192144604","creator":"Mohammad","modified":"20190614090728387","modifier":"Mohammad","tags":"","type":"text/vnd.tiddlywiki","text":"<$importvariables filter=\"$:/plugins/kookma/slider/macro/modified-toc\">\n<$scrollable class='slider-trail-list'>\n<div class=\"tc-table-of-contents\">\n  <<toc-se tag:\"trail\" exclude:\"-[tag[slideFooter]]\">>\n</div>\n</$scrollable>\n</$importvariables>\n\n\n"},"$:/plugins/kookma/slider/state":{"title":"$:/plugins/kookma/slider/state","created":"20181025210823564","creator":"Mohammad","current-trail":"Sl-Tutorial","modified":"20190614091109740","modifier":"Mohammad","type":"text/vnd.tiddlywiki","text":"More on Slides"},"$:/plugins/kookma/slider/state/slide-height":{"title":"$:/plugins/kookma/slider/state/slide-height","created":"20181028093955919","creator":"Mohammad","modified":"20190614063856943","modifier":"Mohammad","story-view":"classic","type":"text/vnd.tiddlywiki","text":"normal-height"},"$:/plugins/kookma/slider/state/slider-theme":{"title":"$:/plugins/kookma/slider/state/slider-theme","created":"20181028160441199","creator":"Mohammad","modified":"20190614122154059","modifier":"Mohammad","type":"text/vnd.tiddlywiki","text":"light"}}}
{
    "tiddlers": {
        "$:/plugins/kookma/todolist/history": {
            "title": "$:/plugins/kookma/todolist/history",
            "created": "20210422161257930",
            "modified": "20210422172009323",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "Full change log  https://kookma.github.io/TW-Todolist/#ChangeLog\n\n* ''1.2.2'' -- 2021.04.22 -- updated to Tiddlywiki 5.1.23\n* ''1.2.1'' -- 2020.04.05 -- minor issue in drag and drop fixed\n* ''1.2.0'' -- 2020.04.03 -- new features, item reording using drag and drop\n* ''1.1.0'' -- 2020.03.31 -- bugs fixed, moved to new Thirdflow development platform\n* ''1.0.0'' -- 2019.07.22 -- first stable release\n"
        },
        "$:/plugins/kookma/todolist/images/archive.svg": {
            "title": "$:/plugins/kookma/todolist/images/archive.svg",
            "created": "20190716095419117",
            "modified": "20210422161832677",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-file-archive tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 384 512\"><path d=\"M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/bug.svg": {
            "title": "$:/plugins/kookma/todolist/images/bug.svg",
            "created": "20190714051837328",
            "modified": "20210422161832706",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-bug tc-image-button\" width=\"1em\" height=\"1em\" viewBox=\"0 0 512 512\"><path d=\"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/bullhorn": {
            "title": "$:/plugins/kookma/todolist/images/bullhorn",
            "caption": "bullhorn (Solid)",
            "created": "20190721150354198",
            "modified": "20210422161832714",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-bullhorn tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 576 512\"><path d=\"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/lightbulb": {
            "title": "$:/plugins/kookma/todolist/images/lightbulb",
            "caption": "lightbulb (Regular)",
            "created": "20190721150413950",
            "modified": "20210422161832724",
            "tags": "$:/tags/Image [[Font Awesome 5]] Regular",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-lightbulb tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 352 512\"><path d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/list-alt.svg": {
            "title": "$:/plugins/kookma/todolist/images/list-alt.svg",
            "created": "20190716095433587",
            "modified": "20210422161832729",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-list-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 512 512\"><path d=\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/share-alt": {
            "title": "$:/plugins/kookma/todolist/images/share-alt",
            "caption": "share-alt (Solid)",
            "created": "20190721150321438",
            "modified": "20210422161832733",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-share-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 448 512\"><path d=\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/times.svg": {
            "title": "$:/plugins/kookma/todolist/images/times.svg",
            "created": "20190716033811299",
            "modified": "20210422161832743",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-times tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 352 512\"><path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/images/wrench.svg": {
            "title": "$:/plugins/kookma/todolist/images/wrench.svg",
            "created": "20190714052925874",
            "modified": "20210422161832751",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg class=\"tc-image-wrench tc-image-button\" width=\"1em\" height=\"1em\" viewBox=\"0 0 512 512\"><path d=\"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"/></svg>"
        },
        "$:/plugins/kookma/todolist/license": {
            "title": "$:/plugins/kookma/todolist/license",
            "created": "20210422161257930",
            "modified": "20210422161301969",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "Distributed under an MIT license.\n\nCopyright (c) 2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"
        },
        "$:/plugins/kookma/todolist/macros/add-remove-list-item": {
            "title": "$:/plugins/kookma/todolist/macros/add-remove-list-item",
            "created": "20190718081952856",
            "modified": "20210422161832760",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-remove-item-from-list(targetTiddler, item)\n<$action-listops $tiddler=<<__targetTiddler__>>    $field=\"list\" $subfilter=\"+[remove[$item$]]\"/>\n\\end\n\n\\define todolist-add-item-to-list(targetTiddler, item)\n<$action-listops $tiddler=<<__targetTiddler__>> $field=\"list\" $subfilter=\"[[$item$]]+[putfirst[]]\"/>\n\\end\n"
        },
        "$:/plugins/kookma/todolist/macros/add-task": {
            "title": "$:/plugins/kookma/todolist/macros/add-task",
            "created": "20190715170540482",
            "modified": "20210422161832767",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-input-task()\n<$keyboard key=\"escape\" actions=<<todolist-cancel-action>>   >\n<$keyboard key=\"enter\"  actions=<<todolist-add-task-action>> >\n<$edit-text \n tiddler=<<stateTiddler>> \n index=\"itemtext\" \n tag=\"input\"\n class=\"kk-todolist-input-textbox\"\n placeholder=\"add new item\"\n default=\"\" minHeight=\"1em\" focus=\"yes\"\n />\n</$keyboard> \n</$keyboard> \n\\end\n \n\\define todolist-add-task()\n<$button class=\"tc-btn-invisible\" tooltip=\"Add new item\">\n\t{{$:/core/images/new-button}}\n\t<<todolist-add-task-action>>\n</$button>\n\\end\n\n\\define todolist-add-task-action()\n  <$list filter=\"[<stateTiddler>getindex[itemtext]!is[blank]]\" variable=ignor>\n\t<$set name=item value=<<now \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\">> >\n\t<$action-setfield \n\t $tiddler=<<taskTiddler>>\n\t $index=<<item>>\n\t $value={{{ [<stateTiddler>getindex[itemtext]] }}}\n\t/>\n\t<$action-setfield $tiddler=<<statusTiddler>> $index=<<item>> $value=\"undone\"\t/>\n\t<$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> $value=\"none\"\t/>\n  <$macrocall $name=\"todolist-add-item-to-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n\t</$set>\n\t<$action-setfield $tiddler=<<stateTiddler>> $index=\"itemtext\" $value=\"\"/>\n\t</$list>\n\\end\n\n\\define todolist-cancel-action()\n <$action-setfield $tiddler=<<stateTiddler>> $index=\"itemtext\" $value=\"\"/>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/archive-operations": {
            "title": "$:/plugins/kookma/todolist/macros/archive-operations",
            "created": "20190719141644069",
            "modified": "20210422161832777",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-list-archived-items(nameSpace:\"\")\n<$vars\n archiveTiddler=\"\"\"$nameSpace$/archive\"\"\"\n priorityTiddler=\"\"\"$nameSpace$/priority\"\"\"\n>\n<$list filter=\"[<archiveTiddler>indexes[]!sort[]]\" variable=\"item\">\n<div class=\"kk-todolist-row\">\n  <div class=\"kk-todolist-delete\"><<todolist-delete-item>></div>\n\t<div class=\"kk-todolist-priority\"><<todolist-show-priority-level>></div>\n  <div class=\"kk-todolist-desc\">\n\t<span class=\"kk-todolist-date\">\n\t<$view tiddler=<<item>> field=\"title\" format=\"date\" template=\"mmm 0DD, YYYY 0hh:0mm\"/></span>\n\t<$transclude tiddler=<<archiveTiddler>> index=<<item>>/>\n\t</div>\n</div>\n</$list>\n</$vars>\n\\end\n\n\\define todolist-show-priority-level()\n<$button class=\"tc-btn-invisible\" tooltip=\"Prority of archived items cannot be changed\">\n<$macrocall $name=\"disp-priority-badge\" color={{{[<priorityTiddler>getindex<item>]}}} />\n</$button>\n\\end\n\n\\define todolist-delete-item()\n<$button class=\"tc-btn-invisible\">\n{{$:/plugins/kookma/todolist/images/times.svg}}\n<$action-setfield $tiddler=<<archiveTiddler>>  $index=<<item>> />\n<$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> />\n</$button>\n\\end\n\n\\define todolist-empty-archived-tiddler(nameSpace)\n<$vars\n archiveTiddler=\"\"\"$nameSpace$/archive\"\"\"\n priorityTiddler=\"\"\"$nameSpace$/priority\"\"\"\n>\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\"> {{$:/core/images/delete-button}} Delete archive\n<$list filter=\"[<archiveTiddler>indexes[]!sort[]]\" variable=\"item\">\n <$action-setfield $tiddler=<<archiveTiddler>>  $index=<<item>> />\n <$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> />\n</$list>\n</$button>\n</$vars>\n\\end\t "
        },
        "$:/plugins/kookma/todolist/macros/bulk-operation": {
            "title": "$:/plugins/kookma/todolist/macros/bulk-operation",
            "created": "20190716083959795",
            "modified": "20210422161832786",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-all-tasks-unfinished()\n<span style=\"font-size:smaller\">\n<$list filter=\"[<taskTiddler>indexes[]limit[1]]\" emptyMessage=\"You're all done\" variable=ignore>\n<$count filter=\"[<taskTiddler>indexes[]]\"/> ITEMS\n</$list>\n</span>\n\\end\n\n\\define todolist-mark-all-button()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"markall\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Mark all items as done\" setTitle=<<stateTiddler>> setIndex=\"markall\" setTo=\"yes\">\n{{$:/core/images/save-button}}\n<<tdl-done-all>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"markall\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Mark all items as undone\" setTitle=<<stateTiddler>> setIndex=\"markall\" setTo=\"no\">\n{{$:/core/images/refresh-button}}\n<<tdl-undone-all>>\n</$button>\n</$reveal>\n\\end\n\n\\define tdl-done-all()\n<$list filter=\"[<taskTiddler>indexes[]]\" variable=\"item\">\n<$action-setfield \n$tiddler=<<doneTiddler>>\n$index=<<item>>\n$value={{{ [<taskTiddler>getindex<item>] }}}\n/>\n<$action-setfield \n$tiddler=<<statusTiddler>>\n$index=<<item>>\n$value=\"done\"\n/>\n<$macrocall $name=\"todolist-remove-item-from-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<taskTiddler>> $index=<<item>> />\n</$list>\n\\end\n\n\\define tdl-undone-all()\n<$list filter=\"[<doneTiddler>indexes[]]\" variable=\"item\">\n<$action-setfield \n$tiddler=<<taskTiddler>>\n$index=<<item>>\n$value={{{ [<doneTiddler>getindex<item>] }}}\n/>\n<$action-setfield \n$tiddler=<<statusTiddler>>\n$index=<<item>>\n$value=\"undone\"\n/>\n<$macrocall $name=\"todolist-add-item-to-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<doneTiddler>> $index=<<item>> />\n</$list>\n\\end\n\n\n\\define todolist-archive-completed-items()\n<$button class=\"tc-btn-invisible\" tooltip=\"Archive done items\">\n{{$:/plugins/kookma/todolist/images/archive.svg}}\n<$list filter=\"[<doneTiddler>indexes[]]\" variable=\"item\">\n<$action-setfield \n$tiddler=<<archiveTiddler>>\n$index=<<item>>\n$value={{{ [<doneTiddler>getindex<item>] }}}\n/>\n<$action-setfield $tiddler=<<statusTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<doneTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<stateTiddler>> $index=\"markall\" $value=\"no\"/>\n</$list>\n</$button>\n\\end\n\n\\define todolist-display-archived-items()\n<$button class=\"tc-btn-invisible\" tooltip=\"Display archived items\"> {{$:/plugins/kookma/todolist/images/list-alt.svg}}\n\n<$action-setfield  \n$tiddler=\"$:/plugins/kookma/todolist/template/archive-list\"\ntitle=<<displayArchivedTiddler>>    />  \n<$action-setfield  $tiddler=<<displayArchivedTiddler>>\n$field=\"td-namespace\" $value=<<nameSpace>>  />\n\n<$action-navigate $to=<<displayArchivedTiddler>> $scroll=\"yes\"/>\n</$button>\n\\end\t"
        },
        "$:/plugins/kookma/todolist/macros/category": {
            "title": "$:/plugins/kookma/todolist/macros/category",
            "created": "20190714040123984",
            "modified": "20210422161832796",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define high(text) \n<span style=\"padding-left:3px;color:#cd5360;\">$text$</span>\n\\end\n\n\\define normal(text) \n<span style=\"color:#286da8;\">$text$</span>\n\\end\n\n\\define low(text) \n<span style=\"color:#b37d4e;\">$text$</span>\n\\end\n\n\\define fixme(text)\n<span class=\"kk-todolist-category-c1\">{{$:/plugins/kookma/todolist/images/wrench.svg}} $text$</span>\n\\end\n\n\\define bug(text)\n<span class=\"kk-todolist-category-c1\">{{$:/plugins/kookma/todolist/images/bug.svg}} $text$</span>\n\\end\n\n\\define horn(text)\n<span class=\"kk-todolist-category-c2\">{{$:/plugins/kookma/todolist/images/bullhorn}} $text$</span>\n\\end\n\n\\define tip(text)\n<span class=\"kk-todolist-category-c2\">{{$:/plugins/kookma/todolist/images/lightbulb}} $text$</span>\n\\end\n\n\\define share(text)\n<span class=\"kk-todolist-category-c2\">{{$:/plugins/kookma/todolist/images/share-alt}} $text$</span>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/confirm-delete": {
            "title": "$:/plugins/kookma/todolist/macros/confirm-delete",
            "created": "20190721041511697",
            "modified": "20210422161832805",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-confirm-delete(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\", \ncountFilter:\"\", \nactionMacro:\"\")\n\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\" popup=<<qualify \"\"\"$stateTiddler$\"\"\">> > {{$:/core/images/delete-button}} $btnLabel$\n</$button>\n\n<$reveal state=<<qualify \"\"\"$stateTiddler$\"\"\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=<<__countFilter__>> />\"\"\">\n$confirmMessage$ <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\"\nactions=<<__actionMacro__>> > \n{{$:/core/images/delete-button}} Delete all?\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/delete-task": {
            "title": "$:/plugins/kookma/todolist/macros/delete-task",
            "created": "20190715170610146",
            "modified": "20210422161832810",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-delete-task(dataTiddler)\n<$button class=\"tc-btn-invisible\">\n{{$:/plugins/kookma/todolist/images/times.svg}}\n<$action-setfield $tiddler=<<__dataTiddler__>> $index=<<item>> />\n<$action-setfield $tiddler=<<statusTiddler>> $index=<<item>> />\n<$action-setfield $tiddler=<<priorityTiddler>> $index=<<item>> />\n<!-- delete item from list field of task tiddler if it is an undone task! -->\n<$reveal type=\"match\" text=<<__dataTiddler__>> default=<<taskTiddler>> >\n<$macrocall $name=\"todolist-remove-item-from-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n</$reveal>\n</$button>\n\\end\n"
        },
        "$:/plugins/kookma/todolist/macros/done-task": {
            "title": "$:/plugins/kookma/todolist/macros/done-task",
            "created": "20190715170633034",
            "modified": "20210422161832824",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-done-task()\n<$checkbox \n tiddler=<<statusTiddler>> \n index=<<item>> \n checked=\"done\" \n unchecked=\"undone\" \n default=\"undone\"\n actions=<<tdl-done-actions>>\n>\n</$checkbox>\n\\end\n\n\\define tdl-done-actions()\n <$action-setfield \n  $tiddler=<<doneTiddler>>\n  $index=<<item>>\n  $value={{{ [<taskTiddler>getindex<item>] }}}\n  />\n<$macrocall $name=\"todolist-remove-item-from-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<taskTiddler>> $index=<<item>> />\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/draggable-list": {
            "title": "$:/plugins/kookma/todolist/macros/draggable-list",
            "created": "20190718070116654",
            "modified": "20210422161832831",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define draggable-list(targetTiddler)\n\\whitespace trim\n<$vars targetTiddler=<<__targetTiddler__>> >\n<span class=\"kk-todolist-draggable-list\">\n<$list filter=\"[list<targetTiddler>]\" variable=\"item\">\n<$droppable actions=<<droppable-actions>>>\n    <div class=\"tc-droppable-placeholder kk-todolist-placeholder\"></div> \n    <$draggable tiddler=<<item>> >\n    <$transclude tiddler=\"$:/plugins/kookma/todolist/template/undone-task\" field=\"text\"/>\n    </$draggable>\n</$droppable>\n</$list>\n<<disp-empty-placeholder>>\n</span>\n</$vars>\n\\end\n\n\\define droppable-actions()\n<!-- the $list checks to prvents drag items not listed in this Todolist -->\n<$list filter=\"[<targetTiddler>contains<actionTiddler>]\" variable=ignore>\n<$action-listops $tiddler=<<targetTiddler>> $field=\"list\" $subfilter=\"+[insertbefore:item<actionTiddler>]\"/>\n</$list>\n\\end\n\n\\define xxdisp-empty-placeholder()\n<$tiddler tiddler=\"\"><!-- an empty place holder-->\n<$droppable actions=<<droppable-actions>> tag=\"div\">\n<div style=\"height:0.5em;\"/>\n<div class=\"tc-droppable-placeholder kk-todolist-placeholder\">&nbsp;</div>\n</$droppable>\n</$tiddler>\n\\end\n\n\n\\define disp-empty-placeholder()\n<$tiddler tiddler=\"\">\n<$droppable actions=<<droppable-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder kk-todolist-placeholder\">\n&nbsp;\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/explore-internalTids": {
            "title": "$:/plugins/kookma/todolist/macros/explore-internalTids",
            "created": "20190719143452217",
            "modified": "20210422161832839",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-fullbaseName() $(td-basePath)$$(baseName)$\n\n\\define todolist-explore-data-tiddlers()\n\n><b>Number of internal tiddlers found: <$count filter=\"[all[tiddlers+shadows]prefix<td-basePath>]\" /></b><br>\n><$macrocall $name=\"todolist-delete-all-tids\" filter=<<dataTids>> />\n\n<h2> Todo lists</h2>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<td-basePath>splitbefore[/]removesuffix[/]sort[]]\" variable=\"baseName\">\n\n<$set name=bsFilter value=\"[prefix<todolist-fullbaseName>sort[]]\">\n<h3><<todolist-delete-all-tids-baseName>> <<baseName>></h3>\n<blockquote>\n<$list filter=<<bsFilter>> variable=\"internalTid\" emptyMessage=\"//No internal data tiddlers is found!//\">\n<div class=\"kk-todolist-row\">\n<div class=\"kk-todolist-delete\"><$macrocall $name=\"todolist-delete-single-iternalTid\" /></div>\n<div class=\"kk-todolist-desc\"><$link to=<<internalTid>>><$view tiddler=<<internalTid>> field=\"title\"/></$link></div>\n</div>\n</$list>\n</blockquote>\n</$set>\n\n</$list>\n\n\\end\n\n\n\\define todolist-delete-single-iternalTid()\n<$button class=\"tc-btn-invisible tc-tiddlylink\">\n\t{{$:/plugins/kookma/todolist/images/times.svg}}\n\t<$action-deletetiddler $tiddler=<<internalTid>> />\n</$button>\n\\end\n\n\\define todolist-delete-all-tids-baseName()\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Delete all data tiddlers in this Todo list?\"> {{$:/core/images/delete-button}}\n <$action-deletetiddler $filter=<<bsFilter>> />\n</$button>\n\\end\n\n\\define todolist-delete-all-tids()\n<!-- uses confirm delete macro to notify user when delete all internal tiddlers -->\n<$macrocall $name=\"todolist-confirm-delete\" \nbtnLabel=\"Delete all interal tiddlers?\"\nstateTiddler=\"temp\"\ncountFilter=\"[all[tiddlers+shadows]prefix<td-basePath>]\"\nactionMacro=<<action-empty-archive>>\n/>\n\\end\n\\define action-empty-archive()\n<$action-deletetiddler $filter=\"[all[tiddlers+shadows]prefix<td-basePath>]\" />\n\\end\t \n"
        },
        "$:/plugins/kookma/todolist/macros/nondraggable-list": {
            "title": "$:/plugins/kookma/todolist/macros/nondraggable-list",
            "created": "20200403105715811",
            "modified": "20210422161832846",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define disp-list-in-edit-mode()\n<$list filter=\"[list<taskTiddler>]\" variable=\"item\">\n <$transclude tiddler=\"$:/plugins/kookma/todolist/template/undone-task\" field=\"text\"/>\n</$list>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/options": {
            "title": "$:/plugins/kookma/todolist/macros/options",
            "created": "20190716075847899",
            "modified": "20210422161832854",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-options-button()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"option\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Show options\" setTitle=<<stateTiddler>> setIndex=\"option\" setTo=\"yes\">\n{{$:/core/images/options-button}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"option\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Hide options\" setTitle=<<stateTiddler>> setIndex=\"option\" setTo=\"no\">\n{{$:/core/images/options-button}}\n</$button>\n</$reveal>\n\\end\n\n\\define todolist-options-content()\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"option\" text=\"yes\">\n<<todolist-mark-all-button>> <<todolist-archive-completed-items>> <<todolist-display-archived-items>> <<todolist-toggle-timestamp>>&nbsp;<<todolist-all-tasks-unfinished>>\n</$reveal>\n\\end\n\n"
        },
        "$:/plugins/kookma/todolist/macros/priority": {
            "title": "$:/plugins/kookma/todolist/macros/priority",
            "created": "20190718170817837",
            "modified": "20210422161832861",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define categoryColors()\n<$list filter=\"[[$:/plugins/kookma/todolist/settings/colors]indexes[]sortby{$:/plugins/kookma/todolist/settings/colors!!list}]\" variable=color>\n<<color>>\n</$list>\n\\end\n\n\\define todolist-set-priority()\n<$wikify name=colors text=<<categoryColors>> >\n<$macrocall $name=\"todolist-cycle-color\" arraySet=<<colors>> stateTiddler=<<priorityTiddler>> stateIndex=<<item>> />\n</$wikify>\n\\end\n\n\\define disp-priority-badge(color)\n<svg width=\"12\" height=\"12\" >\n<circle cx=\"6\" cy=\"6\" r=\"5\"  stroke=\"grey\" fill=\"$color$\" />\n</svg>\n\\end\n\n\n\\define todolist-cycle-color(arraySet:\"\", stateTiddler:\"\", stateIndex:\"txt\")\n<$vars array=<<__arraySet__>>  currentColor={{{[<__stateTiddler__>getindex<__stateIndex__>]}}} >\n<$button class=\"tc-btn-invisible\" tooltip=\"Set priority level\">\n    <$macrocall $name=\"disp-priority-badge\" color=<<currentColor>> />\n    <$set\n      filter='[enlist<array>after<currentColor>]'\n      name=NextItem\n      emptyValue={{{[enlist<array>first[]]}}}\n    >\n    <$action-setfield\n     $tiddler=<<__stateTiddler__>>\n     $index=<<__stateIndex__>>\n     $value=<<NextItem>> />\n      </$set>\n  </$button>\n</$vars>\t\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/show-task": {
            "title": "$:/plugins/kookma/todolist/macros/show-task",
            "created": "20190715170652239",
            "modified": "20210422161832868",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-show-task()\n<$keyboard key=\"enter\" actions=<<tdl-kbd-action>> >\n<$list filter=\"[<stateTiddler>getindex[editview]match[edit]]\" \n  emptyMessage=\"\"\"<$macrocall $name=\"view-task\" dataTiddler=<<taskTiddler>> />\"\"\" >\n<$edit-text \n tiddler=<<taskTiddler>>\n index=<<item>>\n tag=input\n class=\"kk-todolist-input-textbox\"\n />\n</$list>\n</$keyboard>\n\\end\n\n\\define tdl-kbd-action()\n<$action-setfield $tiddler=<<stateTiddler>> $index=\"editview\" $value=\"view\" />\n\\end\n\n\\define view-task(dataTiddler)\n<$transclude tiddler=<<__dataTiddler__>> index=<<item>>/>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"timestamp\" text=\"show\">\n<span class=\"kk-todolist-date\"> <$view tiddler=<<item>> field=\"title\" format=\"date\" template=\"mmm 0DD, YYYY 0hh:0mm\"/></span>\n</$reveal>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/toggle-edit-button": {
            "title": "$:/plugins/kookma/todolist/macros/toggle-edit-button",
            "created": "20190715171733677",
            "modified": "20210422161832875",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-toggle-edit-button()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"editview\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"editview\" setTo=\"edit\" tooltip=\"Edit items\">\n{{$:/core/images/edit-button}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"editview\"  text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"editview\" setTo=\"view\" tooltip=\"Save items\">\n{{$:/core/images/done-button}}\n</$button>\n</$reveal>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/toggle-timestamp": {
            "title": "$:/plugins/kookma/todolist/macros/toggle-timestamp",
            "created": "20190722034557852",
            "modified": "20210422161832879",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-toggle-timestamp()\n<$reveal type=\"nomatch\" stateTitle=<<stateTiddler>> stateIndex=\"timestamp\" text=\"show\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"timestamp\" setTo=\"show\" tooltip=\"Show timestamp\">\n{{$:/core/images/timestamp-on}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<stateTiddler>> stateIndex=\"timestamp\"  text=\"show\">\n<$button class=\"tc-btn-invisible\" setTitle=<<stateTiddler>> setIndex=\"timestamp\" setTo=\"hide\" tooltip=\"Hide timestamp\">\n{{$:/core/images/timestamp-off}}\n</$button>\n</$reveal>\n\\end"
        },
        "$:/plugins/kookma/todolist/macros/ui": {
            "title": "$:/plugins/kookma/todolist/macros/ui",
            "created": "20190715170739310",
            "modified": "20210422161832884",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define td-basePath() $:/todolist/data/\n\n\\define todolist-ui(caption:\"A plain todolist\", width:\"100%\" base:\"base\")\n\\import [all[tiddlers+shadows]tag[$:/tags/Todolist/Macro]!has[draft.of]]\n\\whitespace trim\n\n<$vars \n nameSpace=      \"$(td-basePath)$$base$\"\n stateTiddler=   \"$(td-basePath)$$base$/state\"\n taskTiddler=    \"$(td-basePath)$$base$/tasks\"\n doneTiddler=    \"$(td-basePath)$$base$/done\"\n statusTiddler=  \"$(td-basePath)$$base$/status\"\n priorityTiddler=\"$(td-basePath)$$base$/priority\"\n archiveTiddler= \"$(td-basePath)$$base$/archive\"\t\n displayArchivedTiddler=\"Todolist - Archived Items - $base$\"\n>\t\n<div class=\"kk-todolist-ui\" style=\"max-width:$width$;\">\n\n$caption$\n\n<div class=\"kk-todolist-header-ui\">\n<div class=\"kk-todolist-header-textbox\"><<todolist-input-task>></div>\n<div><<todolist-add-task>></div>\n<div><<todolist-toggle-edit-button>></div>\n<div><<todolist-options-button>></div>\n</div>\n<<todolist-options-content>>\n<!--\n<$list filter=\"[<taskTiddler>indexes[]!sort[]]\" variable=\"item\">\n<$transclude tiddler=\"$:/plugins/kookma/todolist/template/undone-task\" field=\"text\" />\n</$list>\n-->\n\n<!-- display undone items -->\n<$list filter=\"[<stateTiddler>getindex[editview]match[edit]]\" variable=ignore \n   emptyMessage=\"\"\"<$macrocall $name=\"draggable-list\" targetTiddler=<<taskTiddler>> />\"\"\">\n\t <<disp-list-in-edit-mode>>\n</$list>\n\n<div style=\"height:0.2em\"/>\n\n<!-- display done items -->\n<$list filter=\"[<doneTiddler>indexes[]!nsort[]]\" variable=\"item\">\n<$transclude tiddler=\"$:/plugins/kookma/todolist/template/done-task\" field=\"text\" />\n</$list>\n</div>\n</$vars>\n\\end\n"
        },
        "$:/plugins/kookma/todolist/macros/undone-task": {
            "title": "$:/plugins/kookma/todolist/macros/undone-task",
            "created": "20190715190405259",
            "modified": "20210422161832892",
            "tags": "$:/tags/Todolist/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define todolist-undone-task()\n<$checkbox \ntiddler=<<statusTiddler>> \nindex=<<item>> \nchecked=\"done\" \nunchecked=\"undone\" \ndefault=\"undone\"\nuncheckactions=<<tdl-undone-actions>>\n>\n</$checkbox>\n\\end\n\n\\define tdl-undone-actions()\n<$action-setfield \n$tiddler=<<taskTiddler>>\n$index=<<item>>\n$value={{{ [<doneTiddler>getindex<item>] }}}\n/><\n<$macrocall $name=\"todolist-add-item-to-list\" targetTiddler=<<taskTiddler>> item=<<item>> />\n<$action-setfield $tiddler=<<doneTiddler>> $index=<<item>> />\n\\end\n"
        },
        "$:/plugins/kookma/todolist/readme": {
            "title": "$:/plugins/kookma/todolist/readme",
            "created": "20210422161257931",
            "modified": "20210422170749229",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "; Todolist\nTodolist is a small pure wikitext plugin, contain all of the tasks that you need to complete on a given day. Todolist gives you the confidence that everything’s organized and accounted for, so you can make progress on the things that are important to you.\n\nYou can also make to-dos for major tasks like a project, a work assignment or an overall goal. Therefore, the overall purpose of creating a to-do is to remember tasks and prioritize them.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Todolist/\n* Code: https://github.com/kookma/TW-Todolist\n"
        },
        "$:/plugins/kookma/todolist/settings/colors": {
            "title": "$:/plugins/kookma/todolist/settings/colors",
            "text": "limegreen:50\nyellow: 70\norange: 80\nred: 100\npink: 90\nturquoise:40\ndodgerblue:30\nnone:10",
            "type": "application/x-tiddler-dictionary",
            "created": "20200402092725933",
            "list": "limegreen yellow orange red pink turquoise dodgerblue none",
            "modified": "20210422161832899",
            "tags": ""
        },
        "$:/plugins/kookma/todolist/settings/internals": {
            "title": "$:/plugins/kookma/todolist/settings/internals",
            "caption": "Todolist",
            "created": "20190716171918410",
            "modified": "20210422161832904",
            "tags": "$:/tags/ControlPanel/SettingsTab",
            "type": "text/vnd.tiddlywiki",
            "text": "\\import $:/plugins/kookma/todolist/macros/explore-internalTids\n\n!! Explore Todolist internal tiddlers\n<<<\nTodolist plugin uses some internal data tiddlers to create and manage todo list. Each todolist uses several data tiddlers. It is recommended after deleting a todolist, delete all data tiddlers which are not in use.\n<<<\n\n<<todolist-explore-data-tiddlers>>\n\n\n"
        },
        "$:/plugins/kookma/todolist/styles/drag-drop": {
            "title": "$:/plugins/kookma/todolist/styles/drag-drop",
            "text": "/*  drag and drop elements */\n.kk-todolist-placeholder { \n\tposition:relative; \n\theight:0; \t\n\tborder:0 !important; \n\tborder-bottom:1px dotted grey !important; \n}\n\n.kk-todolist-draggable-list .tc-draggable  { cursor: default !important; }\n",
            "created": "20200402192425421",
            "modified": "20210422161832909",
            "tags": "$:/tags/Stylesheet",
            "type": "text/css"
        },
        "$:/plugins/kookma/todolist/styles/main.css": {
            "title": "$:/plugins/kookma/todolist/styles/main.css",
            "text": "/* Todolist main ui */\n.kk-todolist-ui{\n\tmin-width:320px; /* controls the minimum width of whole ui */\n}\n\n.kk-todolist-ui svg{\n\tfill:#aaaaaa;\n}\n\n\n.kk-todolist-ui button:hover svg {\n\tfill: #888888; \n}\n\n\n/* Todolist header ui */\n\n.kk-todolist-header-ui{\n\tdisplay: flex;\n\twidth: 100%;\n}\n.kk-todolist-header-ui > div{\n\tmargin: 2px;\n\tflex-grow:0;\t\n}\n.kk-todolist-header-ui .kk-todolist-header-textbox{\n\tflex-grow:1;\t\n}\n\n/* Todolist items ui */\n.kk-todolist-row{\n\tdisplay: flex;\t\n\twidth: 100%; /* for larg screen width> 960px*/\n\tflex-wrap: wrap;\n}\n\n.kk-todolist-row .kk-todolist-done,\n.kk-todolist-row .kk-todolist-priority,\n.kk-todolist-row .kk-todolist-delete {\n\tflex-grow:0; width:15px;\n}\n\n.kk-todolist-row .kk-todolist-desc{\n\tflex-grow:1; \n\twidth: calc(100% - 50px); \n\tpadding-left: 10px;\n\tpadding-right: 10px;\n}\n.kk-todolist-row .kk-todolist-delete {\n\topacity: 0.3;\n}\n\n.kk-todolist-row .kk-todolist-priority{\n\tmargin-right:5px;\n}\n.kk-todolist-row:hover {\n\tbackground-color: #f6f6f6;\n}\n.kk-todolist-row:hover .kk-todolist-delete {\n\topacity: 1;\n}",
            "created": "20190716040116074",
            "modified": "20210422161832918",
            "tags": "$:/tags/Stylesheet",
            "type": "text/css"
        },
        "$:/plugins/kookma/todolist/styles/other.css": {
            "title": "$:/plugins/kookma/todolist/styles/other.css",
            "text": "/* completed item */\n\n.kk-todolist-item-done {\n\ttext-decoration: red line-through;\n\tfont-style: italic;\n}\n\n/* inputbox for add-task */\n.kk-todolist-input-textbox {\n\twidth:100%;\n\tpadding-left: 5px;\n\tborder: none;\n\tborder-bottom: 1px dotted grey;\n}\n\n.kk-todolist-input-textbox:focus {\n\toutline: none;\n\tborder-bottom: 1px solid #5778d8;\n\tbackground: transparent;\n}\n\n/* item timestamp */\n.kk-todolist-date {\n\tfont-size:0.8em;\n\tcolor:#c0c0c0;\n}\n\n/* Item categories */\n.kk-todolist-category-c1,\n.kk-todolist-category-c2 {\n\tpadding-right:3px;\n}\n\n.kk-todolist-category-c1 svg, \n.kk-todolist-category-c2 svg  {\n\topacity:0.70;\n\tvertical-align: middle;\n\twidth: 1em;\n\theight: 1em;\n}\n\n.kk-todolist-category-c1 svg{\n\tfill:#8B0000;\n}\n\n.kk-todolist-category-c2 svg{\n\tfill:#006400;\n}",
            "created": "20190715171940902",
            "modified": "20210422161832928",
            "tags": "$:/tags/Stylesheet",
            "type": "text/css"
        },
        "$:/plugins/kookma/todolist/template/archive-list": {
            "title": "$:/plugins/kookma/todolist/template/archive-list",
            "created": "20190716084402662",
            "modified": "20210422161832936",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "\\import $:/plugins/kookma/todolist/macros/archive-operations\n\\import $:/plugins/kookma/todolist/macros/priority\n\n!! Archive of completed (done) items\n\n<$macrocall $name=\"todolist-empty-archived-tiddler\" nameSpace={{!!td-namespace}} />\n\n> <$macrocall $name=\"todolist-list-archived-items\" nameSpace={{!!td-namespace}} />\n\n"
        },
        "$:/plugins/kookma/todolist/template/done-task": {
            "title": "$:/plugins/kookma/todolist/template/done-task",
            "created": "20200402102928801",
            "modified": "20210422161832942",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<div class=\"kk-todolist-row\">\n  <div class=\"kk-todolist-done\"><<todolist-undone-task>></div>\n  <div class=\"kk-todolist-desc\"><span class=\"kk-todolist-item-done\">\n\t<$macrocall $name=\"view-task\" dataTiddler=<<doneTiddler>> /></span></div>\n\t<div class=\"kk-todolist-priority\"><<todolist-set-priority>></div>\n  <div class=\"kk-todolist-delete\"><$macrocall $name=\"todolist-delete-task\" dataTiddler=<<doneTiddler>>/></div>\n</div>\n"
        },
        "$:/plugins/kookma/todolist/template/undone-task": {
            "title": "$:/plugins/kookma/todolist/template/undone-task",
            "created": "20200402103007259",
            "modified": "20210422161832949",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "<div class=\"kk-todolist-row\">\n\t<div class=\"kk-todolist-done\"><<todolist-done-task>></div>\n\t<div class=\"kk-todolist-desc\"><<todolist-show-task>></div>\n\t<div class=\"kk-todolist-priority\"><<todolist-set-priority>></div>\n\t<div class=\"kk-todolist-delete\"><$macrocall $name=\"todolist-delete-task\" dataTiddler=<<taskTiddler>>/></div>\n</div>"
        }
    }
}
\define high(text) 
<span style="padding-left:3px;color:#cd5360;">$text$</span>
\end

\define normal(text) 
<span style="color:#286da8;">$text$</span>
\end

\define low(text) 
<span style="color:#b37d4e;">$text$</span>
\end

\define fixme(text)
<span class="kk-todolist-category-c1">{{$:/plugins/kookma/todolist/images/wrench.svg}} $text$</span>
\end

\define bug(text)
<span class="kk-todolist-category-c1">{{$:/plugins/kookma/todolist/images/bug.svg}} $text$</span>
\end

\define horn(text)
<span class="kk-todolist-category-c2">{{$:/plugins/kookma/todolist/images/bullhorn}} $text$</span>
\end

\define tip(text)
<span class="kk-todolist-category-c2">{{$:/plugins/kookma/todolist/images/lightbulb}} $text$</span>
\end

\define share(text)
<span class="kk-todolist-category-c2">{{$:/plugins/kookma/todolist/images/share-alt}} $text$</span>
\end

\define soc(text) 
<span style="color:yellow;">Sociaal: $text$</span>
\end

\define bst(text) 
<span style="color:#91a5ff;">Bestuur: $text$</span>
\end

\define bes(text) 
<span style="color:#91a5ff;">Bestuur: $text$</span>
\end

\define spo(text) 
<span style="color:#03f4fc;">Sportief: $text$</span>
\end

\define adv(text) 
<span style="color:#80809c;">Advies: $text$</span>
\end

\define klu(text)
<span style="color: #4bf542;">Klussen: $text$</span>
\end

\define muz(text)
<span style="color: #ed8b1a;">Muziek: $text$</span>
\end

\define groen(text) 
<span style="color:#4bf542;">$text$</span>
\end

\define lez(text) 
<span style="color:#ff2424;">Lezen: $text$</span>
\end

\define cul(text) 
<span style="color:#ff2424;">Cultuur: $text$</span>
\end

\define ref(text) 
<span style="color:#ffaa00;">Reflectie: $text$</span>
\end

\define doc(text) 
<span style="color:#ff1717;">Docent: $text$</span>
\end

\define stu(text) 
<span style="color:#fc5e03;">Studie: $text$</span>
\end
\define todolist-confirm-delete(
btnLabel:"Delete these tiddlers", 
confirmMessage:"Are you sure you wish to delete", 
stateTiddler:"", 
countFilter:"", 
actionMacro:"")

<$button class="tc-btn-invisible tc-tiddlylink" tooltip="Empty archive" popup=<<qualify """$stateTiddler$""">> > {{$:/core/images/delete-button}} $btnLabel$
</$button>

<$reveal state=<<qualify """$stateTiddler$""">> type="popup" position="belowleft" animate="yes">
<div class="tc-block-dropdown-wrapper">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<div class="tc-dropdown-item-plain">
<$set name="resultCount" value="""<$count filter=<<__countFilter__>> />""">
$confirmMessage$ <<resultCount>> tiddler(s)?
</$set>
</div>
<div class="tc-dropdown-item-plain">
<$button class="tc-btn-invisible tc-tiddlylink" tooltip="Empty archive"
actions=<<__actionMacro__>> > 
{{$:/core/images/delete-button}} Delete all?
</$button>
</div>
</div>
</div>
</$reveal>
\end
\define td-basePath() $:/todolist/data/

\define todolist-ui(caption:" ", width:"100%" base:"base")
\import [all[tiddlers+shadows]tag[$:/tags/Todolist/Macro]!has[draft.of]]
\whitespace trim

<$vars 
 nameSpace=      "$(td-basePath)$$base$"
 stateTiddler=   "$(td-basePath)$$base$/state"
 taskTiddler=    "$(td-basePath)$$base$/tasks"
 doneTiddler=    "$(td-basePath)$$base$/done"
 statusTiddler=  "$(td-basePath)$$base$/status"
 priorityTiddler="$(td-basePath)$$base$/priority"
 archiveTiddler= "$(td-basePath)$$base$/archive"	
 displayArchivedTiddler="Todolist - Archived Items - $base$"
>	
<div class="kk-todolist-ui" style="max-width:$width$;">

$caption$

<div class="kk-todolist-header-ui">
<div class="kk-todolist-header-textbox"><<todolist-input-task>></div>
<div><<todolist-add-task>></div>
<div><<todolist-toggle-edit-button>></div>
<div><<todolist-options-button>></div>
</div>
<<todolist-options-content>>
<!--
<$list filter="[<taskTiddler>indexes[]!sort[]]" variable="item">
<$transclude tiddler="$:/plugins/kookma/todolist/template/undone-task" field="text" />
</$list>
-->

<!-- display undone items -->
<$list filter="[<stateTiddler>getindex[editview]match[edit]]" variable=ignore 
   emptyMessage="""<$macrocall $name="draggable-list" targetTiddler=<<taskTiddler>> />""">
	 <<disp-list-in-edit-mode>>
</$list>

<div style="height:0.2em"/>

<!-- display done items -->
<$list filter="[<doneTiddler>indexes[]!nsort[]]" variable="item">
<$transclude tiddler="$:/plugins/kookma/todolist/template/done-task" field="text" />
</$list>
</div>
</$vars>
\end
{
    "tiddlers": {
        "$:/core/images/format-indent": {
            "text": "<svg class=\"tc-image-format-bold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 32 32\">\n    <g fill-rule=\"evenodd\">\n<path d=\"M0,2h32v4h-32ZM12,8h20v4h-20ZM12,14h20v4h-20ZM12,20h20v4h-20ZM0,26h32v4h-32ZM0,22v-12l8,6Z\" transform=\"matrix(0.787546, 0, 0, 0.787546, 3.99252, 3.17783)\"/>\n\n    </g>\n</svg>",
            "created": "20160309033519012",
            "modified": "20160309033653986",
            "tags": "$:/tags/Image",
            "title": "$:/core/images/format-indent"
        },
        "$:/core/ui/TextEditorToolbar/indent": {
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix='<div style=\"padding-left: 50px\";>'\n\tsuffix=\"</div>\"\n/>",
            "caption": "{{$:/language/Buttons/Indent/Caption}}",
            "condition": "[all[current]!is[image]]",
            "created": "20160309033243275",
            "creator": "Stephen",
            "description": "{{$:/language/Buttons/Indent/Hint}}",
            "icon": "$:/core/images/format-indent",
            "list-after": "$:/core/ui/TextEditorToolbar/Colour-Picker",
            "modified": "20160505115255124",
            "modifier": "Stephen",
            "shortcuts": "((indent))",
            "tags": "$:/tags/EditorToolbar",
            "title": "$:/core/ui/TextEditorToolbar/indent"
        },
        "$:/language/Buttons/Indent/Caption": {
            "text": "indent",
            "created": "20160202125743972",
            "creator": "Stephen",
            "modified": "20160202125809776",
            "modifier": "Stephen",
            "tags": "ske",
            "title": "$:/language/Buttons/Indent/Caption"
        },
        "$:/language/Buttons/Indent/Hint": {
            "text": "Indent the highlighted selection",
            "created": "20160202130252685",
            "creator": "Stephen",
            "modified": "20160202130311459",
            "modifier": "Stephen",
            "tags": "ske",
            "title": "$:/language/Buttons/Indent/Hint"
        },
        "$:/config/ShortcutInfo/indent": {
            "text": "{{$:/language/Buttons/Indent/Hint}}",
            "created": "20160505023441784",
            "creator": "Stephen",
            "modified": "20160505023752509",
            "modifier": "Stephen",
            "tags": "",
            "title": "$:/config/ShortcutInfo/indent"
        },
        "$:/config/shortcuts/indent": {
            "text": "ctrl-alt-N",
            "created": "20160505023801780",
            "creator": "Stephen",
            "modified": "20160505121745541",
            "modifier": "Stephen",
            "tags": "",
            "title": "$:/config/shortcuts/indent"
        }
    }
}
.sq-text-editor-btn-hidden {
	display: none;
}




\define switchStoryView(storyview,default)
<$select tiddler='$storyview$' default='$default$'>
<option value="zoomin"><$text text='one tiddler only'/></option>
<option value="classic"><$text text='multiple tiddlers'/></option>
</$select>
\end

|[[Minimum width to show the second story|$:/_sq/Stories/config/twostorybreakpoint]] |<$edit-text tiddler="$:/_sq/Stories/config/twostorybreakpoint" default="" tag="input"/> |
|[[Minimum width to show non-overlapping sidebar|$:/_sq/Stories/config/sidebaroverlaybreakpoint]] |<$edit-text tiddler="$:/_sq/Stories/config/sidebaroverlaybreakpoint" default="" tag="input"/> |
|[[Open tiddlers at top or bottom of story when using divert button|$:/_sq/Stories/config/openLinkDivert]] | <$select tiddler="$:/_sq/Stories/config/openLinkDivert" default="top"><option value="top">top</option><option value="bottom">bottom</option></$select>|
|<$link to="$:/_sq/Stories/config/showRiverDropZones">Show dropzones above each story</$link>|<$checkbox tiddler="$:/_sq/Stories/config/showRiverDropZones" field="text" checked="enable" unchecked="disable" default="disable"></$checkbox>|
|[[Story view for second story|$:/_sq/Stories/config/Story2-storyview]]:|{{$:/_sq/Stories/config/snippets/viewswitcher}}|



''Choose how to view tiddlers in each column''

Left column: <<switchStoryView $:/view zoomin>>

Right column: <<switchStoryView $:/_sq/Stories/config/Story2-storyview classic>>

''Left column to right column width ratio:''

{{$:/config/sq/Stories/storyRiverRatio}} : <$text text={{{[[100]subtract{$:/config/sq/Stories/storyRiverRatio}]}}}/>

<$range tiddler="$:/config/sq/Stories/storyRiverRatio" min="20" max="80" default="50" increment="5"/> 
<!--
''Right column font-size''

Tiddler: {{$:/config/sq/Stories/story2/fontsize-title}}px

<$range tiddler="$:/config/sq/Stories/story2/fontsize-title" min="6" max="40" default="14" increment="1"/> 

Body: {{$:/config/sq/Stories/story2/fontsize-body}}px

<$range tiddler="$:/config/sq/Stories/story2/fontsize-body" min="6" max="40" default="15" increment="1"/> 

-->
{
    "tiddlers": {
        "$:/plugins/sq/streams/CHANGELOG": {
            "title": "$:/plugins/sq/streams/CHANGELOG",
            "text": "Release notes for the current release:\n\n{{$:/plugins/sq/streams/releasenotes}}\n\n[[Full changelog|https://saqimtiaz.github.io/streams/#CHANGELOG]] for Streams\n"
        },
        "$:/plugins/sq/streams/Settings/config": {
            "title": "$:/plugins/sq/streams/Settings/config",
            "caption": "Configuration",
            "text": "\\define sortBySettingsGroupFilter()\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\n\\end\n\n<$edit-text tiddler=\"$:/state/sq/streams/settings/search\" class=\"sq-search-input\" default=\"\" tag=\"input\" type=\"search\" placeholder=\"search...\"/>\n\n<div class=\"sq-list-group sq-list-group-box-shadow sq-list-stream-settings\">\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/sq/streams]has[settings-template]]  +[search:title,caption,description{$:/state/sq/streams/settings/search}] +[sortsub<sortBySettingsGroupFilter>]\">\n<$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\"list-condition\">\n<div class=\"sq-list-group-item\">\n<$transclude tiddler={{!!settings-template}}/>\n</div>\n</$list>\n</$list>\n</div>"
        },
        "$:/plugins/sq/streams/Settings/shortcuts": {
            "title": "$:/plugins/sq/streams/Settings/shortcuts",
            "caption": "Shortcuts",
            "text": "\\import $:/core/ui/ControlPanel/KeyboardShortcuts\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>"
        },
        "$:/plugins/sq/streams/Settings": {
            "title": "$:/plugins/sq/streams/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "Streams settings",
            "text": "<<tabs \"$:/plugins/sq/streams/Settings/config $:/plugins/sq/streams/Settings/shortcuts\" \"$:/plugins/sq/streams/Settings/config\" \"$:/state/streams/settings/tabs\">>\n"
        },
        "$:/plugins/sq/streams/action-macros": {
            "title": "$:/plugins/sq/streams/action-macros",
            "text": "\\whitespace trim\n\n\\define swiped-right-actions()\n<$list filter=\"[{$:/config/sq/streams/swipe-behaviour}match[contextmenu]]\" variable=\"_NULL\">\n<$action-setfield $tiddler=<<contextmenu-state>> $field=\"current\" $value=<<dom-data-node-title>>/>\n<$action-setfield $tiddler=<<contextmenu-state>> $field=\"position\" $value={{$:/config/sq/streams/swipe-contextmenu-position}}/>\n<$action-popup $coords=<<tv-popup-coords>> $state=<<contextmenu-state>>/>\n</$list>\n<$list filter=\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\" variable=\"_NULL\">\n<$vars currentTiddler=<<dom-data-node-title>>>\n<<indent-node-actions>>\n</$vars>\n</$list>\n\\end\n\n\\define swiped-left-actions()\n<$list filter=\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\" variable=\"_NULL\">\n<$vars currentTiddler=<<dom-data-node-title>>>\n<<unindent-node-actions>>\n</$vars>\n</$list>\n\\end\n\n\n\\define oncontext-menu-actions()\n<$action-setfield $tiddler=<<contextmenu-state>> $field=\"current\" $value=<<dom-data-node-title>>/>\n<$action-setfield $tiddler=<<contextmenu-state>> $field=\"position\" $value=\"left\"/>\n<$action-popup $coords=<<tv-popup-coords>> $state=<<contextmenu-state>>/>\n\\end\n\n\n\\define node-ctrl-btn-actions()\n<$list filter=\"[<dom-data-btn-role>match[stream-node-visibility]]\" variable=\"NULL\">\n<$action-setfield $tiddler=<<dom-data-rowchildren-visibility-state>> text={{{ [<dom-data-rowchildren-visibility-state>get[text]match[hide]then[show]else[hide]] }}} />\n</$list>\n<$list filter=\"[<dom-data-btn-role>match[stream-node-decorator]]\" variable=\"NULL\">\n<$action-navigate $to=<<dom-data-node-title>>/>\n</$list>\n\\end\n\n\n\\define toggle-row-edit-state()\n<$action-unselect/>\n<$list filter=\"[<row-edit-state>get[text]else[]!match<dom-data-node-title>]\" variable=\"NULL\">\n<$list filter=\"[[$:/status/IsReadOnly]get[text]!is[blank]else[no]!match[yes]]\" variable=\"NULL\">\n\t<$action-setfield $tiddler=<<row-edit-state>> text=<<dom-data-node-title>> />\n<!--\t<$action-setfield $tiddler=<<dom-data-node-title>> throttle.refresh=\"yes\"/>-->\n</$list>\n</$list>\n\\end\n\n\n\\define save-edit-node-actions()\n<!-- handle saving a node being edited -->\n<!-- XXX draft -->\n<!--<$action-deletefield $tiddler={{{ [<dom-data-node-title>!is[blank]else<currentTiddler>] }}} $field=\"throttle.refresh\" />-->\n<$action-deletetiddler $tiddler=<<row-edit-state>> />\n\\end\n\n\n\\define indent-node-actions()\n<!-- handle indenting a node -->\n<$vars previous-node={{{ [{!!parent}get[stream-list]enlist-input[]is[tiddler]before<currentTiddler>] }}}>\n<$list filter=\"[<previous-node>minlength[1]]\" variable=\"_NULL\">\n\t<$action-listops $tiddler=<<previous-node>> $field=\"stream-list\" $subfilter=\"+[is[tiddler]] [<currentTiddler>]\"/>\n\t<$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"+[is[tiddler]] -[<currentTiddler>]\"/>\n\t<$action-setfield $tiddler=<<currentTiddler>> parent=<<previous-node>> />\n</$list>\n</$vars>\n\\end\n\n\n\\define unindent-node-actions()\n<!-- handle unindenting a node -->\n<$vars new-parent={{{ [{!!parent}get[parent]] }}} new-next-node={{{ [{!!parent}get[parent]get[stream-list]enlist-input[]is[tiddler]after{!!parent}] }}}>\n    <$list filter=\"[<new-parent>minlength[1]]\" variable=\"_NULL\">\n        <$action-listops $tiddler=<<new-parent>> $field=\"stream-list\" $subfilter=\"+[is[tiddler]] +[insertbefore:new-next-node<currentTiddler>]\"/>\n        <$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"+[is[tiddler]] -[<currentTiddler>]\"/>\n        <$action-setfield $tiddler=<<currentTiddler>> parent=<<new-parent>> />\n    </$list>\n</$vars>\n\\end\n\n\n\\define demote-node-actions()\n<!-- move a node below the next node -->\n<$list filter=\"[{!!parent}get[stream-list]enlist-input[]after<currentTiddler>]\" variable=\"next-node\">\n    <$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"+[insertbefore:currentTiddler<next-node>]\"/>\n</$list>\n\\end\n\n\n\\define promote-node-actions()\n<!-- move a node above the previous node -->\n<$list filter=\"[{!!parent}get[stream-list]enlist-input[]before<currentTiddler>]\" variable=\"previous-node\">\n    <$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"+[insertbefore:previous-node<currentTiddler>]\"/>\n</$list>\n\\end\n\n\n\\define save-node-actions()\n<$list filter=\"\"\"[{$:/config/sq/streams/split-at-caret}match[yes]]\"\"\" variable=\"_NULL\" emptyMessage=<<add-node-actions>> >\n<$list filter=\"[<selectionEnd>!is[blank]else[0]!match[0]]\" variable=\"_NULL\">\n<$list filter=\"[<currentTiddler>get[text]length[]subtract<selectionEnd>!match[0]]\" variable=\"_NULL\" emptyMessage=<<add-node-actions>>>\n\t<$macrocall $name=\"add-node-actions\" startText={{{[<currentTiddler>get[text]split[]rest<selectionEnd>join[]trim[]]}}} streamList={{!!stream-list}} /><!--insertPosition=\"title\"-->\n\t<$action-setfield $tiddler=\"$:/state/sq/streams/caret-position\" text=\"0\"/>\n\t<$action-setfield $tiddler=<<currentTiddler>> text={{{[<currentTiddler>get[text]split[]first<selectionEnd>join[]]}}} stream-list=\"\"/>\n</$list>\n</$list>\n<$list filter=\"[<selectionEnd>!is[blank]else[0]match[0]]\" variable=\"_NULL\">\n\t<$list filter=\"[<currentTiddler>!has[text]]\" variable=\"_NULL\" emptyMessage=<<add-node-actions \"\" \"title\">> >\n\t\t<$list filter=\"\"\"[{$:/config/sq/streams/exit-on-saving-empty-node}match[yes]]\"\"\" variable=\"_NULL\" emptyMessage=<<add-node-actions>> >\n\t\t\t<<cancel-edit-node-actions>>\n\t\t</$list>\n\t</$list>\n</$list>\n</$list>\n\\end\n\n\\define add-new-node-actions()\n<!-- used by new node button at the bottom of a stream -->\n<$list filter=\"[[$:/status/IsReadOnly]get[text]!is[blank]else[no]!match[yes]]\" variable=\"NULL\">\n<<add-node-actions>>\n</$list>\n\\end\n\n\n\\define add-node-actions(startText:\"\",insertPosition:\"after\",streamList:\"\")\n<!-- handle saving a node edit and creating a new subsequent node -->\n<$set name=\"parent\" filter=\"[<currentTiddler>match<stream-root-title>] ~[{!!parent}] +[first[]]\" select=\"0\">\n<$wikify name=\"new-node\" text={{$:/config/sq/streams/new-node-title}}>\n<$wikify name=\"new-node\" text={{{[[<<unusedtitle \"\"\"]addsuffix<new-node>addsuffix[\"\"\">>]]}}}>\n\t<$action-createtiddler $basetitle=<<new-node>> text=<<__startText__>> $template={{$:/config/sq/streams/new-node-tiddler-template}} parent=<<parent>> stream-type=\"default\" stream-list=<<__streamList__>>/>\n\t<$set name=\"parent-nodes\" filter=\"[<parent>get[stream-list]]\" select=\"0\">\n\t<$set name=\"next-node\" filter=\"[enlist<parent-nodes>is[tiddler]$insertPosition$<currentTiddler>]\" select=\"0\">\n\t<$action-listops $tiddler=<<parent>> $field=\"stream-list\" $subfilter=\"+[is[tiddler]] +[insertbefore:next-node<new-node>]\"/>\n\t<$list filter=\"[<parent>!has[stream-type]]\" variable=\"_NULL\">\n\t\t<$action-setfield $tiddler=<<parent>> stream-type=\"default\"/>\n\t</$list>\n\t<$list filter=\"[enlist<__streamList__>]\">\n\t\t<$action-setfield $tiddler=<<currentTiddler>> parent=<<new-node>>/>\n\t</$list>\n\t</$set>\n\t</$set>\n\t<$action-setfield $tiddler=<<row-edit-state>> text=<<new-node>>/>\n</$wikify>\n</$wikify>\n</$set>\n\\end\n\n\n\\define save-multiple-actions()\n<!-- handle multiple nodes entered at once -->\n<$action-confirm $message=\"Split into multiple nodes?\" $prompt={{$:/config/sq/streams/prompt-split-to-multiple}}>\n<$list filter=\"[{!!text}splitregexp{$:/config/sq/streams/node-split-regexp}rest[]reverse[]]\" variable=\"fragment\">\n\t<$action-confirm $message=\"Split into multiple nodes?\" $prompt=\"no\">\n\t\t<$macrocall $name=\"add-node-actions\" startText=<<fragment>> />\n\t</$action-confirm>\n</$list>\n<$action-setfield $tiddler=<<currentTiddler>> text={{{[{!!text}splitregexp{$:/config/sq/streams/node-split-regexp}first[]]}}}/>\n<<add-node-actions>>\n</$action-confirm>\n\\end\n\n\n\\define cancel-edit-node-actions()\n<!-- handle cancelling the edit on an empty node -->\n<$list filter=\"[<currentTiddler>!has[stream-list]!has[text]]\" variable=\"_NULL\">\n\t<$action-listops $tiddler={{{[{!!parent}]}}} $field=\"stream-list\" $subfilter=\"+[is[tiddler]] -[<currentTiddler>]\"/>\n\t<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list>\n<!--<$action-deletefield $tiddler=<<currentTiddler>> $field=\"throttle.refresh\" />-->\n<$action-deletetiddler $tiddler=<<row-edit-state>> />\n\\end\n\n\n\\define merge-with-previous-node-actions()\n<!-- handle backspace on an empty node -->\n<$list filter=\"\"\"[<currentTiddler>!has[text]]\"\"\" variable=\"_NULL\">\n\t<<cancel-edit-node-actions>>\n\t<<focus-higher-node-actions>>\n</$list>\n\n<$list filter=\"\"\"[<currentTiddler>has[text]]\"\"\" variable=\"_NULL\">\n<$list filter=\"[<selectionEnd>match[0]]\" variable=\"_NULL\">\n\n<!--<$action-log/>-->\n\t<$set name=\"parent\" value={{!!parent}} select=\"0\">\n\t<$set name=\"stream-list\" filter=\"[<parent>get[stream-list]]\" select=\"0\">\n\t<$list filter=\"[enlist<stream-list>before<currentTiddler>]\" variable=\"previous-node\">\n\t\t<$list filter=\"[<previous-node>!has[stream-list]]\" variable=\"_NULL\">\n\t\t<$action-confirm $message=\"Merge with previous node?\" $prompt={{$:/config/sq/streams/prompt-merge-with-previous}}>\n\t\t\t<$action-setfield $tiddler=\"$:/state/sq/streams/caret-position\" text={{{[<previous-node>get[text]length[]]}}}/>\n\t\t\t<$action-setfield $tiddler=<<previous-node>> text={{{[<previous-node>get[text]!is[blank]else[]addsuffix{!!text}]}}} stream-list={{!!stream-list}}/>\n\t\t\t<$action-setfield $tiddler=<<row-edit-state>> text=<<previous-node>>/>\n\t\t\t<$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"+[is[tiddler]] -[<currentTiddler>]\"/>\t\t\t\n\t\t\t<$action-deletetiddler $tiddler=<<currentTiddler>>/>\n\t\t</$action-confirm>\t\n\t\t</$list>\n\t</$list>\n\t</$set>\n\t</$set>\n\t\n</$list>\n</$list>\n\n\\end\n\n\n\\define delete-node-actions()\n<$action-confirm  $message=\"Do you wish to delete this tiddler?\">\n\t<$transclude tiddler=\"$:/plugins/sq/streams/delete-hook/actions\"/>\n\t<$action-deletetiddler $tiddler=<<currentTiddler>> />\n\t<$list filter=\"[<row-edit-state>get[text]match<currentTiddler>]\">\n\t\t<<focus-higher-node-actions>>\n\t</$list>\n</$action-confirm>\n\\end\n\n\n\\define rename-node-actions()\n<$action-withinput message=\"Rename this tiddler?\" default=<<currentTiddler>> actions=\"\"\"\n\t<$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<userInput>>/>\n\t<$list filter=\"[<row-edit-state>match<currentTiddler>]\" variable=\"_NULL\">\n\t\t<$action-setfield $tiddler=<<row-edit-state>> text=<<userInput>>/>\n\t</$list>\n\"\"\"/>\n\\end\n\n\n\\define find-last-child()\n<!-- used by focus-higher-node-actions macro -->\n<$list filter=\"[enlist{!!stream-list}is[tiddler]last[]]\" emptyMessage=\"\"\"<$action-setfield $tiddler=<<row-edit-state>> text=<<currentTiddler>>/>\"\"\">\n\t<$macrocall $name=\"find-last-child\"/>\n</$list>\n\\end\n\n\n\\define focus-higher-node-actions()\n<!-- handles moving up in the nodes with the keyboard -->\n<$vars old-parent={{!!parent}} >\n<$list filter=\"[{!!parent}get[stream-list]enlist-input[]is[tiddler]before<currentTiddler>]\" emptyMessage=\"\"\"<$list filter=\"[<old-parent>!match<stream-root-title>]\"><$action-setfield $tiddler=<<row-edit-state>> text=<<old-parent>> /></$list>\"\"\">\n\t<$macrocall $name=\"find-last-child\"/>\n</$list>\n</$vars>\n\\end\n\n\n\\define find-next-downwards-node()\n<!-- used by focus-lower-node-actions macro -->\n<$list filter=\"[<currentTiddler>has[parent]]\" variable=\"_NULL\">\n<$set name=\"old-parent\" value={{!!parent}} select=\"0\">\n<$set name=\"old-parent-nodes\" filter=\"[<old-parent>get[stream-list]]\" select=\"0\">\n<$list filter=\"[enlist<old-parent-nodes>is[tiddler]after<currentTiddler>]\" emptyMessage=\"\"\"<$set name=\"currentTiddler\" value=<<old-parent>>><<find-next-downwards-node>></$set>\"\"\">\n\t<$action-setfield $tiddler=<<row-edit-state>> text=<<currentTiddler>>/>\t\n</$list>\n</$set>\n</$set>\n</$list>\n\\end\n\n\n\\define focus-lower-node-actions()\n<!-- handles moving down in the nodes with the keyboard -->\n<!--if children, get the first child-->\n<$list filter=\"[<currentTiddler>get[stream-list]enlist-input[]is[tiddler]first[]]\" variable=\"next-node\">\n    <$action-setfield $tiddler=<<row-edit-state>> text=<<next-node>> />\n</$list>\n<!-- if no children-->\n<!--- get closest ancestor with next sibling -->\n<$list filter=\"[<currentTiddler>!has[stream-list]]\" variable=\"_NULL\">\n\t<$set name=\"old-active-node\" value=<<currentTiddler>> >\n\t\t<<find-next-downwards-node>>\n\t</$set>\n</$list>\n\\end\n\n\n\\define node-drag-start-actions()\n<!-- parameter to draggable widget -->\n<$action-setfield $tiddler=<<drag-title-state>> text=<<currentTiddler>>/>\n<$action-setfield $tiddler=\"$:/state/sq/nodes/global-drag-state\" text=\"yes\"/>\n<$set name=\"siblings\" filter=\"[{!!parent}get[stream-list]]\" select=\"0\">\n<$list filter=\"[enlist<siblings>after<currentTiddler>]\" variable=\"next-node\">\n\t<$action-setfield $tiddler=<<drag-title-nextsibling-state>> text=<<next-node>> />\n</$set>\n\\end\n\n\n\\define node-drag-end-actions()\n<!-- parameter to draggable widget -->\n<$action-deletetiddler $filter=\"\"\"[<drag-title-state>][<drag-title-nextsibling-state>][[$:/state/sq/nodes/global-drag-state]]\"\"\" />\n\\end\n\n\n\\define stream-drop-actions()\n<!-- handles drag and drop -->\n<$vars startBrackets=\"[[\" endBrackets=\"]]\" parent=<<dropTargetTiddler>> >\n<$vars actionTiddler={{{[<actionTiddler>trim:suffix<endBrackets>trim:prefix<startBrackets>]}}}>\n<!-- if target has no stream-type, assign one -->\n<$list filter=\"[<dropTargetTiddler>!has[stream-type]]\">\n\t<$action-setfield $tiddler=<<dropTargetTiddler>> stream-type=\"default\"/>\n</$list>\n<!-- if action tiddler has no stream-type, assign one -->\n<$list filter=\"[<actionTiddler>!has[stream-type]]\" variable=\"_NULL\">\n\t<$action-setfield $tiddler=<<actionTiddler>> stream-type=\"default\" />\n</$list>\n<!-- if we are dropping onto a new parent, then we might need to handle modifier keys -->\n<$list filter=\"[<actionTiddler>get[parent]!match<parent>] [<actionTiddler>!has[parent]]\" variable=\"_NULL\">\n\t<$wikify name=\"new-node\" text={{$:/config/sq/streams/new-node-title}}>\n\t\t<!-- ctrl modifier key on drop event -->\n\t\t<!-- create a new node with text of dropped node -->\n\t\t<$list filter=\"[<modifier>match{$:/config/sq/streams/dnd-modifier-copy-node}]\" variable=\"_NULL\">\n\t\t\t<$action-createtiddler $basetitle=<<new-node>> text={{{ [<actionTiddler>get[text]] }}} parent=<<parent>> stream-type=\"default\"/>\n\t\t\t<!-- insert into correct position on new parent -->\n\t\t\t<$action-listops $tiddler=<<dropTargetTiddler>> $field=\"stream-list\" $subfilter=\"+[insertbefore:currentTiddler<new-node>]\"/>\n\t\t</$list>\n\t\t<!-- shift modifier key on drop event -->\n\t\t<$list filter=\"[<modifier>match{$:/config/sq/streams/dnd-modifier-transclude-node}]\" variable=\"_NULL\">\n\t\t\t<!-- create new node on target, in correct position, text is a transclusion-->\n\t\t\t<$action-createtiddler $basetitle=<<new-node>> text={{{ [<actionTiddler>addprefix[{{]addsuffix[}}]] }}} parent=<<parent>> stream-type=\"default\"/>\n\t\t\t<!-- insert into correct position on new parent -->\n\t\t\t<$action-listops $tiddler=<<dropTargetTiddler>> $field=\"stream-list\" $subfilter=\"+[insertbefore:currentTiddler<new-node>]\"/>\n\t\t</$list>\n\t</$wikify>\n\t<!-- no modifier key on drop event -->\n\t<!-- insert in correct position on new parent, and remove from old parent -->\n\t<!-- assign new parent -->\n\t<$list filter=\"[<modifier>match[normal]]\" variable=\"_NULL\">\n\t\t<$action-listops $tiddler=<<dropTargetTiddler>> $field=\"stream-list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\t\t<$set name=\"original-parent\" filter=\"[<actionTiddler>get[parent]]\" select=\"0\">\n\t\t\t<$action-listops $tiddler=<<original-parent>> $field=\"stream-list\" $subfilter=\"-[title<actionTiddler>]\"/>\n\t\t</$set>\n\t\t<$action-setfield $tiddler=<<actionTiddler>> parent=<<parent>>/>\n\t</$list>\n</$list>\n<!-- we are dropping on to the same parent, insert in the correct position -->\n<$list filter=\"[<actionTiddler>get[parent]match<parent>]\" variable=\"_NULL\">\n\t<$action-listops $tiddler=<<dropTargetTiddler>> $field=\"stream-list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n</$list>\n</$vars>\n</$vars>\n\\end"
        },
        "$:/plugins/sq/streams/icons/node-expand-arrow": {
            "title": "$:/plugins/sq/streams/icons/node-expand-arrow",
            "created": "20200526035137040",
            "modified": "20200526100520031",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"><path d=\"M13.75 9.56879C14.0833 9.76124 14.0833 10.2424 13.75 10.4348L8.5 13.4659C8.16667 13.6584 7.75 13.4178 7.75 13.0329L7.75 6.97072C7.75 6.58582 8.16667 6.34525 8.5 6.5377L13.75 9.56879Z\"></path></svg>"
        },
        "$:/config/ShortcutInfo/streams-cancel-edit": {
            "title": "$:/config/ShortcutInfo/streams-cancel-edit",
            "text": "Cancel and exit editing"
        },
        "$:/config/ShortcutInfo/streams-delete": {
            "title": "$:/config/ShortcutInfo/streams-delete",
            "text": "Delete node"
        },
        "$:/config/ShortcutInfo/streams-demote": {
            "title": "$:/config/ShortcutInfo/streams-demote",
            "text": "Demote node"
        },
        "$:/config/ShortcutInfo/streams-focus-higher": {
            "title": "$:/config/ShortcutInfo/streams-focus-higher",
            "text": "Move focus to higher node"
        },
        "$:/config/ShortcutInfo/streams-focus-lower": {
            "title": "$:/config/ShortcutInfo/streams-focus-lower",
            "text": "Move focus to lower node"
        },
        "$:/config/ShortcutInfo/streams-indent": {
            "title": "$:/config/ShortcutInfo/streams-indent",
            "text": "Indent node"
        },
        "$:/config/ShortcutInfo/streams-merge-with-previous": {
            "title": "$:/config/ShortcutInfo/streams-merge-with-previous",
            "text": "Merge with previous node, if caret is at start of a node"
        },
        "$:/config/ShortcutInfo/streams-promote": {
            "title": "$:/config/ShortcutInfo/streams-promote",
            "text": "Promote node"
        },
        "$:/config/ShortcutInfo/streams-rename": {
            "title": "$:/config/ShortcutInfo/streams-rename",
            "text": "Rename node"
        },
        "$:/config/ShortcutInfo/streams-save-and-continue": {
            "title": "$:/config/ShortcutInfo/streams-save-and-continue",
            "text": "Save and create next node"
        },
        "$:/config/ShortcutInfo/streams-save-and-exit": {
            "title": "$:/config/ShortcutInfo/streams-save-and-exit",
            "text": "Save and exit editing"
        },
        "$:/config/ShortcutInfo/streams-save-multiple": {
            "title": "$:/config/ShortcutInfo/streams-save-multiple",
            "text": "Split and save as multiple nodes"
        },
        "$:/config/ShortcutInfo/streams-unindent": {
            "title": "$:/config/ShortcutInfo/streams-unindent",
            "text": "Unindent node"
        },
        "$:/config/sq/streams/dnd-modifier-copy-node": {
            "title": "$:/config/sq/streams/dnd-modifier-copy-node",
            "description": "Modifier key for drag and drop to create a copy of a node.",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/select",
            "option-names": "ctrl alt shift meta",
            "option-values": "ctrl alt shift meta",
            "caption": "Modifier key to copy a node when dragging.",
            "text": "ctrl"
        },
        "$:/config/sq/streams/dnd-modifier-transclude-node": {
            "title": "$:/config/sq/streams/dnd-modifier-transclude-node",
            "description": "Modifier key for drag and drop to create a transclusion of a node.",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/select",
            "option-names": "ctrl alt shift meta",
            "option-values": "ctrl alt shift meta",
            "caption": "Modifier key to transclude a node when dragging.",
            "text": "shift"
        },
        "$:/config/sq/streams/editor-engine": {
            "title": "$:/config/sq/streams/editor-engine",
            "description": "Editor to use for Streams",
            "caption": "Editor to use for Streams",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/select",
            "option-names": "[[Default]] [[CodeMirror]]",
            "option-values": "text codemirror",
            "condition": "[[widget]modules[]prefix[$:/plugins/tiddlywiki/codemirror/edit-codemirror.js]]",
            "text": "text"
        },
        "$:/config/sq/streams/enable-breadcrumbs": {
            "title": "$:/config/sq/streams/enable-breadcrumbs",
            "description": "Enable breadcrumbs in nodes",
            "caption": "Show breadcrumbs",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "yes"
        },
        "$:/config/sq/streams/enable-edit-toolbar": {
            "title": "$:/config/sq/streams/enable-edit-toolbar",
            "description": "Enable toolbar in editor",
            "caption": "Show toolbar in editor",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "no"
        },
        "$:/config/sq/streams/exit-on-saving-empty-node": {
            "title": "$:/config/sq/streams/exit-on-saving-empty-node",
            "description": "Enable to exit edit mode on saving an empty node",
            "caption": "Exit editing on saving an empty node",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "no"
        },
        "$:/config/sq/streams/new-node-tiddler-template": {
            "title": "$:/config/sq/streams/new-node-tiddler-template",
            "description": "T iddler to use as a template for new nodes",
            "caption": "Tiddler to use as new node template",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input"
        },
        "$:/config/sq/streams/new-node-title": {
            "title": "$:/config/sq/streams/new-node-title",
            "description": "Wikitext that is wikified to generate the title for new nodes",
            "caption": "Template wikified for node title",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input",
            "text": "<<stream-root-title>>/<<now \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\">>"
        },
        "$:/config/sq/streams/node-max-width": {
            "title": "$:/config/sq/streams/node-max-width",
            "description": "Maximum displayed width of a Stream node",
            "caption": "Maximum node width",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input",
            "text": "550"
        },
        "$:/config/sq/streams/node-split-regexp": {
            "title": "$:/config/sq/streams/node-split-regexp",
            "description": "Regular expression that is used to split longform text into multiple tiddlers",
            "caption": "Regular expression used to split text",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input",
            "text": "\\n\\n"
        },
        "$:/config/sq/streams/prompt-merge-with-previous": {
            "title": "$:/config/sq/streams/prompt-merge-with-previous",
            "description": "Enable to be prompted before merging a node with the previous node",
            "caption": "Prompt before merging with previous",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "yes"
        },
        "$:/config/sq/streams/prompt-split-to-multiple": {
            "title": "$:/config/sq/streams/prompt-split-to-multiple",
            "description": "Enable to be prompted before splitting a node to multiple nodes",
            "caption": "Prompt before creating multiple nodes",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "yes"
        },
        "$:/config/shortcuts/streams-cancel-edit": {
            "title": "$:/config/shortcuts/streams-cancel-edit",
            "created": "20200914162547334",
            "modified": "20200914162547341",
            "type": "text/vnd.tiddlywiki",
            "text": "Escape"
        },
        "$:/config/shortcuts/streams-delete": {
            "title": "$:/config/shortcuts/streams-delete",
            "created": "20200914163552494",
            "modified": "20200914163552502",
            "type": "text/vnd.tiddlywiki",
            "text": "ctrl-Delete"
        },
        "$:/config/shortcuts/streams-demote": {
            "title": "$:/config/shortcuts/streams-demote",
            "created": "20200914163104446",
            "modified": "20200914163104456",
            "type": "text/vnd.tiddlywiki",
            "text": "alt-Down"
        },
        "$:/config/shortcuts/streams-focus-higher": {
            "title": "$:/config/shortcuts/streams-focus-higher",
            "created": "20200914163342651",
            "modified": "20200914163342659",
            "type": "text/vnd.tiddlywiki",
            "text": "ctrl-Up"
        },
        "$:/config/shortcuts/streams-focus-lower": {
            "title": "$:/config/shortcuts/streams-focus-lower",
            "created": "20200914163347755",
            "modified": "20200914163347764",
            "type": "text/vnd.tiddlywiki",
            "text": "ctrl-Down"
        },
        "$:/config/shortcuts/streams-indent": {
            "title": "$:/config/shortcuts/streams-indent",
            "created": "20200914162901728",
            "modified": "20200914162901735",
            "type": "text/vnd.tiddlywiki",
            "text": "Tab"
        },
        "$:/config/shortcuts/streams-merge-with-previous": {
            "title": "$:/config/shortcuts/streams-merge-with-previous",
            "created": "20200914164323982",
            "modified": "20200914164323991",
            "type": "text/vnd.tiddlywiki",
            "text": "Backspace"
        },
        "$:/config/shortcuts/streams-promote": {
            "title": "$:/config/shortcuts/streams-promote",
            "created": "20200914163110776",
            "modified": "20200914163110785",
            "type": "text/vnd.tiddlywiki",
            "text": "alt-Up"
        },
        "$:/config/shortcuts/streams-rename": {
            "title": "$:/config/shortcuts/streams-rename",
            "created": "20200914163600676",
            "modified": "20200914163600683",
            "type": "text/vnd.tiddlywiki",
            "text": "alt-R"
        },
        "$:/config/shortcuts/streams-save-and-continue": {
            "title": "$:/config/shortcuts/streams-save-and-continue",
            "created": "20200914164329638",
            "modified": "20200914164329647",
            "type": "text/vnd.tiddlywiki",
            "text": "Enter"
        },
        "$:/config/shortcuts/streams-save-and-exit": {
            "title": "$:/config/shortcuts/streams-save-and-exit",
            "created": "20200914163850209",
            "modified": "20200914163850217",
            "type": "text/vnd.tiddlywiki",
            "text": "ctrl-Enter"
        },
        "$:/config/shortcuts/streams-save-multiple": {
            "title": "$:/config/shortcuts/streams-save-multiple",
            "created": "20200914163843685",
            "modified": "20200914163843694",
            "type": "text/vnd.tiddlywiki",
            "text": "alt-Enter"
        },
        "$:/config/shortcuts/streams-unindent": {
            "title": "$:/config/shortcuts/streams-unindent",
            "created": "20200914162907631",
            "modified": "20200914162907639",
            "type": "text/vnd.tiddlywiki",
            "text": "shift-Tab"
        },
        "$:/config/sq/streams/split-at-caret": {
            "title": "$:/config/sq/streams/split-at-caret",
            "description": "Enable to split text at caret position on saving a node",
            "caption": "Split text at caret position",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "yes"
        },
        "$:/config/sq/streams/stream-enable-filter": {
            "title": "$:/config/sq/streams/stream-enable-filter",
            "description": "Filter that determines which tiddlers get the add node button at the bottom",
            "caption": "Filter to enable Streams",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input",
            "text": "[!is[shadow]]"
        },
        "$:/config/sq/streams/swipe-behaviour": {
            "title": "$:/config/sq/streams/swipe-behaviour",
            "description": "Choose whether swipe should show a contextmenu, or be used to indent/unindent nodes.",
            "caption": "Swipe behaviour",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/select",
            "option-names": "[[Show ContextMenu]] [[Indent / Un-indent]]",
            "option-values": "contextmenu indent",
            "condition": "[[$:/config/sq/streams/swipe-behaviour-animated]!is[missing]]",
            "text": "contextmenu"
        },
        "$:/config/sq/streams/swipe-contextmenu-position": {
            "title": "$:/config/sq/streams/swipe-contextmenu-position",
            "description": "Position of context menu shown on swiping.",
            "caption": "Position of context menu shown on swiping.",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/select",
            "settings-group": "swipe",
            "option-names": "[[Right]] [[Left]]",
            "option-values": "right left",
            "condition": "[[$:/config/sq/streams/swipe-enabled]get[text]match[yes]]",
            "text": "right"
        },
        "$:/config/sq/streams/swipe-enabled": {
            "title": "$:/config/sq/streams/swipe-enabled",
            "description": "Enable swipe to show context menu on touch devices.",
            "caption": "Enable swipe to show context menu on nodes.",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "settings-group": "swipe",
            "settings-group-header": "0",
            "text": "yes"
        },
        "$:/config/sq/streams/swipe-threshold": {
            "title": "$:/config/sq/streams/swipe-threshold",
            "description": "Distance in pixels that triggers a swipe, defaults to 100",
            "caption": "Swipe threshold in pixels",
            "settings-template": "$:/plugins/sq/streams/ui/templates/settings/input",
            "settings-group": "swipe",
            "condition": "[[$:/config/sq/streams/swipe-enabled]get[text]match[yes]]",
            "text": "70"
        },
        "$:/plugins/sq/streams/contextmenu/contextmenu-styles": {
            "title": "$:/plugins/sq/streams/contextmenu/contextmenu-styles",
            "text": ".sq-contextmenu {\n\tpadding: 12px 0;\n\tbox-shadow: rgba(0, 0, 0, 0.40) 0px 2px 20px;\n\tfont-family: \"Segoe UI\", Roboto, Helvetica, Arial;\n\tfont-size: 13px;\n\tmargin-top: 4px;\n\tmin-width: 100px;\n\tmax-width: 240px;\n\tleft: -16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder-radius: 6px;\n\tborder: 1px solid #dce0e2;\n\ttransition: opacity 200ms ease 0s, transform 200ms ease 0s;\n\tmargin-top: 30px;\n}\n\n.sq-contextmenu-alignright {\n\ttransform: translate3d(-100%,0,0);\n}\n\n.sq-contextmenu .tc-menu-list-item {\n\tpadding: 0 18px;\n\tline-height: 24px;\n\twhite-space: nowrap;\n\tcolor: #4b5155;\n\tcursor: default !important;\n\ttext-indent: 0;\n}\n\n.sq-contextmenu-itemwrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tposition: relative;\t\n}\n\n.sq-contextmenu-itemtext {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\tflex-grow: 1;\n\toverflow: hidden;\t\n}\n\n.sq-contextmenu-itemicon {\n\tcolor: #b7bcbf;\n\tmargin-left: 16px;\n\tmin-width: 22px;\t\n}\n\n.sq-contextmenu-divider {\n\tborder-top-width: 1px;\n\tborder-top-color: #eceef0;\n\tborder-top-style: solid;\n\tmargin: 6px 0;\n}",
            "created": "20200602120854810",
            "modified": "20200603055942655",
            "tags": "$:/tags/Stylesheet",
            "type": "text/css"
        },
        "$:/plugins/sq/streams/contextmenu/contextmenu-template": {
            "title": "$:/plugins/sq/streams/contextmenu/contextmenu-template",
            "created": "20200602163018613",
            "modified": "20200603055942658",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define menu-item(title,subtitle:\"\",actions:\"\")\n\t\t<$button class=\"tc-menu-list-item tc-btn-invisible\" actions=<<__actions__>> >\n\t\t\t<span class=\"sq-contextmenu-itemwrapper\">\n\t\t\t\t<span class=\"sq-contextmenu-itemtext\">$title$</span>\n\t\t\t\t<span class=\"sq-contextmenu-itemicon\"><$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts=\"$subtitle$\" prefix=\"\" separator=\" \" suffix=\"\"/></span>\n\t\t\t</span>\n\t\t</$button>\n\\end\n\n\\define menu-divider() <div class=\"sq-contextmenu-divider\"/>\n\n<$reveal type=\"popup\" state=<<contextmenu-state>> position={{{[<contextmenu-state>get[position]]}}} tag=\"div\">\n\t<div class={{{tc-drop-down sq-contextmenu [<contextmenu-state>get[position]match[right]then[sq-contextmenu-alignright]else[]] +[join[ ]]}}}>\n\t\t<$macrocall $name=\"menu-item\" title=\"Open\" actions=\"\"\"<$action-navigate/>\"\"\"/>\n\t\t<$macrocall $name=\"menu-item\" title=\"Rename\" subtitle=\"((streams-rename))\" actions=<<rename-node-actions>>/>\n\t\t<$macrocall $name=\"menu-item\" title=\"Delete\" subtitle=\"((streams-delete))\" actions=<<delete-node-actions>>/>\n\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/streams/contextmenu]]\" variable=\"listItem\">\n\t\t\t<$macrocall $name=\"menu-item\"\n\t\t\t\ttitle={{{[<listItem>get[sq-contextmenu-name]]}}} \n\t\t\t\tsubtitle={{{[<listItem>get[key]] [<listItem>get[sq-contextmenu-subtitle]] +[first[]]}}} \n\t\t\t\tactions={{{[<listItem>get[text]]}}} />\n\t\t</$list>\n\t\t<<menu-divider>>\n\t\t<$macrocall $name=\"menu-item\" title=\"Keyboard Shortcuts (?)\" actions=\"\"\"<$action-navigate $to=\"$:/plugins/sq/streams/info/keyboard-shortcuts\"/>\"\"\"/>\n\t</div>\n</$reveal>"
        },
        "$:/plugins/sq/streams/codemirror-tweak": {
            "title": "$:/plugins/sq/streams/codemirror-tweak",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/codemirror-tweak\ntype: application/javascript\nmodule-type: startup\n\n\\*/\n\nexports.platforms = [\"browser\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\n\tif($tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/codemirror\") && ($tw.wiki.getTiddlerText(\"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror\",\"no\") === \"no\")) {\n\t\tvar CMEngine = require(\"$:/plugins/tiddlywiki/codemirror/engine.js\").CodeMirrorEngine;\n\t\tCMEngine.prototype.focus = function() {\n\t\t\tthis.cm.focus();\n\t\t\tvar caretPosition = this.widget.getAttribute(\"caretPosition\",\"end\");\t\n\t\t\tvar index = (caretPosition === \"end\") ? this.cm.getValue().length : parseInt(caretPosition);\n\t\t\tthis.cm.doc.setSelection(this.cm.doc.posFromIndex(index));\n\t\t}\n\t}\n\n}",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/sq/streams/draggable-tweaks.js": {
            "title": "$:/plugins/sq/streams/draggable-tweaks.js",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/draggable-tweaks.js\ntype: application/javascript\nmodule-type: widget-subclass\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"draggable\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\nexports.prototype = {};\n\nexports.prototype.render = function(parent,nextSibling) {\n\t// Call the base class handleChangeEvent function\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,parent,nextSibling);\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\tif(a.substring(0,10) === \"data-node-\") {\n\t\t\ttry {\n\t\t\t\tself.domNodes[0].setAttributeNS(null,a,v);\n\t\t\t} catch(e){\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "widget-subclass"
        },
        "$:/plugins/sq/streams/droppable-tweaks.js": {
            "title": "$:/plugins/sq/streams/droppable-tweaks.js",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/droppable-tweaks.js\ntype: application/javascript\nmodule-type: widget-subclass\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"droppable\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\nexports.prototype = {};\n\nexports.prototype.render = function(parent,nextSibling) {\n\t// Call the base class handleChangeEvent function\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,parent,nextSibling);\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\tif(a.substring(0,10) === \"data-node-\") {\n\t\t\ttry {\n\t\t\t\tself.domNode.setAttributeNS(null,a,v);\n\t\t\t} catch(e){\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "widget-subclass"
        },
        "$:/plugins/sq/streams/framed-engine-tweak": {
            "title": "$:/plugins/sq/streams/framed-engine-tweak",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/framed-engine-tweak\ntype: application/javascript\nmodule-type: startup\n\n\\*/\n\nvar FramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine;\n\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tif(this.widget.getAttribute(\"select\")===\"false\") {\n\t\t\tvar caretPosition = this.widget.getAttribute(\"caretPosition\",\"end\");\n\t\t\tcaretPosition = (caretPosition === \"end\") ? this.domNode.value.length : parseInt(caretPosition);\n\t\t\tthis.domNode.setSelectionRange(caretPosition,caretPosition);\n\t\t} else {\n\t\t\tthis.domNode.select();\n\t\t}\n\t}\n\t/*\n\tif(!this.setupDblClick) {\n\t\tthis.domNode.addEventListener(\"dblclick\",this.propagateDblClick.bind(this));\n\t\tthis.setupDblClick = true;\n\t}\n\t*/\n}\n\n/*\nFramedEngine.prototype.propagateDblClick = function(event) {\n\tif(this.widget.wiki.getTiddlerText(\"$:/config/sq/streams/dblclick-editor-to-exit\") === \"yes\") {\n\t\tvar newEvent = this.widget.document.createEventObject ? this.widget.document.createEventObject() : this.widget.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"dblclick\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.widget.parentDomNode.dispatchEvent(newEvent);\n\t}\n\treturn false;\n}\n*/",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/sq/streams/simple-engine-tweak": {
            "title": "$:/plugins/sq/streams/simple-engine-tweak",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/simple-engine-tweak\ntype: application/javascript\nmodule-type: startup\n\n\\*/\n\nvar SimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tif(this.widget.getAttribute(\"select\")===\"false\") {\n\t\t\tvar caretPosition = this.widget.getAttribute(\"caretPosition\",\"end\");\n\t\t\tcaretPosition = (caretPosition === \"end\") ? this.domNode.value.length : parseInt(caretPosition);\n\t\t\tthis.domNode.setSelectionRange(caretPosition,caretPosition);\n\t\t} else {\n\t\t\tthis.domNode.select();\n\t\t}\n\t}\n}",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/sq/streams/delete-hook/actions": {
            "title": "$:/plugins/sq/streams/delete-hook/actions",
            "created": "20200527200401408",
            "modified": "20200527234136578",
            "tags": "$:/tags/deleteTiddlerAction",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define delete-children()\n\t<$list filter=\"[enlist{!!stream-list}]\">\n\t\t<<delete-children>>\n\t</$list>\n\t<<$action-deletetiddler $filter=\"[enlist{!!stream-list}]\"/>\n\\end\n\n<$list filter=\"[<currentTiddler>has[stream-type]]\">\n\t<$list filter=\"[<currentTiddler>has[parent]]\">\n\t\t<$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"-[<currentTiddler>]\" />\n\t</$list>\n\t<$list variable=\"count\" filter=\"[enlist{!!stream-list}count[]!match[0]]\">\n\t\t<$action-confirm $message=\"Do you wish to delete all tiddlers descended from this tiddler?\">\n\t\t\t<<delete-children>>\n\t\t</$action-confirm>\n\t</$list>\n</$list>"
        },
        "$:/plugins/sq/streams/delete-hook/hook": {
            "title": "$:/plugins/sq/streams/delete-hook/hook",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/delete-hook/hook\ntype: application/javascript\nmodule-type: startup\n\n\\*/\n\n$tw.hooks.addHook(\"th-deleting-tiddler\",function(tiddler) {\n\tif(tiddler.fields[\"draft.of\"]) {\n\t\treturn;\n\t}\n\t\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/deleteTiddlerAction\",null,{currentTiddler : tiddler.fields.title});\n});",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/sq/streams/filters/get-stream-nodes.js": {
            "title": "$:/plugins/sq/streams/filters/get-stream-nodes.js",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/filters/get-stream-nodes.js\ntype: application/javascript\nmodule-type: filteroperator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports[\"get-stream-nodes\"] = function(source,operator,options) {\n\tvar results = [],\n        suffixes = (operator.suffixes || []),\n\t\tmatchTitles = (suffixes[0] || []).indexOf(\"matchtitles\") !== -1;\n\n\tsource(function(tiddler,title) {\n\t\t\n\t\tvar processNode = function(node,nodeTitle) {\n\t\t\tif(node && node.fields[\"stream-list\"] && node.fields[\"stream-type\"]) {\n\t\t\t\tresults.push(nodeTitle);\n\t\t\t\tvar streamList = $tw.utils.parseStringArray(node.fields[\"stream-list\"]);\n\t\t\t\t$tw.utils.each(streamList,function(streamListNodeTitle) {\n\t\t\t\t\tvar streamListNode = options.wiki.getTiddler(streamListNodeTitle);\n\t\t\t\t\tif(streamListNode) {\n\t\t\t\t\t\tprocessNode(streamListNode,streamListNodeTitle);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tresults.push(nodeTitle);\n\t\t\t}\n\t\t}\n\t\tif(tiddler) {\n\t\t\tprocessNode(tiddler,title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/plugins/sq/streams/filters/get-stream-root.js": {
            "title": "$:/plugins/sq/streams/filters/get-stream-root.js",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/filters/get-stream-root.js\ntype: application/javascript\nmodule-type: filteroperator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n\n//\t[[xyz]get-stream-root[]]\n//\t[[xyz]get-stream-root:matchtitles[]]\n//\t[[xyz]get-stream-root:includeall,matchtitles[]]\n\n*/\nexports[\"get-stream-root\"] = function(source,operator,options) {\n\tvar results = [],\n        suffixes = (operator.suffixes || []),\n\t\tincludeAll = (suffixes[0] || []).indexOf(\"includeall\") !== -1,\n\t\tmatchTitles = (suffixes[0] || []).indexOf(\"matchtitles\") !== -1;\n\n\tsource(function(tiddler,title) {\n\t\tvar ancestors = [];\n\t\tif(tiddler && tiddler.fields[\"parent\"] && tiddler.fields[\"stream-type\"]) {\n\t\t\tvar parentTiddler = tiddler;\n\t\t\twhile(parentTiddler) {\n\t\t\t\t\tif(tiddler.fields.title.startsWith(parentTiddler.fields[\"title\"].split(\"/\")[0]) || !matchTitles ) {\n\t\t\t\t\t\tancestors.unshift(parentTiddler.fields.title);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tif(parentTiddler.fields.parent) {\t\n\t\t\t\t\tparentTiddler = options.wiki.getTiddler(parentTiddler.fields.parent);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tancestors.unshift(title);\n\t\t}\n\t\tif(!includeAll) {\n\t\t\tancestors.splice(1);\n\t\t}\n\t\t$tw.utils.pushTop(results,ancestors);\n\t});\n\treturn results;\n};\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/plugins/sq/streams/info/keyboard-shortcuts": {
            "title": "$:/plugins/sq/streams/info/keyboard-shortcuts",
            "text": "!! Streams keyboard shortcuts\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]]\">\n<tr>\n<td>{{!!text}}</td>\n<td><$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{{[<currentTiddler>removeprefix[$:/config/ShortcutInfo/]addprefix[((]addsuffix[))]]}}} prefix=\"\" separator=\" \" suffix=\"\"/></td>\n</tr>\n</$list>\n</tbody>\n</table>\n\nShortcuts can be customized in the [[Control Panel|$:/core/ui/ControlPanel/KeyboardShortcuts]]\n\n''Drag and drop''\n\n* hold <kbd>control</kbd> key to drag and drop and create a copy of the node in another stream tiddler\n* hold <kbd>shift</kbd> key to drag and drop and create a node that transcludes the contents of this node, in another stream tiddler\n\n''for the moment it is a design decision to disallow copying/transcluding the node inside the same root (story) tiddler''\n\n//Note that it is a known limitation that copying a node or transcluding it does not apply to the children of the node. This is on the [[list of things to implement|Roadmap]].//"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/cancel-edit-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/cancel-edit-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-cancel-edit))",
            "text": "<<cancel-edit-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/delete-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/delete-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-delete))",
            "text": "<<delete-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/demote-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/demote-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-demote))",
            "text": "<<demote-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/focus-higher-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/focus-higher-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-focus-higher))",
            "text": "<<focus-higher-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/focus-lower-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/focus-lower-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-focus-lower))",
            "text": "<<focus-lower-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/indent-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/indent-node",
            "tags": "$:/tags/streams/keyboard-shortcuts $:/tags/streams/contextmenu",
            "key": "((streams-indent))",
            "sq-contextmenu-name": "Indent",
            "sq-contextmenu-subtitle": "",
            "text": "<<indent-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/merge-with-previous": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/merge-with-previous",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-merge-with-previous))",
            "prevent-default": "no",
            "text": "<<merge-with-previous-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/promote-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/promote-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-promote))",
            "text": "<<promote-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/rename-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/rename-node",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-rename))",
            "text": "<<rename-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/save-and-continue": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/save-and-continue",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-save-and-continue))",
            "text": "<<save-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/save-and-exit": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/save-and-exit",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-save-and-exit))",
            "text": "<<save-edit-node-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/save-multiple": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/save-multiple",
            "tags": "$:/tags/streams/keyboard-shortcuts",
            "key": "((streams-save-multiple))",
            "text": "<<save-multiple-actions>>"
        },
        "$:/plugins/sq/streams/keyboard-shortcuts/unindent-node": {
            "title": "$:/plugins/sq/streams/keyboard-shortcuts/unindent-node",
            "tags": "$:/tags/streams/keyboard-shortcuts $:/tags/streams/contextmenu",
            "key": "((streams-unindent))",
            "sq-contextmenu-name": "Un-indent",
            "sq-contextmenu-subtitle": "",
            "text": "<<unindent-node-actions>>"
        },
        "$:/plugins/sq/streams/icons/new-node-btn": {
            "title": "$:/plugins/sq/streams/icons/new-node-btn",
            "created": "20200528160920973",
            "modified": "20200528164140128",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n<style>\n  .line{\n    stroke:#868c90;\n  }\n</style>\n  <circle cx=\"10.5\" cy=\"10.5\" r=\"9\" class=\"circle\" fill=\"#fff\" ></circle>\n  <line x1=\"6\" y1=\"10.5\" x2=\"15\" y2=\"10.5\" class=\"line\"></line>\n  <line x1=\"10.5\" y1=\"6\" x2=\"10.5\" y2=\"15\" class=\"line\"></line>\n</svg>"
        },
        "$:/plugins/sq/streams/refresh-hook.js": {
            "title": "$:/plugins/sq/streams/refresh-hook.js",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/refresh-hook.js\ntype: application/javascript\nmodule-type: startup\n\\*/\n\n$tw.hooks.addHook(\"th-page-refreshed\",function handleEvent() {\n\t$tw.wiki.deleteTiddler(\"$:/state/sq/streams/caret-position\");\n});\n\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/sq/streams/releasenotes": {
            "title": "$:/plugins/sq/streams/releasenotes",
            "text": "<h3 id=\"1223-2021-10-03\"><a href=\"https://github.com/saqimtiaz/streams/compare/v1.2.22...v1.2.23\">1.2.23</a> (2021-10-03)</h3>\n<h3 id=\"bug-fixes\">Bug Fixes</h3>\n<ul>\n<li>Fixed issue with duplicate nodes after splitting a node, fixes <a href=\"https://github.com/saqimtiaz/streams/issues/36\">#36</a> (<a href=\"https://github.com/saqimtiaz/streams/commit/b6cf545feb6b73b0e5cb87254faaba2c620d10cc\">b6cf545</a>)</li>\n<li>Specify Relink as a plugin dependency so that it install automatically fromm the SQPL plugin library (<a href=\"https://github.com/saqimtiaz/streams/commit/5d0f5df115ff022b95fb6c172fda65ba64b68d17\">5d0f5df</a>)</li>\n</ul>\n\n",
            "type": "text/vnd.tiddlywiki"
        },
        "$:/config/flibbles/relink/fields/parent": {
            "title": "$:/config/flibbles/relink/fields/parent",
            "created": "20200530105147302",
            "modified": "20200530105155682",
            "type": "text/vnd.tiddlywiki",
            "text": "title"
        },
        "$:/config/flibbles/relink/fields/stream-list": {
            "title": "$:/config/flibbles/relink/fields/stream-list",
            "created": "20200530105147302",
            "modified": "20200530105155682",
            "type": "text/vnd.tiddlywiki",
            "text": "list"
        },
        "$:/plugins/sq/streams/styles": {
            "title": "$:/plugins/sq/streams/styles",
            "created": "20170922203553093",
            "modified": "20170927050808722",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": ".stream-root {\n\tmargin-left: -2.5em;\n}\n\n@media only screen and (max-width: 600px) {\n\t.stream-root {\n\t\tmargin-left: -1em;\n\t}\n}\n\n.stream-row {\n    display: flex;\n    flex: 0 0 auto;\n\tuser-select: none;\n}\n\n.stream-row-children {\n\tdisplay:flex;\n\tflex: 0 0 auto;\n\tflex-direction: column;\n\t/*padding-left: 0.5em;*/\n\tborder-left: 1px solid <<color message-border>>;\n\tmargin-left: 30px;\n}\n\n.stream-row-nochildren + .stream-row-children {\n\tborder-left: none;\n}\n\n\n.stream-node-disabled,\n.stream-node-disabled + div.stream-row-children{\n\tbackground-color: <<color tiddler-editor-border>>;\n}\n\n.stream-node-disabled + div.stream-row-children + div.stream-node-disabled,\n.stream-node-disabled + div.stream-row-children + div.stream-node-disabled + div.stream-row-children,\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children,\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children > div.stream-node-disabled {\n\tbackground-color: transparent;\n}\n\n/* hide last droppable in a list when the last row is disabled */\n.stream-node-disabled + div.stream-row-children + div.stream-droppable.tc-droppable.stream-droppable-terminal{\n\tdisplay: none;\n\t/*visibility: hidden;*/\n}\n\n.stream-node-disabled + div.stream-row-children + .stream-node-disabled + div.stream-row-children + div.stream-droppable.tc-droppable.stream-droppable-terminal{\n\tdisplay: block;\n}\n\n\n/*\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children  {\n\tvisibility: hidden;\n}\n\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children + div + div {\n\tvisibility: visible;\n}\n*/\n\n\n.stream-droppable.tc-droppable.tc-dragover > .tc-droppable-placeholder,\n.stream-droppable.tc-droppable.tc-dragover > div > .tc-droppable-placeholder {\n\tmargin-left: 29px;\n\tline-height: 5px;\n\theight: 5px;\n\tborder: 2px solid <<color dropzone-background>>;\n\tbackground-color: <<color dropzone-background>>;\n}\n\n/*\n.stream-droppable-terminal.tc-drag-over .stream-droppable-spacer {\n\theight: 0;\n}\n*/\n\n.stream-droppable-spacer {\n\theight: 0.3em;\n}\n\n<$vars currentTiddler={{{[prefix[$:/state/sq-context-popup]]}}}>\n[data-node-title=\"{{!!current}}\"],\n[data-node-title=\"{{!!current}}\"] + div{\n\tbackground: <<color notification-background>>;\n\tcolor: <<color message-foreground>>;\n}\n</$vars>\n\n.stream-node-control {\n\tdisplay: flex;\n    flex: 0 0 45px;\n    padding-top: 4px;\n    padding-left: 4px;\n}\n\n.stream-node-control .stream-node-collapser,\n.stream-node-control .stream-node-handle {\n    display: flex;\n    height: 13px;\n    width: 13px;\n    margin-top: 4px;\n    border-radius: 50%;\n    justify-content: center;\n    align-items: center;\n}\n\n.stream-node-control.stream-node-control-addnew .stream-node-handle {\n\twidth: 20px;\n\theight: 20px;\n\tmargin-top: 0;\n}\n\n.stream-node-control.stream-node-control-addnew .stream-node-collapser {\n\twidth: 16px;\n}\n\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible svg {\n\topacity: 0.8;\n}\n\n\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible svg circle {\n\tfill: <<color tiddler-controls-foreground>>;\n\topacity: 0.6;\n}\n\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible svg line.line {\n\tstroke: <<color foreground>>;\n\topacity: 1;\n}\n\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible:hover svg circle {\n\tfill: <<color tiddler-controls-foreground-hover>>;\n}\n\n.stream-node-control .stream-node-collapser {\n\theight: 13px;\n\twidth: 20px;\n\topacity:0;\n}\n\n.stream-row-nochildren .stream-node-collapser {\n\tvisibility: hidden;\n}\n\n.stream-row:hover .stream-node-collapser,\n.stream-row-children-collapsed.stream-row:hover .stream-node-collapser {\n\topacity: 0.4;\n}\n\n.stream-row:hover .stream-node-collapser:hover,\n.stream-row-children-collapsed.stream-row:hover .stream-node-collapser:hover {\n\topacity: 0.9;\n}\n\n.stream-row-children-collapsed .stream-node-control .stream-node-collapser {\n\topacity: 0.4;\n}\n\n.stream-node-collapser.tc-btn-invisible,\n.stream-node-collapser.tc-btn-invisible:focus {\n\toutline: none;\n}\n\n.stream-node-collapser svg {\n\ttransform: rotateZ(90deg);\n\ttransition: transform 200ms ease-in-out 0s;\n}\n\n.stream-row-children-collapsed .stream-node-collapser svg {\n\ttransform: rotateZ(0deg);\n}\n\n/*\n.stream-node-control .stream-node-handle-wrapper .stream-node-handle {\n\twidth: 13px;\n\theight: 13px;\n\tdisplay: flex;\n\talign-items : center;\n\tjustify-content: center;\n}\n*/\n\n.stream-node-control .stream-node-handle .stream-node-handle-inner {\n    border-radius: 50%;\n    width: 6px;\n    height: 6px;\n    background-color: <<color foreground>>;\n\topacity: 0.3;\n}\n\n.stream-node-control .sq-contextmenu-container {\n\tdisplay: flex;\n}\n\n/*\n.stream-row:hover .stream-node-control .stream-node-handle-wrapper .stream-node-handle-inner {\n\topacity: 0.7;\n}\n*/\n\n.stream-row:hover .stream-node-control .stream-node-handle:hover .stream-node-handle-inner {\n\topacity: 1;\n} \n\n<$vars currentTiddler={{{[prefix[$:/state/sq-context-popup]]}}}>\n[data-node-title=\"{{!!current}}\"] .stream-node-handle .stream-node-handle-inner  {\n    border: 5px solid #5778d8;\n    opacity: 1;\n}\n</$vars>\n\n\n.stream-node-block {\n    overflow-wrap: break-word;\n\tmax-width: {{$:/config/sq/streams/node-max-width}}px;\n    min-height: calc(1.5em + 8px);\n    box-sizing: border-box;\n    margin-top: -1px;\n    min-width: 100px;\n    width: 100%;\n    line-height: 1.5em;\n    cursor: text;\n    padding-top: 4px;\n    padding-bottom: 4px;\n\tuser-select: text;\n\t/*white-space: pre-wrap;*/\n}\n\n.stream-node-block textarea {\n\twidth: 100%;\n\toutline-color: <<color tiddler-editor-border>>;\n\tborder: 1px solid <<color tiddler-editor-border>>;\n\n\tresize: none;\n}\n\n.stream-node-block textarea.streams-editor {\n\tline-height:1.5em;\n\tmargin-bottom: 0.6em;\n}\n\n.stream-node-block > h1:first-child,\n.stream-node-block > h2:first-child,\n.stream-node-block > h3:first-child,\n.stream-node-block > h4:first-child,\n.stream-node-block > h5:first-child,\n.stream-node-block > h6:first-child,\n.stream-node-block p:first-child {\n\tmargin-top:0;\n}\n\n.stream-node-block > h1:last-child,\n.stream-node-block > h2:last-child,\n.stream-node-block > h3:last-child,\n.stream-node-block > h4:last-child,\n.stream-node-block > h5:last-child,\n.stream-node-block > h6:last-child,\n.stream-node-block p:last-child {\n\tmargin-bottom:0;\n}\n\nspan.sq-breadcrumbs-fragment {\n    white-space: nowrap;\n    overflow: hidden;\n    display: inline-block;\n    text-overflow: ellipsis;\n    max-width: calc({{$:/config/sq/streams/node-max-width}}px - 50px);\n}\n\nspan.sq-breadcrumbs-fragment a.tc-tiddlylink {\n\tcolor: <<color foreground>>;\n}\n\n/*** framed engine styles ***/\n\n.tc-tiddler-frame .stream-node-block input.tc-edit-texteditor,\n.tc-tiddler-frame .stream-node-block textarea.tc-edit-texteditor,\n.tc-tiddler-frame .stream-node-block iframe.tc-edit-texteditor {\n\tbackground: <<color background>> !important;\n\tmargin-top:0;\n\tmargin-bottom: -1.6em;\n}\n\n<$reveal state=\"$:/config/sq/streams/enable-edit-toolbar\" type=\"nomatch\" text=\"yes\">\n.stream-node-block .tc-editor-toolbar {\n\tdisplay: none;\n}\n</$reveal>\n\n<$reveal state=\"$:/state/sq/streams/global-drag-state\" type=\"match\" text=\"yes\">\n\n/** active drag css **/\n\n</$reveal>\n\n<$reveal state=\"$:/state/sq/streams/global-drag-state\" type=\"nomatch\" text=\"yes\">\n\n/**no active drag css **/\n\n</$reveal>"
        },
        "$:/plugins/sq/streams/breadcrumbs-view-template": {
            "title": "$:/plugins/sq/streams/breadcrumbs-view-template",
            "created": "20200529205858594",
            "list-before": "$:/core/ui/ViewTemplate/body",
            "modified": "20200530055142652",
            "tags": "$:/tags/ViewTemplate",
            "type": "text/vnd.tiddlywiki",
            "text": "\\whitespace trim\n\\define stream-show-breadcrumbs()\n<$list filter=\"[<currentTiddler>has[stream-type]]\">\n\t<$list filter=\"[<currentTiddler>has[parent]]\">\n\t\t<$set name=\"currentTiddler\" filter=\"[{!!parent}]\" select=\"0\">\n\t\t\t<<stream-show-breadcrumbs>>\n\t\t</$set>\n\t</$list>\t\n\t<$list filter=\"[<currentTiddler>!match<storyTiddler>]\">\n\t\t<$wikify name=\"display-title\" text={{{ [<currentTiddler>!is[binary]get[text]!is[blank]] ~[{!!title}] }}}>\n\t\t\t<span class=\"sq-breadcrumbs-fragment\">\n\t\t\t<$link to=<<currentTiddler>>>\n\t\t\t\t<$text text={{{ [<display-title>split[]first[50]join[]] }}}/>\n\t\t\t</$link>>\n\t\t\t</span>\n\t\t</$wikify>\n\t</$list>\n</$list>\n\\end\n<$list filter=\"[{$:/config/sq/streams/enable-breadcrumbs}match[yes]]\" variable=\"_NULL\">\n<<stream-show-breadcrumbs>>\n</$list>\n\n"
        },
        "$:/plugins/sq/streams/editor-template": {
            "title": "$:/plugins/sq/streams/editor-template",
            "created": "20200601145424630",
            "modified": "20200602053704598",
            "tags": "",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$streams-edit tag=\"textarea\" autoHeight=\"yes\" minHeight=\"1em\" focus=\"yes\" select=\"false\" class=\"streams-editor tc-edit-texteditor tc-edit-texteditor-body\" caretPosition={{{[{$:/state/sq/streams/caret-position}!is[blank]else[end]]}}}><$set name=\"targetTiddler\"value=<<currentTiddler>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"><$reveal type=\"nomatch\" state=<<config-visibility-title>> text=\"hide\" class=\"tc-text-editor-toolbar-item-wrapper\"><$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\nmode=\"inline\"/></$reveal></$list></$set></$streams-edit>"
        },
        "$:/plugins/sq/streams/nodes-list-template": {
            "title": "$:/plugins/sq/streams/nodes-list-template",
            "created": "20171022203553093",
            "modified": "20171122050808722",
            "text": "\\import [[$:/plugins/sq/streams/action-macros]] [all[shadows+tiddlers]tag[$:/tags/streams/actionmacros]]  [all[shadows+tiddlers]tag[$:/tags/streams/user-actionmacros]]\n\\whitespace trim\n\n<$vars stream-root-title=<<currentTiddler>>\n\tcontextmenu-state=<<qualify \"$:/state/sq-context-popup\">>\n\trow-edit-state=<<qualify \"$:/state/sq/streams/current-edit-tiddler\">>\n\tdrag-title-state=<<qualify \"$:/state/sq/streams/current-drag-title\">>\n\tdrag-title-nextsibling-state=<<qualify \"$:/state/sq/streams/current-drag-nextsibling\">> \n>\n\t<$eventcatcher\n\t\tevents=\"click\"\n\t\tselector=\".stream-node-ctrl-btn\"\n\t\tactions-click=<<node-ctrl-btn-actions>>\n\t\ttag=\"div\"\n\t>\n\t<$eventcatcher\n\t\tevents=\"dblclick swiped-right swiped-left\"\n\t\ttag=\"div\"\n\t\tselector=\".stream-row\"\n\t\tactions-dblclick=<<toggle-row-edit-state>>\n\t\tactions-swiped-right=<<swiped-right-actions>>\n\t\tactions-swiped-left=<<swiped-left-actions>>\n\t>\n\t<$eventcatcher\n\t\ttag=\"div\"\n\t\tevents=\"contextmenu\"\n\t\tselector=\".sq-contextmenu-container\"\n\t\tactions-contextmenu=<<oncontext-menu-actions>>\n\t>\n\t<$swiper\n\t\ttag=\"div\"\n\t\tenable={{$:/config/sq/streams/swipe-enabled}}\n\t\tswipethreshold={{$:/config/sq/streams/swipe-threshold}}\n\t>\n\t<div class={{{ stream-root [{$:/state/sq/nodes/global-drag-state}match[yes]then[stream-dragactive]] [<currentTiddler>!has[stream-list]then[stream-newlist]] +[join[ ]] }}}>\n\t\t{{||$:/plugins/sq/streams/templates/stream-root-template}}\n\t\t<$list filter=\"[all[current]match<stream-root-title>]\" variable=\"_NULL\">\n\t\t\t<!-- if we are the root, add a button to add more nodes-->\n\t\t\t<div class=\"stream-row\">\n\t\t\t\t<div class=\"stream-node-control stream-node-control-addnew\">\n\t\t\t\t\t<div class=\"stream-node-collapser\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"stream-node-handle\">\n\t\t\t\t\t\t<$button tag=\"div\" class=\"tc-btn-invisible\" tooltip=\"add node\" actions=<<add-new-node-actions>> >\n\t\t\t\t\t\t\t{{$:/plugins/sq/streams/icons/new-node-btn}}\n\t\t\t\t\t\t</$button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/streams/root-buttons]]\" variable=\"btnTiddler\">\n\t\t\t\t\t\t<div class=\"stream-node-handle\">\n\t\t\t\t\t\t\t<$transclude tiddler=<<btnTiddler>>/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$list>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stream-node-block\">\n\t\t\t\t\t<!--consider moving last child dropzone in here, though thats for children too-->\n\t\t\t\t</div>\n\t\t\t</div>\t\t\t\t\n\t\t\t<$set name=\"currentTiddler\" filter={{{[<contextmenu-state>get[current]]}}}>\n\t\t\t\t{{||$:/plugins/sq/streams/contextmenu/contextmenu-template}}\n\t\t\t</$set>\n\t\t</$list>\t\n\t</div>\n\t</$swiper>\n\t</$eventcatcher>\n\t</$eventcatcher>\n\t</$eventcatcher>\n</$vars>\n"
        },
        "$:/plugins/sq/streams/templates/stream-root-template": {
            "title": "$:/plugins/sq/streams/templates/stream-root-template",
            "text": "\\whitespace trim\n<$vars dropTargetTiddler=<<currentTiddler>> >\n\t<$list filter=\"[list[!!stream-list]!is[missing]]\">\n\t\t<$set name=\"enable-dnd\" filter=\"[<enable-dnd>match[no]] ~[<drag-title-state>get[text]match<currentTiddler>then[no]]\" select=\"0\">\n\t\t\t{{||$:/plugins/sq/streams/templates/stream-row-template}}\n\t\t</$set>\n\t</$list>\n\t<$tiddler tiddler=\"\">\n\t\t<!-- to drop after the last child of any list level-->\n\t\t<$droppable\n\t\t\tactions=<<stream-drop-actions>>\n\t\t\ttag=\"div\"\n\t\t\tenable=<<enable-dnd>>\n\t\t\tclass=\"stream-droppable stream-droppable-terminal\"\n\t\t\tdisabledClass=\"stream-node-disabled\"\n\t\t>\n\t\t\t<div class=\"tc-droppable-placeholder\">\n\t\t\t&nbsp;\n\t\t\t</div><!-- idea only want below div with height when its a child with no more children-->\n\t\t\t<$list filter=\"[<currentTiddler>!has[stream-list]]\" variable=\"_NULL\"><div class=\"stream-droppable-spacer\"/></$list>\n\t\t</$droppable>\n\t</$tiddler>\n</$vars>"
        },
        "$:/plugins/sq/streams/templates/stream-row-body": {
            "title": "$:/plugins/sq/streams/templates/stream-row-body",
            "text": "<$transclude mode=\"block\"/>"
        },
        "$:/plugins/sq/streams/templates/stream-row-template": {
            "title": "$:/plugins/sq/streams/templates/stream-row-template",
            "text": "\\whitespace trim\n<$qualify\n\tname=\"row-children-visibility-state\"\n\ttitle={{{ [[$:/state/sq/streams/visibility/]addsuffix<currentTiddler>] }}}\n>\n<$droppable \n\tactions=<<stream-drop-actions>>\n\ttag=\"div\"\n\tclass={{{ stream-droppable [list[!!stream-list]is[tiddler]then[]else[stream-row-nochildren]] +[join[ ]]}}}\n\tenable={{{[<drag-title-nextsibling-state>get[text]match<currentTiddler>then[no]] ~[<enable-dnd>]}}}\n\tdisabledClass=\"stream-node-disabled\"\n\tdata-node-title=<<currentTiddler>>\n>\n\t<div class=\"tc-droppable-placeholder\"/>\n\t<div class={{{ stream-row [<row-children-visibility-state>get[text]match[hide]then[stream-row-children-collapsed]] +[join[ ]]}}}\n\t\tdata-node-title=<<currentTiddler>>\n\t\tdata-node-tags={{!!tags}}\n\t>\n\t\t<$draggable\n\t\t\ttag=\"div\"\n\t\t\ttiddler=<<currentTiddler>>\n\t\t\tstartactions=<<node-drag-start-actions>>\n\t\t\tendactions=<<node-drag-end-actions>>\n\t\t\tclass=\"stream-node-control sq-contextmenu-container\"\n\t\t\tdata-node-title=<<currentTiddler>>\n\t\t>\n\t\t\t<button type=\"button\" class=\"tc-btn-invisible stream-node-ctrl-btn stream-node-collapser\" data-btn-role=\"stream-node-visibility\" data-rowchildren-visibility-state=<<row-children-visibility-state>>>\n\t\t\t\t{{$:/plugins/sq/streams/icons/node-expand-arrow}}\n\t\t\t</button>\n\t\t\t<div class=\"stream-node-handle tc-btn-invisible stream-node-ctrl-btn\" data-btn-role=\"stream-node-decorator\" data-node-title=<<currentTiddler>>>\n\t\t\t\t\t<div class=\"stream-node-handle-inner\"/>\n\t\t\t</div>\n\t\t</$draggable>\n\t\t<div class=\"stream-node-block\">\n\t\t\t<$list filter=\"[<row-edit-state>get[text]!is[blank]else[]match<currentTiddler>]\" variable=\"NULL\" emptyMessage=\"\"\"{{||$:/plugins/sq/streams/templates/stream-row-body}}\"\"\">\n\t\t\t\t<$keyboard-plus shortcutTag=\"$:/tags/streams/keyboard-shortcuts\">\n\t\t\t\t\t{{||$:/plugins/sq/streams/editor-template}}\n\t\t\t\t</$keyboard-plus>\t\t\t\n\t\t\t</$list>\n\t\t</div>\n\t</div>\n</$droppable>\n<$reveal\n\ttag=\"div\"\n\ttype=\"nomatch\"\n\tstateTitle=<<row-children-visibility-state>>\n\ttext=\"hide\"\n\tclass=\"stream-row-children\"\n>\n\t\t{{||$:/plugins/sq/streams/templates/stream-root-template}}\n</$reveal>\n</$qualify>"
        },
        "$:/plugins/sq/streams/stream-view-template": {
            "title": "$:/plugins/sq/streams/stream-view-template",
            "created": "20170922203553093",
            "modified": "20170929050808722",
            "tags": "[[$:/tags/ViewTemplate]]",
            "list-after": "$:/core/ui/ViewTemplate/body",
            "text": "<$list filter=\"\"\"[<folded-state>get[text]!is[blank]else[show]!match[hide]]\"\"\" variable=\"_NULL\">\n<$list filter=\"\"\"[all[current]subfilter{$:/config/sq/streams/stream-enable-filter}]\"\"\">\n{{||$:/plugins/sq/streams/nodes-list-template}}\n</$list>\n</$list>"
        },
        "$:/plugins/sq/streams/sq-ui-styles": {
            "title": "$:/plugins/sq/streams/sq-ui-styles",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "/** checkbox switches start **/\n/** https://www.w3schools.com/howto/howto_css_switch.asp **/\n/* The switch - the box around the slider */\nlabel.squi-form-switch {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 36px;\n\theight: 12px;\n}\n\n/* Hide default HTML checkbox */\nlabel.squi-form-switch input {\n\topacity: 0;\n\twidth: 0;\n\theight: 0;\n}\n\n/* The slider */\nlabel.squi-form-switch span {\n\tposition: absolute;\n\tcursor: pointer;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground-color: <<color tiddler-controls-foreground>>;\n\t-webkit-transition: .2s;\n\ttransition: .2s;\n}\n\nlabel.squi-form-switch span:before {\n\tposition: absolute;\n\tcontent: \"\";\n\theight: 20px;\n\twidth: 20px;\n\tleft: -1px;\n\ttop: -4px;\n\tbottom: 4px;\n\tbackground-color: <<color background>>;\n\t-webkit-transition: .2s;\n\ttransition: .2s;\n\tbox-shadow: 0 1px 3px 0 rgba(0,0,0,0.7);\n}\n\nlabel.squi-form-switch input:checked + span {\n\tbackground-color: rgba(26,115,232,0.5);\n}\n\nlabel.squi-form-switch input:checked + span:before {\n\tbackground-color: rgb(26,115,232);\n\topacity: 1;\n}\n\nlabel.squi-form-switch input:focus + span {\n\tbox-shadow: 0 0 1px #2196F3;\n}\n\nlabel.squi-form-switch input:checked + span:before {\n\t-webkit-transform: translateX(17px);\n\t-ms-transform: translateX(17px);\n\ttransform: translateX(17px);\n}\n\nlabel.squi-form-switch span {\n\tborder-radius: 12px;\n}\n\nlabel.squi-form-switch span:before {\n\tborder-radius: 50%;\n}\n\ndiv.squi-form-label {\n\t\n}\n\n/*** checkbox switches end ***/\n\n/** form select elements **/\n.squi-form-select {\n\tappearance: none;\n\tbackground: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='12' fill='%235F6368'%3E%3Cpath d='M0 0h24L12 12z'/%3E%3C/svg%3E\") calc(100% - 8px) center no-repeat;\n\tbackground-color: rgb(241,243,244);\n\tbackground-size: 10px;\n\tborder: none;\n\tborder-radius: 4px;\n\tcolor: rgb(32,33,36);\n\tcursor: pointer;\n\tmax-width: 100%;\n\toutline: none;\n\tpadding: 6px 21px 6px 8px;\n/*\twidth: 200px;*/\n}\n\ninput.squi-form-input {\n\tborder: 1px solid <<color tiddler-controls-foreground>>;\n\tborder-radius: 3px;\n\tbackground-color: rgb(241,243,244);\n\tpadding: 6px;\n}\n\ninput.squi-form-input:focus {\n\toutline-color: #ccc;\n}\n\n\n.sq-list-group {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-left: 0;\n\tmargin-bottom: 0;\n\tbox-sizing: border-box;\n}\n\n.sq-list-group-box-shadow {\n\tbox-shadow:1px 1px 5px rgba(0, 0, 0, 0.3);\t\n\tborder-bottom-left-radius: .25rem;\n\tborder-bottom-right-radius: .25rem;\n\tborder-top-left-radius: .25rem;\n\tborder-top-right-radius: .25rem;\t\t\n}\n\t\n.sq-list-group-item\t{\n\tposition: relative;\n\tdisplay: block;\n\tpadding: 0.75rem 1.25rem;\n\tbackground-color:  <<color background>>;\n\tborder: 1px solid rgba(0,0,0,.125);\n\twidth: 100%;\n\tcolor: #495057;\n\ttext-align:\tinherit;\t\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between!important;\n\talign-items: center!important;\n\tword-spacing: 0.1em;\n}\n\n\n.sq-list-group-item+.sq-list-group-item {\n\tborder-top-width: 0;\n}\n\n.sq-list-group-item:first-child {\n\tborder-top-left-radius: .25rem;\n\tborder-top-right-radius: .25rem;\n}\n\n.sq-list-group-item:last-child {\n\tborder-bottom-left-radius: .25rem;\n\tborder-bottom-right-radius: .25rem;\n}\n\n.sq-list-stream-settings {\n\tfont-size: 90%;\n}\n\ninput.sq-search-input {\n    display: block;\n    width: 100%;\n    height: calc(1.5em + .75rem + 2px);\n    padding: .375rem .75rem;\n    font-size: 0.8rem;\n    font-weight: 400;\n    line-height: 1.5;\n    color: #495057;\n    background-color:  <<color background>>;\n    background-clip: padding-box;\n    border: 1px solid #ced4da;\n    border-radius: .25rem;\n    transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n    margin-bottom: 0.75em;\n}\n\ninput.sq-search-input:focus {\ncolor: #495057;\n    background-color:  <<color background>>;\n    border-color: #80bdff;\n    outline: 0;\n    box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);\n}\n"
        },
        "$:/plugins/sq/streams/ui/templates/settings/input-switch": {
            "title": "$:/plugins/sq/streams/ui/templates/settings/input-switch",
            "text": "<label class=\"squi-form-label\"><$link tooltip={{!!description}}>{{!!caption}}</$link></label><$checkbox field=\"text\" checked=\"yes\" unchecked=\"no\" class=\"squi-form-switch\"/>"
        },
        "$:/plugins/sq/streams/ui/templates/settings/input": {
            "title": "$:/plugins/sq/streams/ui/templates/settings/input",
            "text": "<label class=\"squi-form-label\"><$link tooltip={{!!description}}>{{!!caption}}</$link></label>\n<$edit-text tag=\"input\" class=\"squi-form-input\"/>"
        },
        "$:/plugins/sq/streams/ui/templates/settings/select": {
            "title": "$:/plugins/sq/streams/ui/templates/settings/select",
            "text": "<label class=\"squi-form-label\"><$link tooltip={{!!description}}>{{!!caption}}</$link></label>\n<$vars cnt={{{[enlist{!!option-names}count[]]}}}>\n<$select class=\"squi-form-select\">\n<$list filter=\"[range<cnt>]\" variable=\"index\">\n<option value={{{[enlist{!!option-values}nth<index>]}}}><$text text={{{[enlist{!!option-names}nth<index>]}}}/></option>\n</$list>\n</$select>\n</$vars>"
        },
        "$:/plugins/sq/lib/swipeevents.js": {
            "title": "$:/plugins/sq/lib/swipeevents.js",
            "text": "/*\\\ntitle: $:/plugins/sq/lib/swipeevents.js\ntype: application/javascript\nmodule-type: library\nBased on https://github.com/john-doherty/swiped-events\nhttps://github.com/umanghome/swipe-listener\nhttps://github.com/scriptex/touchsweep/blob/master/src/touchsweep.js\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.platforms = [\"browser\"];\n\nfunction SwipeEventsFactory(element,options) {\n\n\tif(typeof window.CustomEvent !== 'function') {\n\t\t\n\t\twindow.CustomEvent = function (event, params) {\n\t\t\tparams = params || { bubbles: false, cancelable: false, detail: undefined };\n\t\t\tvar evt = document.createEvent('CustomEvent');\n\t\t\tevt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t\t\treturn evt;\n\t\t};\n\t\twindow.CustomEvent.prototype = window.Event.prototype;\n\t}\n\t\n\tif(!element) {\n\t\treturn;\n\t}\n\telement.addEventListener(\"touchstart\", handleTouchStart, false);\n\telement.addEventListener(\"touchmove\", handleTouchMove, false);\n\telement.addEventListener(\"touchend\", handleTouchEnd, false);\n\t\n\toptions = options || {};\n\t\n\tvar xDown = null,\n\t\tyDown = null,\n\t\txDiff = null,\n\t\tyDiff = null,\n\t\ttimeDown = null,\n\t\tstartEl = null,\n\t\tdefaults = {\n\t\t\t\"swipe-threshold\": 20,\n\t\t\t\"swipe-timeout\": 500\n\t\t};\n\t\t\n\t$tw.utils.extend(defaults,options);\t\n\n\t/**\n\t * Fires swiped event if swipe detected on touchend\n\t * @param {object} e - browser event object\n\t * @returns {void}\n\t */\n\tfunction handleTouchEnd(e) {\n\n\t\t// if the user released on a different target, cancel!\n\t\tif (startEl !== e.target) return;\n\n\t\tvar swipeThreshold = parseInt(getNearestAttribute(startEl, 'data-swipe-threshold', defaults[\"swipe-threshold\"]), 10); // default 20px\n\t\tvar swipeTimeout = parseInt(getNearestAttribute(startEl, 'data-swipe-timeout', defaults[\"swipe-timeout\"]), 10);\t   // default 500ms\n\t\tvar timeDiff = Date.now() - timeDown;\n\t\tvar eventType = '';\n\t\tvar changedTouches = e.changedTouches || e.touches || [];\n\n\t\tif (Math.abs(xDiff) > Math.abs(yDiff)) { // most significant\n\t\t\tif (Math.abs(xDiff) > swipeThreshold && timeDiff < swipeTimeout) {\n\t\t\t\tif (xDiff > 0) {\n\t\t\t\t\teventType = 'swiped-left';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\teventType = 'swiped-right';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (Math.abs(yDiff) > swipeThreshold && timeDiff < swipeTimeout) {\n\t\t\tif (yDiff > 0) {\n\t\t\t\teventType = 'swiped-up';\n\t\t\t}\n\t\t\telse {\n\t\t\t\teventType = 'swiped-down';\n\t\t\t}\n\t\t}\n\n\t\tif (eventType !== '') {\n\n\t\t\tvar eventData = {\n\t\t\t\tdir: eventType.replace(/swiped-/, ''),\n\t\t\t\txStart: parseInt(xDown, 10),\n\t\t\t\txEnd: parseInt((changedTouches[0] || {}).clientX || -1, 10),\n\t\t\t\tyStart: parseInt(yDown, 10),\n\t\t\t\tyEnd: parseInt((changedTouches[0] || {}).clientY || -1, 10)\n\t\t\t};\n\n\t\t\t// fire `swiped` event event on the element that started the swipe\n\t\t\tstartEl.dispatchEvent(new CustomEvent('swiped', { bubbles: true, cancelable: true, detail: eventData }));\n\n\t\t\t// fire `swiped-dir` event on the element that started the swipe\n\t\t\tstartEl.dispatchEvent(new CustomEvent(eventType, { bubbles: true, cancelable: true, detail: eventData }));\n\t\t}\n\n\t\t// reset values\n\t\txDown = null;\n\t\tyDown = null;\n\t\ttimeDown = null;\n\t}\n\n\t/**\n\t * Records current location on touchstart event\n\t * @param {object} e - browser event object\n\t * @returns {void}\n\t */\n\tfunction handleTouchStart(e) {\n\n\t\t// if the element has data-swipe-ignore=\"true\" we stop listening for swipe events\n\t\tif (e.target.getAttribute('data-swipe-ignore') === 'true') return;\n\n\t\tstartEl = e.target;\n\n\t\ttimeDown = Date.now();\n\t\txDown = e.touches[0].clientX;\n\t\tyDown = e.touches[0].clientY;\n\t\txDiff = 0;\n\t\tyDiff = 0;\n\t}\n\n\t/**\n\t * Records location diff in px on touchmove event\n\t * @param {object} e - browser event object\n\t * @returns {void}\n\t */\n\tfunction handleTouchMove(e) {\n\n\t\tif (!xDown || !yDown) return;\n\n\t\tvar xUp = e.touches[0].clientX;\n\t\tvar yUp = e.touches[0].clientY;\n\n\t\txDiff = xDown - xUp;\n\t\tyDiff = yDown - yUp;\n\t}\n\n\t/**\n\t * Gets attribute off HTML element or nearest parent\n\t * @param {object} el - HTML element to retrieve attribute from\n\t * @param {string} attributeName - name of the attribute\n\t * @param {any} defaultValue - default value to return if no match found\n\t * @returns {any} attribute value or defaultValue\n\t */\n\tfunction getNearestAttribute(el, attributeName, defaultValue) {\n\n\t\t// walk up the dom tree looking for data-action and data-trigger\n\t\twhile (el && el !== document.documentElement) {\n\n\t\t\tvar attributeValue = el.getAttribute(attributeName);\n\n\t\t\tif (attributeValue) {\n\t\t\t\treturn attributeValue;\n\t\t\t}\n\n\t\t\tel = el.parentNode;\n\t\t}\n\n\t\treturn defaultValue;\n\t}\n};\n\nexports.SwipeEvents = SwipeEventsFactory;\n\n})();",
            "type": "application/javascript",
            "module-type": "library",
            "Based on https": "//github.com/john-doherty/swiped-events",
            "https": "//github.com/scriptex/touchsweep/blob/master/src/touchsweep.js"
        },
        "$:/plugins/sq/streams/action-unselect.js": {
            "title": "$:/plugins/sq/streams/action-unselect.js",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/action-unselect.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar UnselectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nUnselectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nUnselectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nUnselectWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nUnselectWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nUnselectWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tif (window.getSelection) {\n\t\twindow.getSelection().removeAllRanges();\n\t} else if (document.selection) {\n\t\tdocument.selection.empty();\n\t}\n\treturn true;\n};\n\nUnselectWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-unselect\"] = UnselectWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/sq/streams/action-withinput.js": {
            "title": "$:/plugins/sq/streams/action-withinput.js",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/action-withinput.js\ntype: application/javascript\nmodule-type: widget\n\nPrompt user for input before executing actions contained inside the widget.\nThe string entered by the user is available in the variable userInput in the actions contained in the widget.\n\nPrompt user for confirmation before executing actions contained inside the widget.\nIf the user cancels, the actions are not executed.\n\nExample:\n<$button>go\n<$action-withinput message=\"What is your name?\" actions=\"\"\"<$action-setfield $tiddler=\"name\" $value=<<userInput>>/>\"\"\" />\n</$button>\n\nParameters:\nmessage : message to display\ndefault: default value, defaults to an empty string\n\n\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WithInputWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWithInputWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWithInputWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWithInputWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"message\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nWithInputWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"message\"] || changedAttributes[\"default\"] || changedAttributes[\"actions\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nWithInputWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tif(this.message && this.actions) {\n\t\tvar userData = prompt(this.message,this.defaultValue);\n\t\tif(userData != null) {\n\t\t\tthis.setVariable(\"userInput\",userData);\n\t\t\tthis.invokeActionString(this.actions,this,event);\n\t\t\treturn true;\n\t\t}\n\t}\n};\n\nWithInputWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-withinput\"] = WithInputWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/sq/streams/widgets/keyboard-plus.js": {
            "title": "$:/plugins/sq/streams/widgets/keyboard-plus.js",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/widgets/keyboard-plus.js\ntype: application/javascript\nmodule-type: widget\n\\*/\n(function(){\n\t\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t\n\t\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\t\t// CM triggers two events\n\t\t\t// second event has:\n\t\t\t//\t\tdefaultPrevented : true\n\t\t\t//\t\tdetail: 0\n\t\t\t// \t\teventPhase 3 (instead of 2)\n\t\t\t// \t\tisComposing : false\n\t\t\tif(!event.defaultPrevented) {\n\t\t\t\tvar key, action, preventDefault;\n\t\t\t\tfor(var i=0; i<self.shortcutTiddlers.length; i++) {\n\t\t\t\t\tif(self.shortcutParsedList[i] !== undefined && $tw.keyboardManager.checkKeyDescriptors(event,self.shortcutParsedList[i])) {\n\t\t\t\t\t\tkey = self.shortcutParsedList[i];\n\t\t\t\t\t\taction = self.shortcutActionList[i];\n\t\t\t\t\t\tpreventDefault = self.shortcutPreventDefaultList[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(key !== undefined) {\n\t\t\t\t\tif(preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tObject.defineProperty(event,\"sqHandled\",{value:true});\n\t\t\t\t\t//event.sqHandled = true;\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t//event.stopImmediatePropagation();\n\t\t\t\t\tself.invokeActionString(action,self,event);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t},false);\n\t\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\t\n}\t\n\t\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.shortcutTiddlerTag = this.getAttribute(\"shortcutTag\");\n\t//var keyInfoArray = [];\n\t\n\tthis.shortcutTiddlers = this.wiki.getTiddlersWithTag(this.shortcutTiddlerTag);\n\tthis.shortcutKeysList = [];\n\tthis.shortcutActionList = [];\n\tthis.shortcutParsedList = [];\n\tthis.shortcutPreventDefaultList = [];\n\t\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tvar title = this.shortcutTiddlers[i],\n\t\t\ttiddlerFields = this.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutPreventDefaultList[i] = tiddlerFields[\"prevent-default\"] && tiddlerFields[\"prevent-default\"] === \"no\" ? false : true;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? $tw.keyboardManager.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n\t\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\t\n\tvar newList = this.wiki.getTiddlersWithTag(this.shortcutTiddlerTag)\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t($tw.keyboardManager.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t//\tthis.updateShortcutLists(newList);\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n\nKeyboardWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tif(!variables) {\n\t\tvariables = {};\n\t}\n\t\n\tvar activeElement = document.activeElement;\n\tvar selection;\n\tif(activeElement && activeElement.tagName === \"IFRAME\") {\n\t\tvar idoc = activeElement.contentDocument || activeElement.contentWindow.document;\n\t\tactiveElement = idoc.activeElement;\n\t\tselection = idoc.getSelection();\n\t} else {\n\t\tselection = window.getSelection();\n\t}\n\n\tif(window.CodeMirror && document.activeElement.closest(\".CodeMirror\")) {\n\t\tvar cm = document.activeElement.closest(\".CodeMirror\").CodeMirror;\n\t\tvar cursor = cm.getCursor(\"start\");\n\t\tvar startRange = cm.getRange({\"line\":0,\"ch\":0},{\"line\":cursor.line,\"ch\":cursor.ch});\n\t\tvar selectionStart = startRange.length;\n\t\tvar selection = cm.getSelection();\n\t\tvar selectionEnd = selectionStart + selection.length;\n\t\t\n\t\tvariables[\"selectionStart\"] = startRange.length.toString();\n\t\tvariables[\"selectionEnd\"] = (selectionStart + selection.length).toString();\n\t\tvariables[\"selection\"] = cm.getSelection().toString();\n\t} else if(activeElement && selection && ((activeElement.tagName === \"INPUT\" && activeElement.type === \"TEXT\") || activeElement.tagName === \"TEXTAREA\")) {\n\t\tvariables[\"selectionStart\"] = activeElement.selectionStart.toString();\n\t\tvariables[\"selectionEnd\"] = activeElement.selectionEnd.toString();\n\t\tvariables[\"selection\"] = selection.toString();\n\t}\n\n\t//this.selection_original_invokeActionString(actions,triggeringWidget,event,variables);\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).invokeActionString.call(this,actions,triggeringWidget,event,variables);\n}\n\nexports[\"keyboard-plus\"] = KeyboardWidget;\n\n})();\t",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/sq/streams/streams-edit": {
            "title": "$:/plugins/sq/streams/streams-edit",
            "text": "/*\\\n\ntitle: $:/plugins/sq/streams/streams-edit\ntype: application/javascript\nmodule-type: widget-subclass\n\n\\*/\n\nexports.baseClass = \"edit\";\nexports.name = \"streams-edit\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\nexports.prototype = {};\n\nexports.prototype.getEditorType = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\tvar editorType;\n\tif(type === \"text/vnd.tiddlywiki\") {\n\t\teditorType = this.wiki.getTiddlerText(\"$:/config/sq/streams/editor-engine\");\n\t\tif((!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/codemirror\") || $tw.wiki.getTiddlerText(\"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror\",\"no\") === \"yes\" || !$tw.modules.titles[\"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js\"]) && (editorType === \"codemirror\") ) {\n\t\t\teditorType = \"text\";\n\t\t}\n\t\treturn editorType;\n\t}\n\teditorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};",
            "type": "application/javascript",
            "module-type": "widget-subclass"
        },
        "$:/plugins/sq/streams/widgets/swiper.js": {
            "title": "$:/plugins/sq/streams/widgets/swiper.js",
            "text": "/*\\\ntitle: $:/plugins/sq/streams/widgets/swiper.js\ntype: application/javascript\nmodule-type: widget\n\nSwipe event handler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n//var SwipeListener = require(\"$:/sq/lib/swipe-listener\");\nvar SwipeEvents = require(\"$:/plugins/sq/lib/swipeevents.js\").SwipeEvents;\n\nvar SwipeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSwipeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSwipeWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.swipeTag && $tw.config.htmlUnsafeElements.indexOf(this.swipeTag) === -1) {\n\t\ttag = this.swipeTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tif(this.swipeEnable) {\n\t\tSwipeEvents(domNode,{\"swipe-threshold\": this.swipeThreshold});\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n}\n\n/*\nCompute the internal state of the widget\n*/\nSwipeWidget.prototype.execute = function() {\n\tvar self = this;\n\tthis.swipeThreshold = parseInt(this.getAttribute(\"swipethreshold\",\"100\"));\n\tthis.swipeEnable = this.getAttribute(\"enable\",\"yes\") === \"yes\";\n\tthis.swipeTag = this.getAttribute(\"tag\");\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSwipeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.swiper = SwipeWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        }
    }
}
\whitespace trim

\define swiped-right-actions()
<$list filter="[{$:/config/sq/streams/swipe-behaviour}match[contextmenu]]" variable="_NULL">
<$action-setfield $tiddler=<<contextmenu-state>> $field="current" $value=<<dom-data-node-title>>/>
<$action-setfield $tiddler=<<contextmenu-state>> $field="position" $value={{$:/config/sq/streams/swipe-contextmenu-position}}/>
<$action-popup $coords=<<tv-popup-coords>> $state=<<contextmenu-state>>/>
</$list>
<$list filter="[{$:/config/sq/streams/swipe-behaviour}match[indent]]" variable="_NULL">
<$vars currentTiddler=<<dom-data-node-title>>>
<<indent-node-actions>>
</$vars>
</$list>
\end

\define swiped-left-actions()
<$list filter="[{$:/config/sq/streams/swipe-behaviour}match[indent]]" variable="_NULL">
<$vars currentTiddler=<<dom-data-node-title>>>
<<unindent-node-actions>>
</$vars>
</$list>
\end


\define oncontext-menu-actions()
<$action-setfield $tiddler=<<contextmenu-state>> $field="current" $value=<<dom-data-node-title>>/>
<$action-setfield $tiddler=<<contextmenu-state>> $field="position" $value="left"/>
<$action-popup $coords=<<tv-popup-coords>> $state=<<contextmenu-state>>/>
\end


\define node-ctrl-btn-actions()
<$list filter="[<dom-data-btn-role>match[stream-node-visibility]]" variable="NULL">
<$action-setfield $tiddler=<<dom-data-rowchildren-visibility-state>> text={{{ [<dom-data-rowchildren-visibility-state>get[text]match[hide]then[show]else[hide]] }}} />
</$list>
<$list filter="[<dom-data-btn-role>match[stream-node-decorator]]" variable="NULL">
<$action-navigate $to=<<dom-data-node-title>>/>
</$list>
\end


\define toggle-row-edit-state()
<$action-unselect/>
<$list filter="[<row-edit-state>get[text]else[]!match<dom-data-node-title>]" variable="NULL">
<$list filter="[[$:/status/IsReadOnly]get[text]!is[blank]else[no]!match[yes]]" variable="NULL">
	<$action-setfield $tiddler=<<row-edit-state>> text=<<dom-data-node-title>> />
<!--	<$action-setfield $tiddler=<<dom-data-node-title>> throttle.refresh="yes"/>-->
</$list>
</$list>
\end


\define save-edit-node-actions()
<!-- handle saving a node being edited -->
<!-- XXX draft -->
<!--<$action-deletefield $tiddler={{{ [<dom-data-node-title>!is[blank]else<currentTiddler>] }}} $field="throttle.refresh" />-->
<$action-deletetiddler $tiddler=<<row-edit-state>> />
\end


\define indent-node-actions()
<!-- handle indenting a node -->
<$vars previous-node={{{ [{!!parent}get[stream-list]enlist-input[]is[tiddler]before<currentTiddler>] }}}>
<$list filter="[<previous-node>minlength[1]]" variable="_NULL">
	<$action-listops $tiddler=<<previous-node>> $field="stream-list" $subfilter="+[is[tiddler]] [<currentTiddler>]"/>
	<$action-listops $tiddler={{!!parent}} $field="stream-list" $subfilter="+[is[tiddler]] -[<currentTiddler>]"/>
	<$action-setfield $tiddler=<<currentTiddler>> parent=<<previous-node>> />
</$list>
</$vars>
\end


\define unindent-node-actions()
<!-- handle unindenting a node -->
<$vars new-parent={{{ [{!!parent}get[parent]] }}} new-next-node={{{ [{!!parent}get[parent]get[stream-list]enlist-input[]is[tiddler]after{!!parent}] }}}>
    <$list filter="[<new-parent>minlength[1]]" variable="_NULL">
        <$action-listops $tiddler=<<new-parent>> $field="stream-list" $subfilter="+[is[tiddler]] +[insertbefore:new-next-node<currentTiddler>]"/>
        <$action-listops $tiddler={{!!parent}} $field="stream-list" $subfilter="+[is[tiddler]] -[<currentTiddler>]"/>
        <$action-setfield $tiddler=<<currentTiddler>> parent=<<new-parent>> />
    </$list>
</$vars>
\end


\define demote-node-actions()
<!-- move a node below the next node -->
<$list filter="[{!!parent}get[stream-list]enlist-input[]after<currentTiddler>]" variable="next-node">
    <$action-listops $tiddler={{!!parent}} $field="stream-list" $subfilter="+[insertbefore:currentTiddler<next-node>]"/>
</$list>
\end


\define promote-node-actions()
<!-- move a node above the previous node -->
<$list filter="[{!!parent}get[stream-list]enlist-input[]before<currentTiddler>]" variable="previous-node">
    <$action-listops $tiddler={{!!parent}} $field="stream-list" $subfilter="+[insertbefore:previous-node<currentTiddler>]"/>
</$list>
\end


\define save-node-actions()
<$list filter="""[{$:/config/sq/streams/split-at-caret}match[yes]]""" variable="_NULL" emptyMessage=<<add-node-actions>> >
<$list filter="[<selectionEnd>!is[blank]else[0]!match[0]]" variable="_NULL">
<$list filter="[<currentTiddler>get[text]length[]subtract<selectionEnd>!match[0]]" variable="_NULL" emptyMessage=<<add-node-actions>>>
	<$macrocall $name="add-node-actions" startText={{{[<currentTiddler>get[text]split[]rest<selectionEnd>join[]trim[]]}}} streamList={{!!stream-list}} /><!--insertPosition="title"-->
	<$action-setfield $tiddler="$:/state/sq/streams/caret-position" text="0"/>
	<$action-setfield $tiddler=<<currentTiddler>> text={{{[<currentTiddler>get[text]split[]first<selectionEnd>join[]]}}} stream-list=""/>
</$list>
</$list>
<$list filter="[<selectionEnd>!is[blank]else[0]match[0]]" variable="_NULL">
	<$list filter="[<currentTiddler>!has[text]]" variable="_NULL" emptyMessage=<<add-node-actions "" "title">> >
		<$list filter="""[{$:/config/sq/streams/exit-on-saving-empty-node}match[yes]]""" variable="_NULL" emptyMessage=<<add-node-actions>> >
			<<cancel-edit-node-actions>>
		</$list>
	</$list>
</$list>
</$list>
\end

\define add-new-node-actions()
<!-- used by new node button at the bottom of a stream -->
<$list filter="[[$:/status/IsReadOnly]get[text]!is[blank]else[no]!match[yes]]" variable="NULL">
<<add-node-actions>>
</$list>
\end


\define add-node-actions(startText:"",insertPosition:"after",streamList:"")
<!-- handle saving a node edit and creating a new subsequent node -->
<$set name="parent" filter="[<currentTiddler>match<stream-root-title>] ~[{!!parent}] +[first[]]" select="0">
<$wikify name="new-node" text={{$:/config/sq/streams/new-node-title}}>
<$wikify name="new-node" text={{{[[<<unusedtitle """]addsuffix<new-node>addsuffix[""">>]]}}}>
	<$action-createtiddler $basetitle=<<new-node>> text=<<__startText__>> $template={{$:/config/sq/streams/new-node-tiddler-template}} parent=<<parent>> stream-type="default" stream-list=<<__streamList__>>/>
	<$set name="parent-nodes" filter="[<parent>get[stream-list]]" select="0">
	<$set name="next-node" filter="[enlist<parent-nodes>is[tiddler]$insertPosition$<currentTiddler>]" select="0">
	<$action-listops $tiddler=<<parent>> $field="stream-list" $subfilter="+[is[tiddler]] +[insertbefore:next-node<new-node>]"/>
	<$list filter="[<parent>!has[stream-type]]" variable="_NULL">
		<$action-setfield $tiddler=<<parent>> stream-type="default"/>
	</$list>
	<$list filter="[enlist<__streamList__>]">
		<$action-setfield $tiddler=<<currentTiddler>> parent=<<new-node>>/>
	</$list>
	</$set>
	</$set>
	<$action-setfield $tiddler=<<row-edit-state>> text=<<new-node>>/>
</$wikify>
</$wikify>
</$set>
\end


\define save-multiple-actions()
<!-- handle multiple nodes entered at once -->
<$action-confirm $message="Split into multiple nodes?" $prompt={{$:/config/sq/streams/prompt-split-to-multiple}}>
<$list filter="[{!!text}splitregexp{$:/config/sq/streams/node-split-regexp}rest[]reverse[]]" variable="fragment">
	<$action-confirm $message="Split into multiple nodes?" $prompt="no">
		<$macrocall $name="add-node-actions" startText=<<fragment>> />
	</$action-confirm>
</$list>
<$action-setfield $tiddler=<<currentTiddler>> text={{{[{!!text}splitregexp{$:/config/sq/streams/node-split-regexp}first[]]}}}/>
<<add-node-actions>>
</$action-confirm>
\end


\define cancel-edit-node-actions()
<!-- handle cancelling the edit on an empty node -->
<$list filter="[<currentTiddler>!has[stream-list]!has[text]]" variable="_NULL">
	<$action-listops $tiddler={{{[{!!parent}]}}} $field="stream-list" $subfilter="+[is[tiddler]] -[<currentTiddler>]"/>
	<$action-deletetiddler $tiddler=<<currentTiddler>> />
</$list>
<!--<$action-deletefield $tiddler=<<currentTiddler>> $field="throttle.refresh" />-->
<$action-deletetiddler $tiddler=<<row-edit-state>> />
\end


\define merge-with-previous-node-actions()
<!-- handle backspace on an empty node -->
<$list filter="""[<currentTiddler>!has[text]]""" variable="_NULL">
	<<cancel-edit-node-actions>>
	<<focus-higher-node-actions>>
</$list>

<$list filter="""[<currentTiddler>has[text]]""" variable="_NULL">
<$list filter="[<selectionEnd>match[0]]" variable="_NULL">

<!--<$action-log/>-->
	<$set name="parent" value={{!!parent}} select="0">
	<$set name="stream-list" filter="[<parent>get[stream-list]]" select="0">
	<$list filter="[enlist<stream-list>before<currentTiddler>]" variable="previous-node">
		<$list filter="[<previous-node>!has[stream-list]]" variable="_NULL">
		<$action-confirm $message="Merge with previous node?" $prompt={{$:/config/sq/streams/prompt-merge-with-previous}}>
			<$action-setfield $tiddler="$:/state/sq/streams/caret-position" text={{{[<previous-node>get[text]length[]]}}}/>
			<$action-setfield $tiddler=<<previous-node>> text={{{[<previous-node>get[text]!is[blank]else[]addsuffix{!!text}]}}} stream-list={{!!stream-list}}/>
			<$action-setfield $tiddler=<<row-edit-state>> text=<<previous-node>>/>
			<$action-listops $tiddler={{!!parent}} $field="stream-list" $subfilter="+[is[tiddler]] -[<currentTiddler>]"/>			
			<$action-deletetiddler $tiddler=<<currentTiddler>>/>
		</$action-confirm>	
		</$list>
	</$list>
	</$set>
	</$set>
	
</$list>
</$list>

\end


\define delete-node-actions()
<$action-confirm  $message="Do you wish to delete this tiddler?">
	<$transclude tiddler="$:/plugins/sq/streams/delete-hook/actions"/>
	<$action-deletetiddler $tiddler=<<currentTiddler>> />
	<$list filter="[<row-edit-state>get[text]match<currentTiddler>]">
		<<focus-higher-node-actions>>
	</$list>
</$action-confirm>
\end


\define rename-node-actions()
<$action-withinput message="Rename this tiddler?" default=<<currentTiddler>> actions="""
	<$action-sendmessage $message="tm-rename-tiddler" from=<<currentTiddler>> to=<<userInput>>/>
	<$list filter="[<row-edit-state>match<currentTiddler>]" variable="_NULL">
		<$action-setfield $tiddler=<<row-edit-state>> text=<<userInput>>/>
	</$list>
"""/>
\end


\define find-last-child()
<!-- used by focus-higher-node-actions macro -->
<$list filter="[enlist{!!stream-list}is[tiddler]last[]]" emptyMessage="""<$action-setfield $tiddler=<<row-edit-state>> text=<<currentTiddler>>/>""">
	<$macrocall $name="find-last-child"/>
</$list>
\end


\define focus-higher-node-actions()
<!-- handles moving up in the nodes with the keyboard -->
<$vars old-parent={{!!parent}} >
<$list filter="[{!!parent}get[stream-list]enlist-input[]is[tiddler]before<currentTiddler>]" emptyMessage="""<$list filter="[<old-parent>!match<stream-root-title>]"><$action-setfield $tiddler=<<row-edit-state>> text=<<old-parent>> /></$list>""">
	<$macrocall $name="find-last-child"/>
</$list>
</$vars>
\end


\define find-next-downwards-node()
<!-- used by focus-lower-node-actions macro -->
<$list filter="[<currentTiddler>has[parent]]" variable="_NULL">
<$set name="old-parent" value={{!!parent}} select="0">
<$set name="old-parent-nodes" filter="[<old-parent>get[stream-list]]" select="0">
<$list filter="[enlist<old-parent-nodes>is[tiddler]after<currentTiddler>]" emptyMessage="""<$set name="currentTiddler" value=<<old-parent>>><<find-next-downwards-node>></$set>""">
	<$action-setfield $tiddler=<<row-edit-state>> text=<<currentTiddler>>/>	
</$list>
</$set>
</$set>
</$list>
\end


\define focus-lower-node-actions()
<!-- handles moving down in the nodes with the keyboard -->
<!--if children, get the first child-->
<$list filter="[<currentTiddler>get[stream-list]enlist-input[]is[tiddler]first[]]" variable="next-node">
    <$action-setfield $tiddler=<<row-edit-state>> text=<<next-node>> />
</$list>
<!-- if no children-->
<!--- get closest ancestor with next sibling -->
<$list filter="[<currentTiddler>!has[stream-list]]" variable="_NULL">
	<$set name="old-active-node" value=<<currentTiddler>> >
		<<find-next-downwards-node>>
	</$set>
</$list>
\end


\define node-drag-start-actions()
<!-- parameter to draggable widget -->
<$action-setfield $tiddler=<<drag-title-state>> text=<<currentTiddler>>/>
<$action-setfield $tiddler="$:/state/sq/nodes/global-drag-state" text="yes"/>
<$set name="siblings" filter="[{!!parent}get[stream-list]]" select="0">
<$list filter="[enlist<siblings>after<currentTiddler>]" variable="next-node">
	<$action-setfield $tiddler=<<drag-title-nextsibling-state>> text=<<next-node>> />
</$set>
\end


\define node-drag-end-actions()
<!-- parameter to draggable widget -->
<$action-deletetiddler $filter="""[<drag-title-state>][<drag-title-nextsibling-state>][[$:/state/sq/nodes/global-drag-state]]""" />
\end


\define stream-drop-actions()
<!-- handles drag and drop -->
<$vars startBrackets="[[" endBrackets="]]" parent=<<dropTargetTiddler>> >
<$vars actionTiddler={{{[<actionTiddler>trim:suffix<endBrackets>trim:prefix<startBrackets>]}}}>
<!-- if target has no stream-type, assign one -->
<$list filter="[<dropTargetTiddler>!has[stream-type]]">
	<$action-setfield $tiddler=<<dropTargetTiddler>> stream-type="default"/>
</$list>
<!-- if action tiddler has no stream-type, assign one -->
<$list filter="[<actionTiddler>!has[stream-type]]" variable="_NULL">
	<$action-setfield $tiddler=<<actionTiddler>> stream-type="default" />
</$list>
<!-- if we are dropping onto a new parent, then we might need to handle modifier keys -->
<$list filter="[<actionTiddler>get[parent]!match<parent>] [<actionTiddler>!has[parent]]" variable="_NULL">
	<$wikify name="new-node" text={{$:/config/sq/streams/new-node-title}}>
		<!-- ctrl modifier key on drop event -->
		<!-- create a new node with text of dropped node -->
		<$list filter="[<modifier>match{$:/config/sq/streams/dnd-modifier-copy-node}]" variable="_NULL">
			<$action-createtiddler $basetitle=<<new-node>> text={{{ [<actionTiddler>get[text]] }}} parent=<<parent>> stream-type="default"/>
			<!-- insert into correct position on new parent -->
			<$action-listops $tiddler=<<dropTargetTiddler>> $field="stream-list" $subfilter="+[insertbefore:currentTiddler<new-node>]"/>
		</$list>
		<!-- shift modifier key on drop event -->
		<$list filter="[<modifier>match{$:/config/sq/streams/dnd-modifier-transclude-node}]" variable="_NULL">
			<!-- create new node on target, in correct position, text is a transclusion-->
			<$action-createtiddler $basetitle=<<new-node>> text={{{ [<actionTiddler>addprefix[{{]addsuffix[}}]] }}} parent=<<parent>> stream-type="default"/>
			<!-- insert into correct position on new parent -->
			<$action-listops $tiddler=<<dropTargetTiddler>> $field="stream-list" $subfilter="+[insertbefore:currentTiddler<new-node>]"/>
		</$list>
	</$wikify>
	<!-- no modifier key on drop event -->
	<!-- insert in correct position on new parent, and remove from old parent -->
	<!-- assign new parent -->
	<$list filter="[<modifier>match[normal]]" variable="_NULL">
		<$action-listops $tiddler=<<dropTargetTiddler>> $field="stream-list" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
		<$set name="original-parent" filter="[<actionTiddler>get[parent]]" select="0">
			<$action-listops $tiddler=<<original-parent>> $field="stream-list" $subfilter="-[title<actionTiddler>]"/>
		</$set>
		<$action-setfield $tiddler=<<actionTiddler>> parent=<<parent>>/>
	</$list>
</$list>
<!-- we are dropping on to the same parent, insert in the correct position -->
<$list filter="[<actionTiddler>get[parent]match<parent>]" variable="_NULL">
	<$action-listops $tiddler=<<dropTargetTiddler>> $field="stream-list" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
</$list>
</$vars>
</$vars>
\end
\whitespace trim
<$qualify
	name="row-children-visibility-state"
	title={{{ [[$:/state/sq/streams/visibility/]addsuffix<currentTiddler>] }}}
>
<$droppable 
	actions=<<stream-drop-actions>>
	tag="div"
	class={{{ stream-droppable [list[!!stream-list]is[tiddler]then[]else[stream-row-nochildren]] +[join[ ]]}}}
	enable={{{[<drag-title-nextsibling-state>get[text]match<currentTiddler>then[no]] ~[<enable-dnd>]}}}
	disabledClass="stream-node-disabled"
	data-node-title=<<currentTiddler>>
>
	<div class="tc-droppable-placeholder"/>
	<div class={{{ stream-row [<row-children-visibility-state>get[text]match[hide]then[stream-row-children-collapsed]] +[join[ ]]}}}
		data-node-title=<<currentTiddler>>
		data-node-tags={{!!tags}}
	>
		<$draggable
			tag="div"
			tiddler=<<currentTiddler>>
			startactions=<<node-drag-start-actions>>
			endactions=<<node-drag-end-actions>>
			class="stream-node-control sq-contextmenu-container"
			data-node-title=<<currentTiddler>>
		>
			<button type="button" class="tc-btn-invisible stream-node-ctrl-btn stream-node-collapser" data-btn-role="stream-node-visibility" data-rowchildren-visibility-state=<<row-children-visibility-state>>>
				{{$:/plugins/sq/streams/icons/node-expand-arrow}}
			</button>
			<div class="stream-node-handle tc-btn-invisible stream-node-ctrl-btn" data-btn-role="stream-node-decorator" data-node-title=<<currentTiddler>>>
					<div class="stream-node-handle-inner"/>
			</div>
		</$draggable>
		<div class="stream-node-block">
			<$list filter="[<row-edit-state>get[text]!is[blank]else[]match<currentTiddler>]" variable="NULL" emptyMessage="""{{||$:/plugins/sq/streams/templates/stream-row-body}}""">
				<$keyboard-plus shortcutTag="$:/tags/streams/keyboard-shortcuts">
					{{||$:/plugins/sq/streams/editor-template}}
				</$keyboard-plus>			
			</$list>
		</div>
	</div>
</$droppable>
<$reveal
	tag="div"
	type="nomatch"
	stateTitle=<<row-children-visibility-state>>
	text="hide"
	class="stream-row-children"
>
		{{||$:/plugins/sq/streams/templates/stream-root-template}}
</$reveal>
</$qualify>
{
    "tiddlers": {
        "$:/plugins/telmiger/details/details.css": {
            "text": "/* details and summary */\n\ndetails {\n   transition: height 1s ease;\n   padding: 0 0.5em 0 0.66em;\n   margin-top: 0.66em;\n   margin-bottom: 0.66em;\n}\n\ndetails + details {\n   margin-top: -0.46em;\n}\n\ndetails[open] {\n   padding-bottom: 1em;\n}\n\ndetails:not([open]) { \n   cursor: pointer;\n}\n\ndetails > summary {\n   display: list-item;\n   margin: 0 -0.5em 0 -0.66em;\n   padding: 0.2em 0.5em 0.2em 0.66em;\n   padding-left: 1.76em;  /* adjust for indentation */\n   text-indent: -1.1em;\n   cursor: pointer;\n}\n\ndetails[open] > summary {\n   margin-bottom: 1em;\n}\n\ndetails[open] > *:first-child:not(summary) {\n   margin-top: 1em;\n}\n",
            "title": "$:/plugins/telmiger/details/details.css",
            "tags": "$:/tags/Stylesheet",
            "modifier": "Thomas Elmiger",
            "modified": "20180929131615369",
            "creator": "Thomas Elmiger",
            "created": "20170122140815442"
        },
        "$:/plugins/telmiger/details/details.js": {
            "text": "/*\\\ntitle: $:/plugins/telmiger/details/details.js\ntype: application/javascript\nmodule-type: widget\n\nDetails widget v 0.8\n\nWill output an HTML 5 <details> section including a <summary>\n\n```\n\t<details>\n\t\t<summary>This sums it up</summary> \n\t\tAll the details follow here.\n\t</details>\n```\n\n|Parameter |Description |h\n|summary |Optional text to display as summary. Wins over field (see below). |\n|open |Optional initial state, set to \"open\" to show details on load. Defaults to \"\". |\n|state |An optional TextReference containing the state. Wins over open. |\n|field |Optionally, the summary is taken from the field with this name in a given tiddler. Defaults to \"title\". |\n|tiddler |Optional title of a tiddler to watch, connected to field. Defaults to current tiddler. |\n|class |Optional CSS classes to be assigned to the details tag. |\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DetailsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDetailsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDetailsWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute attributes\n\tthis.computeAttributes();\n\t// Execute logic\n\tthis.execute();\n\t// Create elements\n\tthis.detailsDomNode = this.document.createElement(\"details\");\n\tif(this.detailsClass !== \"\") {\n\t\t// this.detailsClass += \" \";\n\t\t// this.detailsClass += \"tc-details\";\n\t\tthis.detailsDomNode.setAttribute(\"class\",this.detailsClass);\n\t}\n\tif(this.detailsOpen == \"open\") {\n\t\tthis.detailsDomNode.setAttribute(\"open\",\"open\");\n\t}\n\tif(this.detailsSummary !== \"\") {\n\t\tthis.summaryDomNode = this.document.createElement(\"summary\");\n\t\t// this.summaryDomNode.setAttribute(\"class\",\"tc-summary\");\n\t\tthis.detailsDomNode.appendChild(this.summaryDomNode);\n\t\tthis.summaryDomNode.appendChild(this.document.createTextNode(this.detailsSummary));\n\t}\n// register an event listener\n/* Maybe this can be reactivated later, see below.\n\tif(this.detailsStateTitle) {\n\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t{name: \"toggle\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t}\n*/\n// As iOS mobile browsers lack support of toggle events on details \n// we emulate the toggle event using click\n\tif(this.detailsStateTitle && this.summaryDomNode) {\n\t\t$tw.utils.addEventListeners(this.summaryDomNode,[\n\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t} else {\n\t\tif(this.detailsStateTitle) {\n\t\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t\t]);\n\t\t}\n\t}\n\t// Insert the details into the DOM and render any children\n\tthis.parentDomNode.insertBefore(this.detailsDomNode,nextSibling);\n\tthis.renderChildren(this.detailsDomNode,null);\n\tthis.domNodes.push(this.detailsDomNode);\n};\n\n/*\nRetrieve the value of the summary\n*/\nDetailsWidget.prototype.getSummary = function() {\n\tvar summary = \"\";\n\tif(this.summaryTitle === \"Tiddler not found\" && this.summaryField === \"\") {\n\t// nothing defined: leave empty \n\t\tsummary = \"\";\n\t} else {\n\t\t// tiddler defined? use defined field or title\n\t\tif(this.myTiddler) {\n\t\t\tif(this.summaryField === \"title\" || this.summaryField === \"\") {\n\t\t\t\tsummary = this.summaryTitle;\n\t\t\t} else {\n\t\t\t\tif(this.summaryField === \"text\") {\n         \t\t// getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\t\tsummary = this.wiki.getTiddlerText(this.summaryTitle);\n\t\t\t\t} else {\n\t\t\t\t\tsummary = this.myTiddler.fields[this.summaryField];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.summaryField !== \"\" && this.summaryField !== \"text\") {\n\t\t\t\t// try defined field in current tiddler\n\t\t\t\tvar tiddler = this.wiki.getTiddler(this.getVariable(\"currentTiddler\"));\n\t\t\t\tsummary = tiddler.fields[this.summaryField];\n\t\t\t} else {\n\t\t\t\tsummary = \"\";\n\t\t\t}\n\t\t}\n\t}\n   return summary;\n};\n\n/*\nRetrieve the value of the state text reference\n*/\nDetailsWidget.prototype.getStateFromReference = function() {\n    var state = this.detailsStateTitle ? this.wiki.getTextReference(this.detailsStateTitle,\"\",this.getVariable(\"currentTiddler\")) : \"\";\n    return state;\n};\n\n/*\nCheck all open signals, state fields/tiddlers get priority\n*/\nDetailsWidget.prototype.getOpenState = function() {\n\tvar result = \"\";\n\tif((this.detailsOpenDefault !== \"\" && this.detailsOpenDefault !== \"no\") \n\t    || this.detailsState === \"open\") {\n\t\tresult = \"open\";\n\t } \n\tif(this.detailsStateTitle !==\"\" && this.detailsState !== \"open\") {\n\t\tresult = \"\";\n\t}\n\treturn result;\n};\n\n/*\nUpdate the state text reference after click event\n*/\nDetailsWidget.prototype.updateState = function(openState) {\n\tvar fieldValue = \"false\";\n\tvar currentTiddler = this.getVariable(\"currentTiddler\");\n    // get the title for the (existing/new) tiddler\n\tvar tr = $tw.utils.parseTextReference(this.detailsStateTitle);\n\tvar tidTitle = tr.title || currentTiddler;\n    // is it an existing state tiddler?\n\tvar isStateTiddler = (tr.title === this.detailsStateTitle);\n\tvar hasStateTiddler = this.wiki.tiddlerExists(tr.title);\n\tvar currentStateTiddler = (tr.title === currentTiddler);\n\tif(isStateTiddler || hasStateTiddler || (currentStateTiddler && tr.field !== \"text\")) { \n\t\t// Set the state field (but never overwrite the current tiddler’s text field\n\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t} else {\n\t\tif(!hasStateTiddler && tidTitle !== currentTiddler) {\n\t\t\tthis.createTiddler(tidTitle);\n\t\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t\t} else {\n\t\t\tconsole.log (\"Something went wrong in updateState\");\n\t\t}\n\t}\n};\n\n/*\nCreate a tiddler with a title only\n*/\nDetailsWidget.prototype.createTiddler = function(tidTitle) {\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: tidTitle,\n\t\t\ttags: []\n\t\t}\n\t));\n};\n\n/*\nSet openState according to click\n*/\nDetailsWidget.prototype.handleToggleEvent = function(event) {\n\t// check if an open attribute is present\n\tvar newState = this.detailsDomNode.open ? \"\" : \"open\";\n\t// update only, if the node has a new state\n\tif(newState !== this.detailsState) {\n\t\tthis.updateState(newState);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDetailsWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes \n\tvar tryTiddler = this.getAttribute(\"tiddler\");\n\tthis.myTiddler = this.wiki.getTiddler(tryTiddler);\n\tthis.summaryTitle = this.myTiddler ? tryTiddler : \"Tiddler not found\";\n\tthis.summaryField = this.getAttribute(\"field\",\"\");\n\tthis.detailsSummary = this.getAttribute(\"summary\") || this.getSummary();\n\tthis.detailsStateTitle = this.getAttribute(\"state\",\"\");\n\tthis.detailsState = this.getStateFromReference();\n\tthis.detailsOpenDefault = this.getAttribute(\"open\",\"\");\n\tthis.detailsOpen = this.getOpenState();\n\tthis.detailsClass = this.getAttribute(\"class\",\"\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDetailsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.summary || changedAttributes.state || changedAttributes.open || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tvar testState = this.getStateFromReference();\n\t\tif(testState !== this.detailsState) {\n\t\t\t// state change\n\t\t\tthis.refreshSelf();\n\t\t\trefreshed = true;\n\t\t} \n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.details = DetailsWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/telmiger/details/details.js",
            "tags": "Plugins",
            "module-type": "widget",
            "modifier": "Thomas Elmiger",
            "modified": "20180929212032187",
            "creator": "Thomas Elmiger",
            "created": "20170124173619910"
        },
        "$:/plugins/telmiger/details/icon": {
            "created": "20170205205314072",
            "text": "<svg class=\"tc-image-button telmiger-icon\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" viewBox=\"0 0 128 128\" role=\"img\" aria-labelledby=\"title\"><title id=\"title\">T</title><path class=\"circle\" d=\"M64 2C30 2 2 29.753 2 64c0 34.235 27.753 62 62 62s62-27.752 62-62C126 29.753 98.221 2 64 2z\"/><path class=\"t\" d=\"M100.41 63.254c-2.886 1.92-7.544 2.883-13.979 2.883h-8.008c-4.246 0-7.331.845-9.254 2.536-1.922 1.69-3.449 5.086-4.576 10.19 0 0-.181 1.481-.503 1.481s-.369-.877-.518-1.586a37.897 37.897 0 0 0-.721-2.754c-.631-2.137-1.262-3.753-1.894-4.847-.764-1.359-1.727-2.452-2.889-3.28-1.162-.83-2.49-1.326-3.985-1.492l-2.092-.248H41.73c-6.144 0-10.711-.962-13.7-2.884-4.976-3.159-7.649-9.129-8.02-17.91-.03-.706.003-1.351.132-2.171h.585c.399 3.975 3.679 7.048 6.086 9.219 2.408 2.172 6.269 3.258 11.581 3.258h9.313c5.347 0 9.257 1.226 11.731 3.68 2.231 2.213 3.701 5.68 4.406 10.4.076.511.03.736.178.736.149 0 .11-.256.17-.783.713-6.122 3.085-10.219 7.117-12.294 2.487-1.292 6.434-1.906 11.841-1.839l6.368.1c4.311.066 7.942-.788 10.893-2.56 2.953-1.773 6.447-5.079 6.844-9.917h.595c.183.478.16 1.576.127 2.333-.371 8.752-2.894 14.668-7.567 17.749z\"/></svg>\n<style>\n.telmiger-icon .circle { fill: #e2001a }\n.telmiger-icon .t { fill: #fff }\n</style>",
            "title": "$:/plugins/telmiger/details/icon",
            "tags": "",
            "modified": "20171219183752113"
        },
        "$:/plugins/telmiger/details/license": {
            "text": "!! Plugin license\n!!!The MIT License (MIT)\n\n```\nCopyright © 2017/2018 Thomas Elmiger – thomas-elmiger.ch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```",
            "title": "$:/plugins/telmiger/details/license",
            "tags": "",
            "modified": "20170205214435064",
            "created": "20170205213335455"
        },
        "$:/plugins/telmiger/details/readme": {
            "created": "20170205212323032",
            "text": "! ~DetailsWidget\n\n{{$:/plugins/telmiger/details/about}}\n\nDocumentation can be found at http://tid.li/tw5/plugins.html#DetailsWidget\n",
            "title": "$:/plugins/telmiger/details/readme",
            "tags": "",
            "modified": "20200603211110057"
        },
        "$:/plugins/telmiger/details/colours.css": {
            "text": "/* details and summary colours */\n\ndetails {\n   background-color: <<colour tiddler-info-tab-background>>;\n   color: <<colour foreground>>;\n}\n\ndetails summary {\n   background-color: <<colour dropdown-tab-background>>;\n}\n\ndetails.notification summary {\n    background-color: <<colour notification-background>>;\n    /* TW leaves color undefined/uses foreground */\n}\n\ndetails.warning summary {\n    background-color: #ffbbaf;\n    color: #000;\n}\n\ndetails.success summary {\n    background-color: #88edc5;\n    color: #000;\n}\n",
            "title": "$:/plugins/telmiger/details/colours.css",
            "tags": "$:/tags/Stylesheet",
            "modifier": "Thomas Elmiger",
            "modified": "20180926204140772",
            "creator": "Thomas Elmiger",
            "created": "20180925155320737"
        },
        "$:/plugins/telmiger/DetailsWidget/support": {
            "created": "20200603204816640",
            "text": "{{$:/plugins/telmiger/support}}",
            "title": "$:/plugins/telmiger/DetailsWidget/support",
            "tags": "",
            "modified": "20200603204849180"
        },
        "$:/plugins/telmiger/support": {
            "created": "20200604213259310",
            "text": "!! Support the Author\n\n''Hi!'' I’m Thomas, the author of [[tid.li/tw5/plugins.html|https://tid.li/tw5/plugins.html]]. Feedback is always welcome, as well as funding for maintenance, support and new projects :)\n\n---\n\n!!! One Time Support\n\nIf using my plugins just makes you happy, consider a one time payment via ~PayPal to reward the effort:\n\nhttps://www.paypal.me/telmiger\n\n---\n\n!!! Permanent Support\n\nIf my tools make you more productive or save you time in your job or your everyday life, you can support me as a Patron: \n\nhttps://www.patreon.com/telmiger\n\n---\n\n!!! Thank You\n\nSubstantial parts of my availabe time go to the deveopment of useful plugins for [[TiddlyWiki|https://tiddlywiki.com/]]. – Many others do the same and I would like to thank them all, especially [[Jeremy Ruston|https://tiddlywiki.com/#JeremyRuston]] and all the active members of the community!\n\n//Hereby I promise to share future revenues (if any) with other developers who’s works I use or who inspired me.//\n\nIf you like my work, I would be very happy to hear from you.\n\n''Thank you very much for your support!''<br>\n//Thomas//\n\nhttps://thomas-elmiger.ch",
            "title": "$:/plugins/telmiger/support",
            "tags": "",
            "modifier": "Thomas Elmiger",
            "modified": "20200604213305050",
            "creator": "Thomas Elmiger"
        },
        "$:/plugins/telmiger/details/about": {
            "created": "20200603211101398",
            "modified": "20200603211101398",
            "title": "$:/plugins/telmiger/details/about",
            "text": "Create HTML 5 `<details>` elements including a `<summary>` using this widget.\n\n<$details summary=\"The details element – W3C definition\">\n\n<<<\nThe [[details|http://w3c.github.io/html/interactive-elements.html#elementdef-details]] element represents a disclosure widget from which the user can obtain additional information or controls.\n<<< W3C\n\n</$details>\n\n<$details summary=\"Code example\" open=\"no\">\n\n```\n<$details summary=\"This should be open\" open=\"yes\">\n\nContent will be immediately visible if open is set to \"yes\".\n\n</$details>\n```\n\n</$details>",
            "tags": ""
        }
    }
}
Create HTML 5 `<details>` elements including a `<summary>` using this widget.

<$details summary="The details element – W3C definition">

<<<
The [[details|http://w3c.github.io/html/interactive-elements.html#elementdef-details]] element represents a disclosure widget from which the user can obtain additional information or controls.
<<< W3C

</$details>

<$details summary="Code example" open="no">

```
<$details summary="This should be open" open="yes">

Content will be immediately visible if open is set to "yes".

</$details>
```

</$details>
! ~DetailsWidget

{{$:/plugins/telmiger/details/about}}

Documentation can be found at http://tid.li/tw5/plugins.html#DetailsWidget
This tiddler is used to configure the "Link-to-tabs" plugin behaviour. 

There are 2 fields, which are used by [[$:/plugins/wikilabs/link-to-tabs/styles]] enable and disable the internal links. 

* show-all-links: {{!!show-all-links}}
* show-single-link: {{!!show-single-link}}
* initial-opacity: {{!!initial-opacity}}
* transition time in seconds: {{!!transition}}
<$set name="loc" value=<<location 'hostname'>>>
<$list filter="[<loc>]+[prefix[publicsidebar.tiddlyspot.com]]">
<style>
.tc-sidebar-scrollable{visibility:visible;}
.tc-page-controls {display:none;}
.tc-sidebar-lists{visibility:hidden;}
.tc-search{visibility:visible; margin-left:40px;}
.tc-search-results{visibility:visible;}
.public {visibility:visible;}
</style>
</$list>
</$set>

<!-- Note:
You can rename this tiddler freely but keep the $:/tags/PageTemplate tag.
"visibility:" can be set to (e.g) visible or hidden. Setting something to hidden means it still exists and takes up space but cannot be seen.
"display:" can be set to (e.g) inline or none. None makes the concerned section "not exist" so sub-sections cannot be manipulated.
Google e.g "CSS visibility vs display" if you need more details.
-->
Jos Beishuizen, 4 april 2021
Aantekeningen
$:/config/KookmaPluginLibrary
$:/core/ui/AdvancedSearch/System


close
close
close
close
close
$:/core/ui/EditTemplate/body/preview/diffs-current
Iris 2
show
hide
show
show
hide
hide
hide
show
hide
hide
12. Safe Space
readme
contents
howto
readme
contents
yes
yes
contents
no
contents
contents
contents
contents
tag
hide
$:/core/ui/DefaultSearchResultList
show
no
yes
yes
Testje 2/20211119104742670
Het sterven van Philippe Othon
Menselijke waardigheid/20210423175911239/20210423183110588
Test Streams/20210423100249818/20210423100328780
Menselijke waardigheid/20210423175452670/20210423185954678
Lezing Muziek/20211119105404040/20211119105811679
Lezing Muziek/20211119105404040/20211119105811679
Test Streams/20210423100249818/20210423100314156/20210423100401508
[[Menselijke waardigheid/20210423175911239/20210423175938092]]
contextmenu
hide
show
show
hide
hide
hide
show
hide
hide
hide
hide
hide
show
Two columns
$:/core/ui/TiddlerInfo/Tools
$:/plugins/inmysocks/iconmenus/Left Menu Settings
$:/core/ui/AdvancedSearch/System
$:/core/ui/TiddlerInfo/References
$:/plugins/flibbles/relink/ui/configuration/Attributes
$:/core/ui/TiddlerInfo/Fields
$:/core/ui/ControlPanel/Palette
$:/plugins/flibbles/relink/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/Basics
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/ControlPanel/Plugins
$:/core/ui/ControlPanel/Plugins/Add/Plugins
$:/core/ui/ControlPanel/Saving/GitHub
$:/ak/plugins/DailyNotes/viewEntries
$:/core/ui/MoreSideBar/All
$:/core/ui/DefaultSearchResultList
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
close
close
close
open
open
open
close
close
close
open
open
open
open
open
open

close
open
open
open
open
close
open
open
open
close
open
close
open
open
open
open
open
open


close
open
open
close
open
close
open
open

open
open
close









































open

open
open

close
open
open
open



open

open




open
open
open
open
open
open
open
open
open
close
close
open
close
open
open
open
close
open
open
open
open
close
close
close
open
close
open
close
open
open
open
open
close
close
close
close
close
close
close
close
open
open
open
close
close
close
close
close
close
open
close
close
close
close
close
close
close
close
close
close
close
open
close
open
open
open
close
close
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
close
open
open
open
open
open
open
open
close
open
close
close
open
close
close
close
close
close
close
close
open
open
close
close
open
close
close
close
open
open
close
close
close
open
close
close
close
close
open
close
close
open
close
open
close
close
close
open
close
close
close
open
open
close
close
open
close
open
open
open
open
open
close
open
close
close
close
close
close
close
close
close
close
close
open
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
open
close
open
open
open
close
open
close
open
open
open
open
open
open
open
open
open
open
close
close
open
open
close
close
open
close
close
open
open
open
open
open
close
open
open
open
close
open
close
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
close
open
open
open
close
open
close
open
close
open
close
open
open
open
open
open
open
open
open
open
open
open
close
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
close
open
close
open
close
close
open
open
close
open
open
open
yes
yes
no
no






$:/themes/tiddlywiki/snowwhite
{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\ninput[type=\"search\"] {\n  outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml, body {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n        background-color: transparent;\n}\n\n\"\"\">>\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n\tfont-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n  vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour foreground>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-topbar-right {\n\t\tright: 10px;\n\t}\n\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\n\t\ttransform: rotate(-90deg);\n\t}\n\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n  font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-sidebar-lists .tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\ttransition:  min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\n\t}\n\t\n\t<<if-no-sidebar \"\"\"\n\n\t\t.tc-sidebar-header {\n\t\t\tmin-height: 0;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\"\"\">>\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.tc-story-river.tc-static-story-river {\n\t\tmargin-right: 0;\n\t\tpadding-right: 42px;\n\t}\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-tiddler-info {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-dropdown-wrapper {\n\tdisplay: inline-block;\n}\n\n<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n.tc-edit-fields.tc-edit-fields-small {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-edit-field-add-value {\n\t\twidth: 35%;\n\t}\n\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n\n/*\n** Centered modals\n*/\n.tc-modal-centered .tc-modal {\n\twidth: auto;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) !important;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Import table\n*/\n\n.tc-import-table {\n\twidth: 100%;\n}\n\n.tc-import-table svg.tc-image-edit-button {\n\tmax-width: unset;\n}\n\n.tc-import-table th:first-of-type {\n\twidth: 10%;\n}\n\n.tc-import-table th:last-of-type {\n\twidth: 30%;\n}\n\n.tc-import-table .tc-row-disabled {\n\tbackground: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour diff-delete-background>>50;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n    line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n    font-size: 0.8em;\n    margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n    align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n    margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n    padding: 2px 7px;\n    font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n    margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n    text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n    margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n::-webkit-file-upload-button {\n\tcursor:pointer;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n    \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n    \tlist-style-type: none;\n    \tpadding-left: 0;\n    \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n    \tpadding-left: 1em;    \n}\n\n.tc-tree button { \n    \tcolor: #acacac;\n}\n\n.tc-tree svg {\n     \tfill: #acacac;\n}\n\n.tc-tree span svg {\n    \twidth: 1em;\n    \theight: 1em;\n    \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n    \tcolor: lightgray;\n}\n\nselect {\n        color: <<colour select-tag-foreground>>;\n        background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n\n/*\n** Flexbox utility classes\n*/\n\n.tc-flex {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-flex-column {\n\tflex-direction: column;\n}\n\n.tc-flex-row {\n\tflex-direction: row;\n}\n\n.tc-flex-grow-1 {\n\tflex-grow: 1;\n}\n\n.tc-flex-grow-2 {\n\tflex-grow: 2;\n}\n\n/*\n** Other utility classes\n*/\n\n.tc-small-gap {\n\tmargin-left: .5em;\n\tmargin-right: .5em;\n}\n\n.tc-small-gap-left {\n\tmargin-left: .5em;\n}\n\n.tc-small-gap-right {\n\tmargin-right: .5em;\n}\n\n.tc-big-gap {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-big-gap-left {\n\tmargin-left: 1em;\n}\n\n.tc-big-gap-right {\n\tmargin-right: 1em;\n}\n\n.tc-word-break {\n\tword-break: break-all;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n  -moz-tab-size: 4;\n  tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n  line-height: 1.15; /* 1 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n  margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n  font-family:\n    system-ui,\n    -apple-system, /* Firefox supports this but not yet `system-ui` */\n    'Segoe UI',\n    Roboto,\n    Helvetica,\n    Arial,\n    sans-serif,\n    'Apple Color Emoji',\n    'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n  height: 0; /* 1 */\n  color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n  text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n  font-family:\n    ui-monospace,\n    SFMono-Regular,\n    Consolas,\n    'Liberation Mono',\n    Menlo,\n    monospace; /* 1 */\n  font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n  font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n  text-indent: 0; /* 1 */\n  border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  font-family: inherit; /* 1 */\n  font-size: 100%; /* 1 */\n  line-height: 1.15; /* 1 */\n  margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n  text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n  -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n  border-style: none;\n  padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n  outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n  box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n  padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n  vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n  -webkit-appearance: textfield; /* 1 */\n  outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n  -webkit-appearance: button; /* 1 */\n  font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n  display: list-item;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
        }
    }
}
\define custom-background-datauri()
<$set name="background" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>
<$list filter="[<background>is[image]]">
`background: url(`
<$list filter="[<background>!has[_canonical_uri]]">
`"`<$macrocall $name="datauri" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`"`
</$list>
<$list filter="[<background>has[_canonical_uri]]">
`"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field="_canonical_uri"/>`"`
</$list>
`) center center;`
`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;
-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`
</$list>
</$set>
\end

\define sidebarbreakpoint()
<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>
\end

\define sidebarbreakpoint-minus-one()
<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>
\end

\define if-fluid-fixed(text,hiddenSidebarText)
<$reveal state="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" type="match" text="fluid-fixed">
$text$
<$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">
$hiddenSidebarText$
</$reveal>
</$reveal>
\end

\define if-editor-height-fixed(then,else)
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="fixed">
$then$
</$reveal>
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="auto">
$else$
</$reveal>
\end

\define set-type-selector-min-width()
<$set name="typeLength" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>

	.tc-type-selector-dropdown-wrapper {
		min-width: calc(<<typeLength>>ch + 4em);
	}

	.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {
		min-width: <<typeLength>>ch;
	}

</$set>
\end

\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock

/*
** Start with the normalize CSS reset, and then belay some of its effects
*/

{{$:/themes/tiddlywiki/vanilla/reset}}

*, input[type="search"] {
	box-sizing: border-box;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
}

input[type="search"] {
  outline-offset: initial;
}

html button {
	line-height: 1.2;
	color: <<colour button-foreground>>;
	fill: <<colour button-foreground>>;
	background: <<colour button-background>>;
	border-color: <<colour button-border>>;
}

/*
** Basic element styles
*/

html, body {
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};
	text-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

html:-webkit-full-screen {
	background-color: <<colour page-background>>;
}

body.tc-body {
	font-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};
	line-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};
	word-wrap: break-word;
	<<custom-background-datauri>>
	color: <<colour foreground>>;
	background-color: <<colour page-background>>;
	fill: <<colour foreground>>;
}

<<if-background-attachment """

body.tc-body {
        background-color: transparent;
}

""">>

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
	font-size: 2em;
}

h1, h2, h3, h4, h5, h6 {
	line-height: 1.2;
	font-weight: 300;
}

pre {
	display: block;
	margin-top: 1em;
	margin-bottom: 1em;
	word-break: normal;
	word-wrap: break-word;
	white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
	background-color: <<colour pre-background>>;
	border: 1px solid <<colour pre-border>>;
	padding: 0 3px 2px;
	border-radius: 3px;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}

code {
	color: <<colour code-foreground>>;
	background-color: <<colour code-background>>;
	border: 1px solid <<colour code-border>>;
	white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
	padding: 0 3px 2px;
	border-radius: 3px;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}

blockquote {
	border-left: 5px solid <<colour blockquote-bar>>;
	margin-left: 25px;
	padding-left: 10px;
	quotes: "\201C""\201D""\2018""\2019";
}

blockquote > div {
	margin-top: 1em;
	margin-bottom: 1em;
}

blockquote.tc-big-quote {
	font-family: Georgia, serif;
	position: relative;
	background: <<colour pre-background>>;
	border-left: none;
	margin-left: 50px;
	margin-right: 50px;
	padding: 10px;
    border-radius: 8px;
}

blockquote.tc-big-quote cite:before {
	content: "\2014 \2009";
}

blockquote.tc-big-quote:before {
	font-family: Georgia, serif;
	color: <<colour blockquote-bar>>;
	content: open-quote;
	font-size: 8em;
	line-height: 0.1em;
	margin-right: 0.25em;
	vertical-align: -0.4em;
	position: absolute;
    left: -50px;
    top: 42px;
}

blockquote.tc-big-quote:after {
	font-family: Georgia, serif;
	color: <<colour blockquote-bar>>;
	content: close-quote;
	font-size: 8em;
	line-height: 0.1em;
	margin-right: 0.25em;
	vertical-align: -0.4em;
	position: absolute;
    right: -80px;
    bottom: -20px;
}

dl dt {
	font-weight: bold;
	margin-top: 6px;
}

button, textarea, input, select {
	outline-color: <<colour primary>>;
}

textarea,
input[type=text],
input[type=search],
input[type=""],
input:not([type]) {
	color: <<colour foreground>>;
	background: <<colour background>>;
}

input[type="checkbox"] {
  vertical-align: middle;
}

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
	-webkit-appearance:none;
}

.tc-muted {
	color: <<colour muted-foreground>>;
}

svg.tc-image-button {
	padding: 0px 1px 1px 0px;
}

.tc-icon-wrapper > svg {
	width: 1em;
	height: 1em;
}

kbd {
	display: inline-block;
	padding: 3px 5px;
	font-size: 0.8em;
	line-height: 1.2;
	color: <<colour foreground>>;
	vertical-align: middle;
	background-color: <<colour background>>;
	border: solid 1px <<colour muted-foreground>>;
	border-bottom-color: <<colour muted-foreground>>;
	border-radius: 3px;
	box-shadow: inset 0 -1px 0 <<colour muted-foreground>>;
}

::selection {
	background-color: Highlight;
	color: HighlightText;
	background-color: <<colour selection-background>>;
	color: <<colour selection-foreground>>;
}

/*
Markdown likes putting code elements inside pre elements
*/
pre > code {
	padding: 0;
	border: none;
	background-color: inherit;
	color: inherit;
}

table {
	border: 1px solid <<colour table-border>>;
	width: auto;
	max-width: 100%;
	caption-side: bottom;
	margin-top: 1em;
	margin-bottom: 1em;
	/* next 2 elements needed, since normalize 8.0.1 */
	border-collapse: collapse;
	border-spacing: 0;
}

table th, table td {
	padding: 0 7px 0 7px;
	border-top: 1px solid <<colour table-border>>;
	border-left: 1px solid <<colour table-border>>;
}

table thead tr td, table th {
	background-color: <<colour table-header-background>>;
	font-weight: bold;
}

table tfoot tr td {
	background-color: <<colour table-footer-background>>;
}

.tc-csv-table {
	white-space: nowrap;
}

.tc-tiddler-frame img,
.tc-tiddler-frame svg,
.tc-tiddler-frame canvas,
.tc-tiddler-frame embed,
.tc-tiddler-frame iframe {
	max-width: 100%;
}

.tc-tiddler-body > embed,
.tc-tiddler-body > iframe {
	width: 100%;
	height: 600px;
}

/*
** Links
*/

button.tc-tiddlylink,
a.tc-tiddlylink {
	text-decoration: none;
	font-weight: 500;
	color: <<colour tiddler-link-foreground>>;
	-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */
}

.tc-sidebar-lists a.tc-tiddlylink {
	color: <<colour sidebar-tiddler-link-foreground>>;
}

.tc-sidebar-lists a.tc-tiddlylink:hover {
	color: <<colour sidebar-tiddler-link-foreground-hover>>;
}

button.tc-tiddlylink:hover,
a.tc-tiddlylink:hover {
	text-decoration: underline;
}

a.tc-tiddlylink-resolves {
}

a.tc-tiddlylink-shadow {
	font-weight: bold;
}

a.tc-tiddlylink-shadow.tc-tiddlylink-resolves {
	font-weight: normal;
}

a.tc-tiddlylink-missing {
	font-style: italic;
}

a.tc-tiddlylink-external {
	text-decoration: underline;
	color: <<colour external-link-foreground>>;
	background-color: <<colour external-link-background>>;
}

a.tc-tiddlylink-external:visited {
	color: <<colour external-link-foreground-visited>>;
	background-color: <<colour external-link-background-visited>>;
}

a.tc-tiddlylink-external:hover {
	color: <<colour external-link-foreground-hover>>;
	background-color: <<colour external-link-background-hover>>;
}

.tc-drop-down a.tc-tiddlylink:hover {
	color: <<colour tiddler-link-background>>;
}

/*
** Drag and drop styles
*/

.tc-tiddler-dragger {
	position: relative;
	z-index: -10000;
}

.tc-tiddler-dragger-inner {
	position: absolute;
	top: -1000px;
	left: -1000px;
	display: inline-block;
	padding: 8px 20px;
	font-size: 16.9px;
	font-weight: bold;
	line-height: 20px;
	color: <<colour dragger-foreground>>;
	text-shadow: 0 1px 0 rgba(0, 0, 0, 1);
	white-space: nowrap;
	vertical-align: baseline;
	background-color: <<colour dragger-background>>;
	border-radius: 20px;
}

.tc-tiddler-dragger-cover {
	position: absolute;
	background-color: <<colour page-background>>;
}

.tc-dropzone {
	position: relative;
}

.tc-dropzone.tc-dragover:before {
	z-index: 10000;
	display: block;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	background: <<colour dropzone-background>>;
	text-align: center;
	content: "<<lingo DropMessage>>";
}

.tc-droppable > .tc-droppable-placeholder {
	display: none;
}

.tc-droppable.tc-dragover > .tc-droppable-placeholder {
	display: block;
	border: 2px dashed <<colour dropzone-background>>;
}

.tc-draggable {
	cursor: move;
}

.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,
.tc-links-draggable-list .tc-droppable-placeholder {
	line-height: 2em;
	height: 2em;
}

.tc-sidebar-tab-open-item {
	position: relative;
}

.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {
	font-size: 0.7em;
	fill: <<colour muted-foreground>>;
}

/*
** Plugin reload warning
*/

.tc-plugin-reload-warning {
	z-index: 1000;
	display: block;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	background: <<colour alert-background>>;
	text-align: center;
}

/*
** Buttons
*/

button svg, button img, label svg, label img {
	vertical-align: middle;
}

.tc-btn-invisible {
	padding: 0;
	margin: 0;
	background: none;
	border: none;
	cursor: pointer;
	color: <<colour foreground>>;
	fill: <<colour foreground>>;
}

.tc-btn-boxed {
	font-size: 0.6em;
	padding: 0.2em;
	margin: 1px;
	background: none;
	border: 1px solid <<colour tiddler-controls-foreground>>;
	border-radius: 0.25em;
}

html body.tc-body .tc-btn-boxed svg {
	font-size: 1.6666em;
}

.tc-btn-boxed:hover {
	background: <<colour muted-foreground>>;
	color: <<colour background>>;
}

html body.tc-body .tc-btn-boxed:hover svg {
	fill: <<colour background>>;
}

.tc-btn-rounded {
	font-size: 0.5em;
	line-height: 2;
	padding: 0em 0.3em 0.2em 0.4em;
	margin: 1px;
	border: 1px solid <<colour muted-foreground>>;
	background: <<colour muted-foreground>>;
	color: <<colour background>>;
	border-radius: 2em;
}

html body.tc-body .tc-btn-rounded svg {
	font-size: 1.6666em;
	fill: <<colour background>>;
}

.tc-btn-rounded:hover {
	border: 1px solid <<colour muted-foreground>>;
	background: <<colour background>>;
	color: <<colour muted-foreground>>;
}

html body.tc-body .tc-btn-rounded:hover svg {
	fill: <<colour muted-foreground>>;
}

.tc-btn-icon svg {
	height: 1em;
	width: 1em;
	fill: <<colour muted-foreground>>;
}

.tc-btn-text {
	padding: 0;
	margin: 0;
}

/* used for documentation "fake" buttons */
.tc-btn-standard {
	line-height: 1.8;
	color: #667;
	background-color: #e0e0e0;
	border: 1px solid #888;
	padding: 2px 1px 2px 1px;
	margin: 1px 4px 1px 4px;
}

.tc-btn-big-green {
	display: inline-block;
	padding: 8px;
	margin: 4px 8px 4px 8px;
	background: <<colour download-background>>;
	color: <<colour download-foreground>>;
	fill: <<colour download-foreground>>;
	border: none;
	border-radius: 2px;
	font-size: 1.2em;
	line-height: 1.4em;
	text-decoration: none;
}

.tc-btn-big-green svg,
.tc-btn-big-green img {
	height: 2em;
	width: 2em;
	vertical-align: middle;
	fill: <<colour download-foreground>>;
}

.tc-primary-btn {
 	background: <<colour primary>>;
}

.tc-sidebar-lists input {
	color: <<colour foreground>>;
}

.tc-sidebar-lists button {
	color: <<colour sidebar-button-foreground>>;
	fill: <<colour sidebar-button-foreground>>;
}

.tc-sidebar-lists button.tc-btn-mini {
	color: <<colour sidebar-muted-foreground>>;
}

.tc-sidebar-lists button.tc-btn-mini:hover {
	color: <<colour sidebar-muted-foreground-hover>>;
}

.tc-sidebar-lists button small {
	color: <<colour foreground>>;
}

button svg.tc-image-button, button .tc-image-button img {
	height: 1em;
	width: 1em;
}

.tc-unfold-banner {
	position: absolute;
	padding: 0;
	margin: 0;
	background: none;
	border: none;
	width: 100%;
	width: calc(100% + 2px);
	margin-left: -43px;
	text-align: center;
	border-top: 2px solid <<colour tiddler-info-background>>;
	margin-top: 4px;
}

.tc-unfold-banner:hover {
	background: <<colour tiddler-info-background>>;
	border-top: 2px solid <<colour tiddler-info-border>>;
}

.tc-unfold-banner svg, .tc-fold-banner svg {
	height: 0.75em;
	fill: <<colour tiddler-controls-foreground>>;
}

.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {
	fill: <<colour tiddler-controls-foreground-hover>>;
}

.tc-fold-banner {
	position: absolute;
	padding: 0;
	margin: 0;
	background: none;
	border: none;
	width: 23px;
	text-align: center;
	margin-left: -35px;
	top: 6px;
	bottom: 6px;
}

.tc-fold-banner:hover {
	background: <<colour tiddler-info-background>>;
}

@media (max-width: <<sidebarbreakpoint-minus-one>>) {

	.tc-unfold-banner {
		position: static;
		width: calc(100% + 59px);
	}

	.tc-fold-banner {
		width: 16px;
		margin-left: -16px;
		font-size: 0.75em;
	}

}

/*
** Tags and missing tiddlers
*/

.tc-tag-list-item {
	position: relative;
	display: inline-block;
	margin-right: 7px;
}

.tc-tags-wrapper {
	margin: 4px 0 14px 0;
}

.tc-missing-tiddler-label {
	font-style: italic;
	font-weight: normal;
	display: inline-block;
	font-size: 11.844px;
	line-height: 14px;
	white-space: nowrap;
	vertical-align: baseline;
}

.tc-block-tags-dropdown > .tc-btn-invisible:hover {
	background-color: <<colour primary>>;
}

button.tc-tag-label, span.tc-tag-label {
	display: inline-block;
	padding: 0.16em 0.7em;
	font-size: 0.9em;
	font-weight: 400;
	line-height: 1.2em;
	color: <<colour tag-foreground>>;
	white-space: nowrap;
	vertical-align: baseline;
	background-color: <<colour tag-background>>;
	border-radius: 1em;
}

.tc-sidebar-scrollable .tc-tag-label {
	text-shadow: none;
}

.tc-untagged-separator {
	width: 10em;
	left: 0;
	margin-left: 0;
	border: 0;
	height: 1px;
	background: <<colour tab-divider>>;
}

button.tc-untagged-label {
	background-color: <<colour untagged-background>>;
}

.tc-tag-label svg, .tc-tag-label img {
	height: 1em;
	width: 1em;
	margin-right: 3px; 
	margin-bottom: 1px;
	vertical-align: bottom;
}

.tc-edit-tags button.tc-remove-tag-button svg {
	font-size: 0.7em;
	vertical-align: middle;
}

.tc-tag-manager-table .tc-tag-label {
	white-space: normal;
}

.tc-tag-manager-tag {
	width: 100%;
}

button.tc-btn-invisible.tc-remove-tag-button {
	outline: none;
}

.tc-tag-button-selected,
.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {
	background-color: <<colour primary>>;
	color: <<colour tiddler-background>>;
}

/*
** Page layout
*/

.tc-topbar {
	position: fixed;
	z-index: 1200;
}

.tc-topbar-left {
	left: 29px;
	top: 5px;
}

.tc-topbar-right {
	top: 5px;
	right: 29px;
}

@media (max-width: <<sidebarbreakpoint-minus-one>>) {

	.tc-topbar-right {
		right: 10px;
	}

}

.tc-topbar button {
	padding: 8px;
}

.tc-topbar svg {
	fill: <<colour muted-foreground>>;
}

.tc-topbar button:hover svg {
	fill: <<colour foreground>>;
}

@media (max-width: <<sidebarbreakpoint-minus-one>>) {

	.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {
		transform: rotate(-90deg);
	}

}

.tc-sidebar-header {
	color: <<colour sidebar-foreground>>;
	fill: <<colour sidebar-foreground>>;
}

.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {
	font-weight: 300;
}

.tc-sidebar-header .tc-sidebar-lists p {
	margin-top: 3px;
	margin-bottom: 3px;
}

.tc-sidebar-header .tc-missing-tiddler-label {
	color: <<colour sidebar-foreground>>;
}

.tc-advanced-search input {
	width: 60%;
}

.tc-search a svg {
	width: 1.2em;
	height: 1.2em;
	vertical-align: middle;
}

.tc-page-controls {
	margin-top: 14px;
	font-size: 1.5em;
}

.tc-page-controls .tc-drop-down {
  font-size: 1rem;
}

.tc-page-controls button {
	margin-right: 0.5em;
}

.tc-page-controls a.tc-tiddlylink:hover {
	text-decoration: none;
}

.tc-page-controls img {
	width: 1em;
}

.tc-page-controls svg {
	fill: <<colour sidebar-controls-foreground>>;
}

.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {
	fill: <<colour sidebar-controls-foreground-hover>>;
}

.tc-sidebar-lists .tc-menu-list-item {
	white-space: nowrap;
}

.tc-menu-list-count {
	font-weight: bold;
}

.tc-menu-list-subitem {
	padding-left: 7px;
}

.tc-story-river {
	position: relative;
}

@media (max-width: <<sidebarbreakpoint-minus-one>>) {

	.tc-sidebar-header {
		padding: 14px;
		min-height: 32px;
		margin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
		transition:  min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;
	}
	
	<<if-no-sidebar """

		.tc-sidebar-header {
			min-height: 0;
			padding-top: 0;
			padding-bottom: 0;
		}

	""">>

	.tc-story-river {
		position: relative;
		padding: 0;
	}
}

@media (min-width: <<sidebarbreakpoint>>) {

	.tc-message-box {
		margin: 21px -21px 21px -21px;
	}

	.tc-sidebar-scrollable {
		position: fixed;
		top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
		left: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
		bottom: 0;
		right: 0;
		overflow-y: auto;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		margin: 0 0 0 -42px;
		padding: 71px 0 28px 42px;
	}

	html[dir="rtl"] .tc-sidebar-scrollable {
		left: auto;
		right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
	}

	.tc-story-river {
		position: relative;
		left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
		top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
		width: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};
		padding: 42px 42px 42px 42px;
	}

<<if-no-sidebar "

	.tc-story-river {
		width: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});
	}

">>

	.tc-story-river.tc-static-story-river {
		margin-right: 0;
		padding-right: 42px;
	}

}

@media print {

	body.tc-body {
		background-color: transparent;
	}

	.tc-sidebar-header, .tc-topbar {
		display: none;
	}

	.tc-story-river {
		margin: 0;
		padding: 0;
	}

	.tc-story-river .tc-tiddler-frame {
		margin: 0;
		border: none;
		padding: 0;
	}
}

/*
** Tiddler styles
*/

.tc-tiddler-frame {
	position: relative;
	margin-bottom: 28px;
	background-color: <<colour tiddler-background>>;
	border: 1px solid <<colour tiddler-border>>;
}

{{$:/themes/tiddlywiki/vanilla/sticky}}

.tc-tiddler-info {
	padding: 14px 42px 14px 42px;
	background-color: <<colour tiddler-info-background>>;
	border-top: 1px solid <<colour tiddler-info-border>>;
	border-bottom: 1px solid <<colour tiddler-info-border>>;
}

.tc-tiddler-info p {
	margin-top: 3px;
	margin-bottom: 3px;
}

.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {
	background-color: <<colour tiddler-info-tab-background>>;
	border-bottom: 1px solid <<colour tiddler-info-tab-background>>;
}

@media (max-width: <<sidebarbreakpoint-minus-one>>) {

	.tc-tiddler-info {
		padding: 14px 14px 14px 14px;
	}

}

.tc-view-field-table {
	width: 100%;
}

.tc-view-field-name {
	width: 1%; /* Makes this column be as narrow as possible */
	text-align: right;
	font-style: italic;
	font-weight: 200;
}

.tc-view-field-value {
}

@media (max-width: <<sidebarbreakpoint-minus-one>>) {
	.tc-tiddler-frame {
		padding: 14px 14px 14px 14px;
		margin-bottom: .5em;
	}

	.tc-tiddler-info {
		margin: 0 -14px 0 -14px;
	}
}

@media (min-width: <<sidebarbreakpoint>>) {
	.tc-tiddler-frame {
		padding: 28px 42px 42px 42px;
		width: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};
		border-radius: 2px;
	}

<<if-no-sidebar "

	.tc-tiddler-frame {
		width: 100%;
	}

">>

	.tc-tiddler-info {
		margin: 0 -42px 0 -42px;
	}
}

.tc-site-title,
.tc-titlebar {
	font-weight: 300;
	font-size: 2.35em;
	line-height: 1.35em;
	color: <<colour tiddler-title-foreground>>;
	margin: 0;
}

.tc-site-title {
	color: <<colour site-title-foreground>>;
}

.tc-tiddler-title-icon {
	vertical-align: middle;
	margin-right: .1em;
}

.tc-system-title-prefix {
	color: <<colour muted-foreground>>;
}

.tc-titlebar h2 {
	font-size: 1em;
	display: inline;
}

.tc-titlebar img {
	height: 1em;
}

.tc-subtitle {
	font-size: 0.9em;
	color: <<colour tiddler-subtitle-foreground>>;
	font-weight: 300;
}

.tc-subtitle .tc-tiddlylink {
	margin-right: .3em;
}

.tc-tiddler-missing .tc-title {
  font-style: italic;
  font-weight: normal;
}

.tc-tiddler-frame .tc-tiddler-controls {
	float: right;
}

.tc-tiddler-controls .tc-drop-down {
	font-size: 0.6em;
}

.tc-tiddler-controls .tc-drop-down .tc-drop-down {
	font-size: 1em;
}

.tc-tiddler-controls > span > button,
.tc-tiddler-controls > span > span > button,
.tc-tiddler-controls > span > span > span > button {
	vertical-align: baseline;
	margin-left:5px;
}

.tc-tiddler-controls button svg, .tc-tiddler-controls button img,
.tc-search button svg, .tc-search a svg {
	fill: <<colour tiddler-controls-foreground>>;
}

.tc-tiddler-controls button svg, .tc-tiddler-controls button img {
	height: 0.75em;
}

.tc-search button svg, .tc-search a svg {
    height: 1.2em;
    width: 1.2em;
    margin: 0 0.25em;
}

.tc-tiddler-controls button.tc-selected svg,
.tc-page-controls button.tc-selected svg  {
	fill: <<colour tiddler-controls-foreground-selected>>;
}

.tc-tiddler-controls button.tc-btn-invisible:hover svg,
.tc-search button:hover svg, .tc-search a:hover svg {
	fill: <<colour tiddler-controls-foreground-hover>>;
}

@media print {
	.tc-tiddler-controls {
		display: none;
	}
}

.tc-tiddler-help { /* Help prompts within tiddler template */
	color: <<colour muted-foreground>>;
	margin-top: 14px;
}

.tc-tiddler-help a.tc-tiddlylink {
	color: <<colour very-muted-foreground>>;
}

.tc-tiddler-frame .tc-edit-texteditor {
	width: 100%;
	margin: 4px 0 4px 0;
}

.tc-tiddler-frame input.tc-edit-texteditor,
.tc-tiddler-frame textarea.tc-edit-texteditor,
.tc-tiddler-frame iframe.tc-edit-texteditor {
	padding: 3px 3px 3px 3px;
	border: 1px solid <<colour tiddler-editor-border>>;
	line-height: 1.3em;
	-webkit-appearance: none;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};
}

.tc-tiddler-frame input.tc-edit-texteditor,
.tc-tiddler-frame textarea.tc-edit-texteditor {
	background-color: <<colour tiddler-editor-background>>;
}

.tc-tiddler-frame iframe.tc-edit-texteditor {
	background-color: <<colour tiddler-background>>;
}

.tc-tiddler-frame .tc-binary-warning {
	width: 100%;
	height: 5em;
	text-align: center;
	padding: 3em 3em 6em 3em;
	background: <<colour alert-background>>;
	border: 1px solid <<colour alert-border>>;
}

canvas.tc-edit-bitmapeditor  {
	border: 6px solid <<colour tiddler-editor-border-image>>;
	cursor: crosshair;
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	margin-top: 6px;
	margin-bottom: 6px;
}

.tc-edit-bitmapeditor-width {
	display: block;
}

.tc-edit-bitmapeditor-height {
	display: block;
}

.tc-tiddler-body {
	clear: both;
}

.tc-tiddler-frame .tc-tiddler-body {
	font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
	line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};
}

.tc-titlebar, .tc-tiddler-edit-title {
	overflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */
}

html body.tc-body.tc-single-tiddler-window {
	margin: 1em;
	background: <<colour tiddler-background>>;
}

.tc-single-tiddler-window img,
.tc-single-tiddler-window svg,
.tc-single-tiddler-window canvas,
.tc-single-tiddler-window embed,
.tc-single-tiddler-window iframe {
	max-width: 100%;
}

/*
** Editor
*/

.tc-editor-toolbar {
	margin-top: 8px;
}

.tc-editor-toolbar button {
	vertical-align: middle;
	background-color: <<colour tiddler-controls-foreground>>;
	color: <<colour tiddler-controls-foreground-selected>>;
	fill: <<colour tiddler-controls-foreground-selected>>;
	border-radius: 4px;
	padding: 3px;
	margin: 2px 0 2px 4px;
}

.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {
	margin-left: 1px;
	width: 1em;
	border-radius: 8px;
}

.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {
	margin-left: 11px;
}

.tc-editor-toolbar button.tc-selected {
	background-color: <<colour primary>>;
}

.tc-editor-toolbar button svg {
	width: 1.6em;
	height: 1.2em;
}

.tc-editor-toolbar button:hover {
	background-color: <<colour tiddler-controls-foreground-selected>>;
	fill: <<colour background>>;
	color: <<colour background>>;
}

.tc-editor-toolbar .tc-text-editor-toolbar-more {
	white-space: normal;
}

.tc-editor-toolbar .tc-text-editor-toolbar-more button {
	display: inline-block;
	padding: 3px;
	width: auto;
}

.tc-editor-toolbar .tc-search-results {
	padding: 0;
}

/*
** Adjustments for fluid-fixed mode
*/

@media (min-width: <<sidebarbreakpoint>>) {

<<if-fluid-fixed text:"""

	.tc-story-river {
		padding-right: 0;
		position: relative;
		width: auto;
		left: 0;
		margin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
		margin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
	}

	.tc-tiddler-frame {
		width: 100%;
	}

	.tc-sidebar-scrollable {
		left: auto;
		bottom: 0;
		right: 0;
		width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
	}

	body.tc-body .tc-storyview-zoomin-tiddler {
		width: 100%;
		width: calc(100% - 42px);
	}

""" hiddenSidebarText:"""

	.tc-story-river {
		padding-right: 3em;
		margin-right: 0;
	}

	body.tc-body .tc-storyview-zoomin-tiddler {
		width: 100%;
		width: calc(100% - 84px);
	}

""">>

}

/*
** Toolbar buttons
*/

.tc-page-controls svg.tc-image-new-button {
  fill: <<colour toolbar-new-button>>;
}

.tc-page-controls svg.tc-image-options-button {
  fill: <<colour toolbar-options-button>>;
}

.tc-page-controls svg.tc-image-save-button {
  fill: <<colour toolbar-save-button>>;
}

.tc-tiddler-controls button svg.tc-image-info-button {
  fill: <<colour toolbar-info-button>>;
}

.tc-tiddler-controls button svg.tc-image-edit-button {
  fill: <<colour toolbar-edit-button>>;
}

.tc-tiddler-controls button svg.tc-image-close-button {
  fill: <<colour toolbar-close-button>>;
}

.tc-tiddler-controls button svg.tc-image-delete-button {
  fill: <<colour toolbar-delete-button>>;
}

.tc-tiddler-controls button svg.tc-image-cancel-button {
  fill: <<colour toolbar-cancel-button>>;
}

.tc-tiddler-controls button svg.tc-image-done-button {
  fill: <<colour toolbar-done-button>>;
}

/*
** Tiddler edit mode
*/

.tc-tiddler-edit-frame em.tc-edit {
	color: <<colour muted-foreground>>;
	font-style: normal;
}

.tc-edit-type-dropdown a.tc-tiddlylink-missing {
	font-style: normal;
}

.tc-type-selector .tc-edit-typeeditor {
	width: auto;
}

.tc-type-selector-dropdown-wrapper {
	display: inline-block;
}

<<set-type-selector-min-width>>

.tc-edit-tags {
	border: 1px solid <<colour tiddler-editor-border>>;
	padding: 4px 8px 4px 8px;
}

.tc-edit-add-tag {
	display: inline-block;
}

.tc-edit-add-tag .tc-add-tag-name input {
	width: 50%;
}

.tc-edit-add-tag .tc-keyboard {
	display:inline;
}

.tc-edit-tags .tc-tag-label {
	display: inline-block;
}

.tc-edit-tags-list {
	margin: 14px 0 14px 0;
}

.tc-remove-tag-button {
	padding-left: 4px;
}

.tc-tiddler-preview {
	overflow: auto;
}

.tc-tiddler-preview-preview {
	float: right;
	width: 49%;
	border: 1px solid <<colour tiddler-editor-border>>;
	margin: 4px 0 3px 3px;
	padding: 3px 3px 3px 3px;
}

<<if-editor-height-fixed then:"""

.tc-tiddler-preview-preview {
	overflow-y: scroll;
	height: {{$:/config/TextEditor/EditorHeight/Height}};
}

""">>

.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {
	width: 49%;
}

.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {
	max-width: 49%;
}

.tc-edit-fields {
	width: 100%;
}

.tc-edit-fields.tc-edit-fields-small {
	margin-top: 0;
	margin-bottom: 0;
}

.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {
	border: none;
	padding: 4px;
}

.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {
	background-color: <<colour tiddler-editor-fields-odd>>;
}

.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {
	background-color: <<colour tiddler-editor-fields-even>>;
}

.tc-edit-field-name {
	text-align: right;
}

.tc-edit-field-value input {
	width: 100%;
}

.tc-edit-field-remove {
}

.tc-edit-field-remove svg {
	height: 1em;
	width: 1em;
	fill: <<colour muted-foreground>>;
	vertical-align: middle;
}

.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {
	width: auto;
}

.tc-edit-field-add-name-wrapper {
	display: inline-block;
}

.tc-edit-field-add-value {
	display: inline-block;
}

@media (min-width: <<sidebarbreakpoint>>) {

	.tc-edit-field-add-value {
		width: 35%;
	}

}

.tc-edit-field-add-button {
	display: inline-block;
	width: 10%;
}

/*
** Storyview Classes
*/

.tc-viewswitcher .tc-image-button {
	margin-right: .3em;
}

.tc-storyview-zoomin-tiddler {
	position: absolute;
	display: block;
	width: 100%;
}

@media (min-width: <<sidebarbreakpoint>>) {

	.tc-storyview-zoomin-tiddler {
		width: calc(100% - 84px);
	}

}

/*
** Dropdowns
*/

.tc-btn-dropdown {
	text-align: left;
}

.tc-btn-dropdown svg, .tc-btn-dropdown img {
	height: 1em;
	width: 1em;
	fill: <<colour muted-foreground>>;
}

.tc-drop-down-wrapper {
	position: relative;
}

.tc-drop-down {
	min-width: 380px;
	border: 1px solid <<colour dropdown-border>>;
	background-color: <<colour dropdown-background>>;
	padding: 7px 0 7px 0;
	margin: 4px 0 0 0;
	white-space: nowrap;
	text-shadow: none;
	line-height: 1.4;
}

.tc-drop-down .tc-drop-down {
	margin-left: 14px;
}

.tc-drop-down button svg, .tc-drop-down a svg  {
	fill: <<colour foreground>>;
}

.tc-drop-down button.tc-btn-invisible:hover svg {
	fill: <<colour background>>;
}

.tc-drop-down .tc-drop-down-info {
	padding-left: 14px;
}

.tc-drop-down p {
	padding: 0 14px 0 14px;
}

.tc-drop-down svg {
	width: 1em;
	height: 1em;
}

.tc-drop-down img {
	width: 1em;
}

.tc-drop-down a, .tc-drop-down button {
	display: block;
	padding: 0 14px 0 14px;
	width: 100%;
	text-align: left;
	color: <<colour foreground>>;
	line-height: 1.4;
}

.tc-drop-down .tc-tab-set .tc-tab-buttons button {
	display: inline-block;
    width: auto;
    margin-bottom: 0px;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.tc-drop-down .tc-prompt {
	padding: 0 14px;
}

.tc-drop-down .tc-chooser {
	border: none;
}

.tc-drop-down .tc-chooser .tc-swatches-horiz {
	font-size: 0.4em;
	padding-left: 1.2em;
}

.tc-drop-down .tc-file-input-wrapper {
	width: 100%;
}

.tc-drop-down .tc-file-input-wrapper button {
	color: <<colour foreground>>;
}

.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {
	color: <<colour tiddler-link-background>>;
	background-color: <<colour tiddler-link-foreground>>;
	text-decoration: none;
}

.tc-drop-down .tc-tab-buttons button {
	background-color: <<colour dropdown-tab-background>>;
}

.tc-drop-down .tc-tab-buttons button.tc-tab-selected {
	background-color: <<colour dropdown-tab-background-selected>>;
	border-bottom: 1px solid <<colour dropdown-tab-background-selected>>;
}

.tc-drop-down-bullet {
	display: inline-block;
	width: 0.5em;
}

.tc-drop-down .tc-tab-contents a {
	padding: 0 0.5em 0 0.5em;
}

.tc-block-dropdown-wrapper {
	position: relative;
}

.tc-block-dropdown {
	position: absolute;
	min-width: 220px;
	border: 1px solid <<colour dropdown-border>>;
	background-color: <<colour dropdown-background>>;
	padding: 7px 0;
	margin: 4px 0 0 0;
	white-space: nowrap;
	z-index: 1000;
	text-shadow: none;
}

.tc-block-dropdown.tc-search-drop-down {
	margin-left: -12px;
}

.tc-block-dropdown a {
	display: block;
	padding: 4px 14px 4px 14px;
}

.tc-block-dropdown.tc-search-drop-down a {
	display: block;
	padding: 0px 10px 0px 10px;
}

.tc-drop-down .tc-dropdown-item-plain,
.tc-block-dropdown .tc-dropdown-item-plain {
	padding: 4px 14px 4px 7px;
}

.tc-drop-down .tc-dropdown-item,
.tc-block-dropdown .tc-dropdown-item {
	padding: 4px 14px 4px 7px;
	color: <<colour muted-foreground>>;
}

.tc-block-dropdown a.tc-tiddlylink:hover {
	color: <<colour tiddler-link-background>>;
	background-color: <<colour tiddler-link-foreground>>;
	text-decoration: none;
}

.tc-search-results {
	padding: 0 7px 0 7px;
}

.tc-image-chooser, .tc-colour-chooser {
	white-space: normal;
}

.tc-image-chooser a,
.tc-colour-chooser a {
	display: inline-block;
	vertical-align: top;
	text-align: center;
	position: relative;
}

.tc-image-chooser a {
	border: 1px solid <<colour muted-foreground>>;
	padding: 2px;
	margin: 2px;
	width: 4em;
	height: 4em;
}

.tc-colour-chooser a {
	padding: 3px;
	width: 2em;
	height: 2em;
	vertical-align: middle;
}

.tc-image-chooser a:hover,
.tc-colour-chooser a:hover {
	background: <<colour primary>>;
	padding: 0px;
	border: 3px solid <<colour primary>>;
}

.tc-image-chooser a svg,
.tc-image-chooser a img {
	display: inline-block;
	width: auto;
	height: auto;
	max-width: 3.5em;
	max-height: 3.5em;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	margin: auto;
}

/*
** Modals
*/

.tc-modal-wrapper {
	position: fixed;
	overflow: auto;
	overflow-y: scroll;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 900;
}

.tc-modal-backdrop {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 1000;
	background-color: <<colour modal-backdrop>>;
}

.tc-modal {
	z-index: 1100;
	background-color: <<colour modal-background>>;
	border: 1px solid <<colour modal-border>>;
}

@media (max-width: 55em) {
	.tc-modal {
		position: fixed;
		top: 1em;
		left: 1em;
		right: 1em;
	}

	.tc-modal-body {
		overflow-y: auto;
		max-height: 400px;
		max-height: 60vh;
	}
}

@media (min-width: 55em) {
	.tc-modal {
		position: fixed;
		top: 2em;
		left: 25%;
		width: 50%;
	}

	.tc-modal-body {
		overflow-y: auto;
		max-height: 400px;
		max-height: 60vh;
	}
}

.tc-modal-header {
	padding: 9px 15px;
	border-bottom: 1px solid <<colour modal-header-border>>;
}

.tc-modal-header h3 {
	margin: 0;
	line-height: 30px;
}

.tc-modal-header img, .tc-modal-header svg {
	width: 1em;
	height: 1em;
}

.tc-modal-body {
	padding: 15px;
}

.tc-modal-footer {
	padding: 14px 15px 15px;
	margin-bottom: 0;
	text-align: right;
	background-color: <<colour modal-footer-background>>;
	border-top: 1px solid <<colour modal-footer-border>>;
}


/*
** Centered modals
*/
.tc-modal-centered .tc-modal {
	width: auto;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%) !important;
}

/*
** Notifications
*/

.tc-notification {
	position: fixed;
	top: 14px;
	right: 42px;
	z-index: 1300;
	max-width: 280px;
	padding: 0 14px 0 14px;
	background-color: <<colour notification-background>>;
	border: 1px solid <<colour notification-border>>;
}

/*
** Tabs
*/

.tc-tab-set.tc-vertical {
	display: -webkit-flex;
	display: flex;
}

.tc-tab-buttons {
	font-size: 0.85em;
	padding-top: 1em;
	margin-bottom: -2px;
}

.tc-tab-buttons.tc-vertical  {
	z-index: 100;
	display: block;
	padding-top: 14px;
	vertical-align: top;
	text-align: right;
	margin-bottom: inherit;
	margin-right: -1px;
	max-width: 33%;
	-webkit-flex: 0 0 auto;
	flex: 0 0 auto;
}

.tc-tab-buttons button.tc-tab-selected {
	color: <<colour tab-foreground-selected>>;
	background-color: <<colour tab-background-selected>>;
	border-left: 1px solid <<colour tab-border-selected>>;
	border-top: 1px solid <<colour tab-border-selected>>;
	border-right: 1px solid <<colour tab-border-selected>>;
}

.tc-tab-buttons button {
	color: <<colour tab-foreground>>;
	padding: 3px 5px 3px 5px;
	margin-right: 0.3em;
	font-weight: 300;
	border: none;
	background: inherit;
	background-color: <<colour tab-background>>;
	border-left: 1px solid <<colour tab-border>>;
	border-top: 1px solid <<colour tab-border>>;
	border-right: 1px solid <<colour tab-border>>;
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}

.tc-tab-buttons.tc-vertical button {
	display: block;
	width: 100%;
	margin-top: 3px;
	margin-right: 0;
	text-align: right;
	background-color: <<colour tab-background>>;
	border-left: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
	border-right: none;
	border-top-left-radius: 2px;
	border-bottom-left-radius: 2px;
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
}

.tc-tab-buttons.tc-vertical button.tc-tab-selected {
	background-color: <<colour tab-background-selected>>;
	border-right: 1px solid <<colour tab-background-selected>>;
}

.tc-tab-divider {
	border-top: 1px solid <<colour tab-divider>>;
}

.tc-tab-divider.tc-vertical  {
	display: none;
}

.tc-tab-content {
	margin-top: 14px;
}

.tc-tab-content.tc-vertical  {
	display: inline-block;
	vertical-align: top;
	padding-top: 0;
	padding-left: 14px;
	border-left: 1px solid <<colour tab-border>>;
	-webkit-flex: 1 0 70%;
	flex: 1 0 70%;
	overflow: auto;
}

.tc-sidebar-lists .tc-tab-buttons {
	margin-bottom: -1px;
}

.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
	background-color: <<colour sidebar-tab-background-selected>>;
	color: <<colour sidebar-tab-foreground-selected>>;
	border-left: 1px solid <<colour sidebar-tab-border-selected>>;
	border-top: 1px solid <<colour sidebar-tab-border-selected>>;
	border-right: 1px solid <<colour sidebar-tab-border-selected>>;
}

.tc-sidebar-lists .tc-tab-buttons button {
	background-color: <<colour sidebar-tab-background>>;
	color: <<colour sidebar-tab-foreground>>;
	border-left: 1px solid <<colour sidebar-tab-border>>;
	border-top: 1px solid <<colour sidebar-tab-border>>;
	border-right: 1px solid <<colour sidebar-tab-border>>;
}

.tc-sidebar-lists .tc-tab-divider {
	border-top: 1px solid <<colour sidebar-tab-divider>>;
}

.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {
	display: block;
	width: 100%;
	background-color: <<colour sidebar-tab-background>>;
	border-top: none;
	border-left: none;
	border-bottom: none;
	border-right: 1px solid #ccc;
	margin-bottom: inherit;
}

.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {
	background-color: <<colour sidebar-tab-background-selected>>;
	border: none;
}

/*
** Manager
*/

.tc-manager-wrapper {
	
}

.tc-manager-controls {
	
}

.tc-manager-control {
	margin: 0.5em 0;
}

.tc-manager-list {
	width: 100%;
	border-top: 1px solid <<colour muted-foreground>>;
	border-left: 1px solid <<colour muted-foreground>>;
	border-right: 1px solid <<colour muted-foreground>>;
}

.tc-manager-list-item {

}

.tc-manager-list-item-heading {
    display: block;
    width: 100%;
    text-align: left;	
	border-bottom: 1px solid <<colour muted-foreground>>;
	padding: 3px;
}

.tc-manager-list-item-heading-selected {
	font-weight: bold;
	color: <<colour background>>;
	fill: <<colour background>>;
	background-color: <<colour foreground>>;
}

.tc-manager-list-item-heading:hover {
	background: <<colour primary>>;
	color: <<colour background>>;
}

.tc-manager-list-item-content {
	display: flex;
}

.tc-manager-list-item-content-sidebar {
    flex: 1 0;
    background: <<colour tiddler-editor-background>>;
    border-right: 0.5em solid <<colour muted-foreground>>;
    border-bottom: 0.5em solid <<colour muted-foreground>>;
    white-space: nowrap;
}

.tc-manager-list-item-content-item-heading {
	display: block;
	width: 100%;
	text-align: left;
    background: <<colour muted-foreground>>;
	text-transform: uppercase;
	font-size: 0.6em;
	font-weight: bold;
    padding: 0.5em 0 0.5em 0;
}

.tc-manager-list-item-content-item-body {
	padding: 0 0.5em 0 0.5em;
}

.tc-manager-list-item-content-item-body > pre {
	margin: 0.5em 0 0.5em 0;
	border: none;
	background: inherit;
}

.tc-manager-list-item-content-tiddler {
    flex: 3 1;
    border-left: 0.5em solid <<colour muted-foreground>>;
    border-right: 0.5em solid <<colour muted-foreground>>;
    border-bottom: 0.5em solid <<colour muted-foreground>>;
}

.tc-manager-list-item-content-item-body > table {
	border: none;
	padding: 0;
	margin: 0;
}

.tc-manager-list-item-content-item-body > table td {
	border: none;
}

.tc-manager-icon-editor > button {
	width: 100%;
}

.tc-manager-icon-editor > button > svg,
.tc-manager-icon-editor > button > button {
	width: 100%;
	height: auto;
}

/*
** Import table
*/

.tc-import-table {
	width: 100%;
}

.tc-import-table svg.tc-image-edit-button {
	max-width: unset;
}

.tc-import-table th:first-of-type {
	width: 10%;
}

.tc-import-table th:last-of-type {
	width: 30%;
}

.tc-import-table .tc-row-disabled {
	background: <<colour very-muted-foreground>>10;
	opacity: 0.8;
}

.tc-import-table .tc-row-warning {
	background: <<colour diff-delete-background>>50;
}

/*
** Alerts
*/

.tc-alerts {
	position: fixed;
	top: 28px;
	left: 0;
	right: 0;
	max-width: 50%;
	z-index: 20000;
}

.tc-alert {
	position: relative;
	margin: 14px;
	padding: 7px;
	border: 1px solid <<colour alert-border>>;
	background-color: <<colour alert-background>>;
}

.tc-alert-toolbar {
	position: absolute;
	top: 7px;
	right: 7px;
    line-height: 0;
}

.tc-alert-toolbar svg {
	fill: <<colour alert-muted-foreground>>;
}

.tc-alert-subtitle {
	color: <<colour alert-muted-foreground>>;
	font-weight: bold;
    font-size: 0.8em;
    margin-bottom: 0.5em;
}

.tc-alert-body > p {
	margin: 0;
}

.tc-alert-highlight {
	color: <<colour alert-highlight>>;
}

@media (min-width: <<sidebarbreakpoint>>) {

	.tc-static-alert {
		position: relative;
	}

	.tc-static-alert-inner {
		position: absolute;
		z-index: 100;
	}

}

.tc-static-alert-inner {
	padding: 0 2px 2px 42px;
	color: <<colour static-alert-foreground>>;
}

/*
** Floating drafts list
*/

.tc-drafts-list {
	z-index: 2000;
	position: fixed;
	font-size: 0.8em;
	left: 0;
	bottom: 0;
}

.tc-drafts-list a {
	margin: 0 0.5em;
	padding: 4px 4px;
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	border: 1px solid <<colour background>>;
	border-bottom-none;
	background: <<colour dirty-indicator>>;
	color: <<colour background>>;
	fill: <<colour background>>;
}

.tc-drafts-list a:hover {
	text-decoration: none;
	background: <<colour foreground>>;
	color: <<colour background>>;
	fill: <<colour background>>;
}

.tc-drafts-list a svg {
	width: 1em;
	height: 1em;
	vertical-align: text-bottom;
}

/*
** Control panel
*/

.tc-control-panel td {
	padding: 4px;
}

.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {
	width: 100%;
}

.tc-plugin-info {
	display: flex;
	border: 1px solid <<colour muted-foreground>>;
	fill: <<colour muted-foreground>>;
	background-color: <<colour background>>;
	margin: 0.5em 0 0.5em 0;
	padding: 4px;
    align-items: center;
}

.tc-plugin-info-sub-plugins .tc-plugin-info {
    margin: 0.5em;
	background: <<colour background>>;
}

.tc-plugin-info-sub-plugin-indicator {
	margin: -16px 1em 0 2em;
}

.tc-plugin-info-sub-plugin-indicator button {
	color: <<colour background>>;
	background: <<colour foreground>>;
	border-radius: 8px;
    padding: 2px 7px;
    font-size: 0.75em;
}

.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {
	margin-left: 1em;
	margin-right: 1em;
}

.tc-plugin-info-disabled {
	background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
	background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
}

.tc-plugin-info-disabled:hover {
	background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
	background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
}

a.tc-tiddlylink.tc-plugin-info:hover {
	text-decoration: none;
	background-color: <<colour primary>>;
	color: <<colour background>>;
	fill: <<colour foreground>>;
}

a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {
	fill: <<colour background>>;
}

.tc-plugin-info-chunk {
    margin: 2px;
}

.tc-plugin-info-chunk.tc-plugin-info-toggle {
	flex-grow: 0;
	flex-shrink: 0;
	line-height: 1;
}

.tc-plugin-info-chunk.tc-plugin-info-icon {
	flex-grow: 0;
	flex-shrink: 0;
	line-height: 1;
}

.tc-plugin-info-chunk.tc-plugin-info-description {
	flex-grow: 1;
}

.tc-plugin-info-chunk.tc-plugin-info-buttons {
	font-size: 0.8em;
	line-height: 1.2;
	flex-grow: 0;
	flex-shrink: 0;
    text-align: right;
}

.tc-plugin-info-chunk.tc-plugin-info-description h1 {
	font-size: 1em;
	line-height: 1.2;
	margin: 2px 0 2px 0;
}

.tc-plugin-info-chunk.tc-plugin-info-description h2 {
	font-size: 0.8em;
	line-height: 1.2;
	margin: 2px 0 2px 0;
}

.tc-plugin-info-chunk.tc-plugin-info-description div {
	font-size: 0.7em;
	line-height: 1.2;
	margin: 2px 0 2px 0;
}

.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {
	width: 1em;
	height: 1em;
}

.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {
	width: 2em;
	height: 2em;
}

.tc-plugin-info-dropdown {
	border: 1px solid <<colour muted-foreground>>;
	background: <<colour background>>;
	margin-top: -8px;
}

.tc-plugin-info-dropdown-message {
	background: <<colour message-background>>;
	padding: 0.5em 1em 0.5em 1em;
	font-weight: bold;
	font-size: 0.8em;
}

.tc-plugin-info-dropdown-body {
	padding: 1em 1em 0 1em;
	background: <<colour background>>;
}

.tc-plugin-info-sub-plugins {
	padding: 0.5em;
    margin: 0 1em 1em 1em;
	background: <<colour notification-background>>;
}

.tc-install-plugin {
	font-weight: bold;
	background: green;
	color: white;
	fill: white;
	border-radius: 4px;
	padding: 3px;
}

.tc-install-plugin.tc-reinstall-downgrade {
	background: red;
}

.tc-install-plugin.tc-reinstall {
	background: blue;
}

.tc-install-plugin.tc-reinstall-upgrade {
	background: orange;
}

.tc-check-list {
	line-height: 2em;
}

.tc-check-list .tc-image-button {
	height: 1.5em;
}

/*
** Message boxes
*/

.tc-message-box {
	border: 1px solid <<colour message-border>>;
	background: <<colour message-background>>;
	padding: 0px 21px 0px 21px;
	font-size: 12px;
	line-height: 18px;
	color: <<colour message-foreground>>;
}

.tc-message-box svg {
	width: 1em;
	height: 1em;
    vertical-align: text-bottom;
}

/*
** Pictures
*/

.tc-bordered-image {
	border: 1px solid <<colour muted-foreground>>;
	padding: 5px;
	margin: 5px;
}

/*
** Floats
*/

.tc-float-right {
	float: right;
}

/*
** Chooser
*/

.tc-chooser {
	border-right: 1px solid <<colour table-header-background>>;
	border-left: 1px solid <<colour table-header-background>>;
}


.tc-chooser-item {
	border-bottom: 1px solid <<colour table-header-background>>;
	border-top: 1px solid <<colour table-header-background>>;
	padding: 2px 4px 2px 14px;
}

.tc-drop-down .tc-chooser-item {
	padding: 2px;
}

.tc-chosen,
.tc-chooser-item:hover {
	background-color: <<colour table-header-background>>;
	border-color: <<colour table-footer-background>>;
}

.tc-chosen .tc-tiddlylink {
	cursor:default;
}

.tc-chooser-item .tc-tiddlylink {
	display: block;
	text-decoration: none;
	background-color: transparent;
}

.tc-chooser-item:hover .tc-tiddlylink:hover {
	text-decoration: none;
}

.tc-drop-down .tc-chosen .tc-tiddlylink,
.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {
	color: <<colour foreground>>;
}

.tc-chosen > .tc-tiddlylink:before {
	margin-left: -10px;
	position: relative;
	content: "» ";
}

.tc-chooser-item svg,
.tc-chooser-item img{
	width: 1em;
	height: 1em;
	vertical-align: middle;
}

.tc-language-chooser .tc-image-button img {
	width: 2em;
	vertical-align: -0.15em;
}

/*
** Palette swatches
*/

.tc-swatches-horiz {
}

.tc-swatches-horiz .tc-swatch {
	display: inline-block;
}

.tc-swatch {
	width: 2em;
	height: 2em;
	margin: 0.4em;
	border: 1px solid #888;
}

input.tc-palette-manager-colour-input {
	width: 100%;
	padding: 0;
}

/*
** Table of contents
*/

.tc-sidebar-lists .tc-table-of-contents {
	white-space: nowrap;
}

.tc-table-of-contents button {
	color: <<colour sidebar-foreground>>;
}

.tc-table-of-contents svg {
	width: 0.7em;
	height: 0.7em;
	vertical-align: middle;
	fill: <<colour sidebar-foreground>>;
}

.tc-table-of-contents ol {
	list-style-type: none;
	padding-left: 0;
}

.tc-table-of-contents ol ol {
	padding-left: 1em;
}

.tc-table-of-contents li {
	font-size: 1.0em;
	font-weight: normal;
}

.tc-table-of-contents li a {
	font-weight: normal;
}

.tc-table-of-contents li li {
	font-size: 0.95em;
	font-weight: normal;
	line-height: 1.4;
}

.tc-table-of-contents li li a {
	font-weight: normal;
}

.tc-table-of-contents li li li {
	font-size: 0.95em;
	font-weight: 200;
	line-height: 1.5;
}

.tc-table-of-contents li li li li {
	font-size: 0.95em;
	font-weight: 200;
}

.tc-tabbed-table-of-contents {
	display: -webkit-flex;
	display: flex;
}

.tc-tabbed-table-of-contents .tc-table-of-contents{
	z-index: 100;
	display: inline-block;
	padding-left: 1em;
	max-width: 50%;
	-webkit-flex: 0 0 auto;
	flex: 0 0 auto;
	background: <<colour tab-background>>;
	border-left: 1px solid <<colour tab-border>>;
	border-top: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
	display: block;
	padding: 0.12em 1em 0.12em 0.25em;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {
	border-top: 1px solid <<colour tab-background>>;
	border-left: 1px solid <<colour tab-background>>;
	border-bottom: 1px solid <<colour tab-background>>;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {
	text-decoration: none;
	border-top: 1px solid <<colour tab-border>>;
	border-left: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
	background: <<colour tab-border>>;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
	border-top: 1px solid <<colour tab-border>>;
	border-left: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
	background: <<colour background>>;
	margin-right: -1px;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {
	text-decoration: none;
}

.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {
	display: inline-block;
	vertical-align: top;
	padding-left: 1.5em;
	padding-right: 1.5em;
	border: 1px solid <<colour tab-border>>;
	-webkit-flex: 1 0 50%;
	flex: 1 0 50%;
}

/*
** Dirty indicator
*/

body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {
	fill: <<colour dirty-indicator>>;
	color: <<colour dirty-indicator>>;
}

/*
** File inputs
*/

.tc-file-input-wrapper {
	position: relative;
	overflow: hidden;
	display: inline-block;
	vertical-align: middle;
}

.tc-file-input-wrapper input[type=file] {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	font-size: 999px;
	max-width: 100%;
	max-height: 100%;
	filter: alpha(opacity=0);
	opacity: 0;
	outline: none;
	background: white;
	cursor: pointer;
	display: inline-block;
}

::-webkit-file-upload-button {
	cursor:pointer;
}

/*
** Thumbnail macros
*/

.tc-thumbnail-wrapper {
	position: relative;
	display: inline-block;
	margin: 6px;
	vertical-align: top;
}

.tc-thumbnail-right-wrapper {
	float:right;
	margin: 0.5em 0 0.5em 0.5em;
}

.tc-thumbnail-image {
	text-align: center;
	overflow: hidden;
	border-radius: 3px;
}

.tc-thumbnail-image svg,
.tc-thumbnail-image img {
	filter: alpha(opacity=1);
	opacity: 1;
	min-width: 100%;
	min-height: 100%;
	max-width: 100%;
}

.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {
	filter: alpha(opacity=0.8);
	opacity: 0.8;
}

.tc-thumbnail-background {
	position: absolute;
	border-radius: 3px;
}

.tc-thumbnail-icon svg,
.tc-thumbnail-icon img {
	width: 3em;
	height: 3em;
	<<filter "drop-shadow(2px 2px 4px rgba(0,0,0,0.3))">>
}

.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {
	fill: #fff;
	<<filter "drop-shadow(3px 3px 4px rgba(0,0,0,0.6))">>
}

.tc-thumbnail-icon {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	display: -webkit-flex;
	-webkit-align-items: center;
	-webkit-justify-content: center;
	display: flex;
	align-items: center;
	justify-content: center;
}

.tc-thumbnail-caption {
	position: absolute;
	background-color: #777;
	color: #fff;
	text-align: center;
	bottom: 0;
	width: 100%;
	filter: alpha(opacity=0.9);
	opacity: 0.9;
	line-height: 1.4;
	border-bottom-left-radius: 3px;
	border-bottom-right-radius: 3px;
}

.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {
	filter: alpha(opacity=1);
	opacity: 1;
}

/*
** Diffs
*/

.tc-diff-equal {
	background-color: <<colour diff-equal-background>>;
	color: <<colour diff-equal-foreground>>;
}

.tc-diff-insert {
	background-color: <<colour diff-insert-background>>;
	color: <<colour diff-insert-foreground>>;
}

.tc-diff-delete {
	background-color: <<colour diff-delete-background>>;
	color: <<colour diff-delete-foreground>>;
}

.tc-diff-invisible {
	background-color: <<colour diff-invisible-background>>;
	color: <<colour diff-invisible-foreground>>;
}

.tc-diff-tiddlers th {
	text-align: right;
	background: <<colour background>>;
	font-weight: normal;
	font-style: italic;
}

.tc-diff-tiddlers pre {
    margin: 0;
    padding: 0;
    border: none;
    background: none;
}

/*
** Errors
*/

.tc-error {
	background: #f00;
	color: #fff;
}

/*
** Tree macro
*/

.tc-tree div {
    	padding-left: 14px;
}

.tc-tree ol {
    	list-style-type: none;
    	padding-left: 0;
    	margin-top: 0;
}

.tc-tree ol ol {
    	padding-left: 1em;    
}

.tc-tree button { 
    	color: #acacac;
}

.tc-tree svg {
     	fill: #acacac;
}

.tc-tree span svg {
    	width: 1em;
    	height: 1em;
    	vertical-align: baseline;
}

.tc-tree li span {
    	color: lightgray;
}

select {
        color: <<colour select-tag-foreground>>;
        background: <<colour select-tag-background>>;
}

/*
** Utility classes for SVG icons
*/

.tc-fill-background {
	fill: <<colour background>>;
}

/*
** Flexbox utility classes
*/

.tc-flex {
	display: -webkit-flex;
	display: flex;
}

.tc-flex-column {
	flex-direction: column;
}

.tc-flex-row {
	flex-direction: row;
}

.tc-flex-grow-1 {
	flex-grow: 1;
}

.tc-flex-grow-2 {
	flex-grow: 2;
}

/*
** Other utility classes
*/

.tc-small-gap {
	margin-left: .5em;
	margin-right: .5em;
}

.tc-small-gap-left {
	margin-left: .5em;
}

.tc-small-gap-right {
	margin-right: .5em;
}

.tc-big-gap {
	margin-left: 1em;
	margin-right: 1em;
}

.tc-big-gap-left {
	margin-left: 1em;
}

.tc-big-gap-right {
	margin-right: 1em;
}

.tc-word-break {
	word-break: break-all;
}
14px
20px
14px
20px
500px
0px
650px
0px
600px
600px
fluid-fixed
yes
Bitter, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"
{
    "20211018144046872": "Roeien",
    "20211018144116900": "Egmond schilderwerk afmaken",
    "20211018144142913": "Egmond dennenaalden en gras opruimen",
    "20211018144155915": "Egmond vogelhuisje schoonmaken",
    "20211018144205899": "Mirjam bellen",
    "20211018144245916": "10 blz Kruispunt",
    "20211018145219902": "Planning: lijstje maken"
}
{}
{
    "20211018144046872": "limegreen",
    "20211018144116900": "limegreen",
    "20211018144142913": "limegreen",
    "20211018144155915": "limegreen",
    "20211018144205899": "limegreen",
    "20211018144245916": "limegreen",
    "20211018145219902": "none"
}
{
    "itemtext": "",
    "option": "yes",
    "markall": "no",
    "timestamp": "show"
}
{}
{}
{}
{
    "20210810132559140": "limegreen"
}
{
    "itemtext": "",
    "option": "no",
    "timestamp": "show",
    "editview": "view"
}
{
    "20210810132559140": "undone"
}
{
    "20210810132559140": "Adviseur: Alma mailen"
}
{
    "20210820202430740": "none",
    "20210820202504703": "none"
}
{
    "itemtext": ""
}
{
    "20210820202430740": "undone",
    "20210820202504703": "undone"
}
{
    "20210820202430740": "Noord4Us: kadaster",
    "20210820202504703": "SVAN: opheffen"
}
{
    "20210814090207645": "Papieren zakdoekjes",
    "20210814080108254": "becel boter",
    "20210814080059235": "hagel extra puur 65%",
    "20210821072809795": "Brood: 2 desem zonnepit gesneden",
    "20210821072718625": "Markt: ongebrande noten",
    "20210821072654180": "Citroenen",
    "20210821072636616": "10 scharreleieren",
    "20210821072611773": "4 blikken gepelde tomaten",
    "20210814080038515": "karnemelk",
    "20210824082634772": "Gemberwortel",
    "20210824062840756": "Brinta",
    "20210814080030005": "hv melk",
    "20210903062510648": "Walnoten",
    "20210824062826148": "Beschuit",
    "20210826051128974": "Hagelslag"
}
{
    "20210814080030005": "none",
    "20210814080038515": "none",
    "20210814080059235": "none",
    "20210814080108254": "none",
    "20210814090207645": "none",
    "20210821072611773": "none",
    "20210821072636616": "none",
    "20210821072654180": "none",
    "20210821072718625": "none",
    "20210821072809795": "none",
    "20210824062826148": "none",
    "20210824062840756": "none",
    "20210824082634772": "none",
    "20210826051128974": "none",
    "20210903062510648": "none"
}
{
    "itemtext": "",
    "editview": "view",
    "option": "no"
}
{
    "20210814080030005": "done",
    "20210814080038515": "done",
    "20210814080059235": "done",
    "20210814080108254": "done",
    "20210814090207645": "done",
    "20210821072611773": "done",
    "20210821072636616": "done",
    "20210821072654180": "done",
    "20210821072718625": "done",
    "20210821072809795": "done",
    "20210824062826148": "done",
    "20210824062840756": "done",
    "20210824082634772": "done",
    "20210826051128974": "done",
    "20210903062510648": "done"
}
{}
{
    "20210820204817748": "Zijkant verven",
    "20210820204833753": "Vlonder in lijnzaadolie"
}
{
    "20210820204817748": "none",
    "20210820204833753": "none"
}
{
    "itemtext": ""
}
{
    "20210820204817748": "done",
    "20210820204833753": "done"
}
{}
{
    "20211121213132166": "Afspraak met Hans Werner",
    "20211121213201207": "Sem vragen naar lidmaatschap bestuur",
    "20211110030109992": "Jaargesprekken",
    "20211121213143168": "Nieuwe afspraak met Mirjam",
    "20211201062249202": "Weekbrief: Hans Werner",
    "20211201062316186": "Weekbrief: Bestuursvergadering",
    "20211201085529676": "ALV verslag:  opm. maar Marga",
    "20211214095627053": "Cadeau Charlie: Jos"
}
{
    "20211122055510483": "Afspraak nieuwe bestuursvergadering",
    "20211201085649679": "Planning ledenraadpleging",
    "20211121125942309": "Bericht Coen Zuidema taken commissie"
}
{
    "20211110030109992": "none",
    "20211121125942309": "none",
    "20211121213132166": "none",
    "20211121213143168": "none",
    "20211121213201207": "none",
    "20211122055510483": "none",
    "20211201062249202": "red",
    "20211201062316186": "red",
    "20211201085529676": "none",
    "20211201085649679": "none",
    "20211214095627053": "none"
}
{
    "itemtext": "",
    "option": "yes",
    "markall": "no",
    "editview": "view"
}
{
    "20211121125942309": "done",
    "20211122055510483": "done",
    "20211201085649679": "done"
}
{}
{
    "20210816054525350": "Studeren: [[Gombrich|1682 Kozbelt 2008 Gombrich on Creativity Creat Res J 20 1 93 104]]",
    "20210816131410556": "Sportief: lopen langs het strand",
    "20210816131424503": "Klussen: Boodschappen",
    "20210816131438525": "Klussen: doorgang maken",
    "20210816131556561": "Studeren: [[Heemstra - Lichtjaren]]",
    "20210816183710501": "Lezen: September 5%",
    "20210817040321940": "Klussen: Naar Amsterdam",
    "20210816183725522": "Reflectie: Dagboekfragmenten",
    "20210817094801876": "Klussen: Naar Egmond",
    "20210817094841857": "Studeren: [[Heemstra - Lichtjaren]]",
    "20210817094924842": "Studeren: [[Heemstra - Lichtjaren]]",
    "20210817184634234": "Sociaal: Mercia en Franca",
    "20210817184657204": "Klussen: beerput legen",
    "20210818031003787": "Reflectie: dagboek",
    "20210818193719143": "Sociaal: Franca en Mercia logeren",
    "20210818193751491": "Klussen: Naar Amsterdam",
    "20210819212548046": "Sportief: Lopen langs het strand",
    "20210819212621170": "Sociaal: Barty en Kees",
    "20210819212659268": "Bestuur: Mail Joeny beantwoorden",
    "20210818200554917": "Bestuur: Bezoek Hacar regelen",
    "20210820114252166": "Studeren: Heemstra 16 17",
    "20210820114326111": "Sportief: Lopen langs het strand",
    "20210820184247740": "Reflectie: Dagboekfragmenten",
    "20210820184318334": "Klussen: Put bekijken en dichtgooien",
    "20210820184352822": "Studeren: Heemstra rest",
    "20210820210412224": "Klussen: Planning reorganiseren",
    "20210821061341906": "Sportief: Roeien",
    "20210821103802970": "Sportief: Lopen",
    "20210821103817603": "Klussen: Boodschappen",
    "20210821103833579": "Sociaal: Marie Jeanne",
    "20210821230508698": "Klussen: helpen met koken",
    "20210821230519751": "Sociaal: leesclub",
    "20210821230532646": "Klussen: afwassen en opruimen",
    "20210821230624794": "Bestuur: rekening SVAN opheffen",
    "20210821230639799": "Bestuur: Ekklesia betalen",
    "20210822143226081": "Klussen: TW op Github",
    "20210822143247092": "Sociaal: Nieuwe buren",
    "20210822224515779": "Cultuur: Zomergasten",
    "20210813041914728": "Docent: Beyond cursus",
    "20210818200630744": "Sociaal: Kampvuurverhaal",
    "20210823052000933": "Sportief: roeien",
    "20210823093139974": "Klussen: Afval afvoeren",
    "20210823093148778": "Klussen: Gras maaien",
    "20210823093158437": "Bestuur: Zoom Ekklesiabestuur",
    "20210823202316084": "Adviseur: cobex voorbereiden",
    "20210824130541996": "Adviseur: gastvrijheid VU",
    "20210824211307224": "Adviseur: COBEX zittingen",
    "20210824211346657": "Docent: Bijeenkomst over Beyond cursus",
    "20210824211401339": "Sportief: Lopen",
    "20210824211417580": "Klussen: Boodschappen",
    "20210825054244540": "Sportief: roeien",
    "20210825100042980": "Klussen: Naar Rotterdam",
    "20210825100113213": "Sociaal: Harry naar Rotterdam brengen",
    "20210825100142517": "Klussen: erfpacht",
    "20210826203424450": "Sociaal: op Ada en Els passen",
    "20210826203439364": "Sociaal: bij Gerrie eten",
    "20210826203453565": "Sociaal: God en wij",
    "20210826203528521": "Klussen: Ada en Els halen en brengen",
    "20210827074316772": "Adviseur: COBEX voorbereiden",
    "20210827084255707": "Klussen: boeken ophalen",
    "20210827084313214": "Klussen: reserveren bij bar boeket",
    "20210827084338909": "Klussen: gedaan bijwerken",
    "20210827163453057": "Adviseur: [[Review Edurev 2021 498]]",
    "20210827163542817": "Klussen: Passenger Locator Forms",
    "20210827034208957": "Cultuur: Normal People",
    "20210827034311443": "Sportief: Roeien",
    "20210828035510958": "Sociaal: Kampvuurverhaal",
    "20210828035531942": "Sociaal: Van Remmen feest",
    "20210828035554977": "Klussen: Naar Deventer rijden",
    "20210830201823237": "Klussen: naar Bussum",
    "20210830201840237": "Bestuur: heidag Ekklesia",
    "20210830201857238": "Adviseur: COBEX",
    "20210830202010211": "Klussen: Icon Buttons",
    "20210831085820204": "Klussen: auto door wasstraat",
    "20210831085846241": "Sportief: roeien",
    "20210831123020789": "Adviseur: review Edurev",
    "20210831215335913": "Sociaal: Berend eten",
    "20210901085604943": "Adviseur: voorstellen voor Sui",
    "20210901133149779": "Adviseur: reviews",
    "20210901133209320": "Adviseur: Ghoudan",
    "20210901133237076": "Klussen: stofzuigen",
    "20210901133246054": "Klussen: moppen",
    "20210902070021796": "Klussen: medicijnen ophalen",
    "20210902073855843": "Klussen: darmonderzoek",
    "20210902110615604": "Klussen: stoel plakken",
    "20210825100156980": "Klussen: bureau opruimen",
    "20210825102534371": "Sociaal: brief Gerard van den Boomen",
    "20210901093725199": "Klussen: kaarten",
    "20210902110600884": "Klussen: rolgordijn ophangen",
    "20210902203618496": "Klussen: doppen kopen",
    "20210902203637799": "Klussen: borstels voor de tanden kopen",
    "20210903062531653": "Klussen: boodschappen",
    "20210909061958529": "Mail naar Stokwielder",
    "20210909062014505": "Mail naar Vicenza",
    "20210909062029532": "Mail naar Loretello",
    "20210909062041531": "Vijgen plukken",
    "20210909183953844": "Dagboek",
    "20210909184003497": "Mail naar Livia",
    "20210911054018539": "Noodnummers",
    "20210911054033540": "Wat te doen bij Iekke band",
    "20210911054145540": "Naar Loretello",
    "20210927192725169": "Foto´s 4 september",
    "20210927192811169": "Foto´s 5 september",
    "20210927194255129": "Foto's 7 september",
    "20210927194335167": "Foto's 6 september",
    "20210927194823171": "Foto's 8 september",
    "20210927200612174": "Foto's 9 september",
    "20210927200756174": "Foto's 10 september",
    "20210927201841170": "Foto's 11 september"
}
{}
{
    "20210813041914728": "dodgerblue",
    "20210816054525350": "none",
    "20210816131410556": "none",
    "20210816131424503": "none",
    "20210816131438525": "none",
    "20210816131556561": "limegreen",
    "20210816183710501": "none",
    "20210816183725522": "none",
    "20210817040321940": "none",
    "20210817094801876": "none",
    "20210817094841857": "none",
    "20210817094924842": "none",
    "20210817184634234": "none",
    "20210817184657204": "none",
    "20210818031003787": "none",
    "20210818193719143": "none",
    "20210818193751491": "none",
    "20210818200554917": "none",
    "20210818200630744": "none",
    "20210819212548046": "none",
    "20210819212621170": "none",
    "20210819212659268": "none",
    "20210820114252166": "none",
    "20210820114326111": "none",
    "20210820184247740": "none",
    "20210820184318334": "none",
    "20210820184352822": "none",
    "20210820210412224": "none",
    "20210821061341906": "none",
    "20210821103802970": "none",
    "20210821103817603": "none",
    "20210821103833579": "none",
    "20210821230508698": "none",
    "20210821230519751": "none",
    "20210821230532646": "none",
    "20210821230624794": "none",
    "20210821230639799": "none",
    "20210822143226081": "none",
    "20210822143247092": "none",
    "20210822224515779": "none",
    "20210823052000933": "none",
    "20210823093139974": "none",
    "20210823093148778": "none",
    "20210823093158437": "none",
    "20210823202316084": "none",
    "20210824130541996": "none",
    "20210824211307224": "none",
    "20210824211346657": "none",
    "20210824211401339": "none",
    "20210824211417580": "none",
    "20210825054244540": "none",
    "20210825100042980": "none",
    "20210825100113213": "none",
    "20210825100142517": "none",
    "20210825100156980": "none",
    "20210825102534371": "none",
    "20210826203424450": "none",
    "20210826203439364": "none",
    "20210826203453565": "none",
    "20210826203528521": "none",
    "20210827074316772": "none",
    "20210827084255707": "none",
    "20210827084313214": "none",
    "20210827084338909": "none",
    "20210827163453057": "none",
    "20210827163542817": "none",
    "20210828034208957": "none",
    "20210828034311443": "none",
    "20210828035510958": "none",
    "20210828035531942": "none",
    "20210828035554977": "none",
    "20210830201823237": "none",
    "20210830201840237": "none",
    "20210830201857238": "none",
    "20210830202010211": "none",
    "20210831085820204": "none",
    "20210831085846241": "none",
    "20210831123020789": "none",
    "20210831215335913": "none",
    "20210901085604943": "none",
    "20210901093725199": "none",
    "20210901133149779": "none",
    "20210901133209320": "none",
    "20210901133237076": "none",
    "20210901133246054": "none",
    "20210902070021796": "none",
    "20210902073855843": "none",
    "20210902110600884": "none",
    "20210902110615604": "none",
    "20210902203618496": "none",
    "20210902203637799": "none",
    "20210903062531653": "none",
    "20210909061958529": "none",
    "20210909062014505": "none",
    "20210909062029532": "none",
    "20210909062041531": "none",
    "20210909183953844": "none",
    "20210909184003497": "none",
    "20210911054018539": "none",
    "20210911054033540": "none",
    "20210911054145540": "none",
    "20210927192725169": "none",
    "20210927192811169": "none",
    "20210927194255129": "none",
    "20210927194335167": "none",
    "20210927194823171": "none",
    "20210927200612174": "none",
    "20210927200756174": "none",
    "20210927201841170": "none"
}
{
    "itemtext": "",
    "option": "yes",
    "timestamp": "hide",
    "markall": "no",
    "editview": "view"
}
{}
{}
{
    "option": "no"
}
notesjjb
https://notesjjb.tiddlyhost.com
yes
.matched{background-color:yellow; color:#282a36}
.tw-context {
  border:1px solid blue;
  word-break: break-all; word-wrap: break-word; background-color:#282a36}
[[0048 Scardamalia Bereiter 2003 Knowledge Building|https://u.pcloud.link/publink/show?code=XZQwFCXZrNwFPEoX23ysW3S0cF5zMRsq1CMV]]

"""
Mensen moeten creatief met kennis leren omgaan. Vanuit de natuurlijke nieuwsgierigheid van het kind moet je dat ontwikkelen. Hoe doe je dat?
1. Basiskennis aanbrengen. Gevolg: kennisontwikkeling vindt pas tijdens volwassenheid plaats.
2. Basisvaardigheden aanbrengen, zoals kritisch denken en samenwerken. Later samenvoegen. Zelfde probleem.
3. Learning communities: shallow constructivism.

Alternatief: knowledge building: production and continual improvement of ideas of value to a community through means that increase the likelihood that what the community accomplishes will be greater than the sum of individual contributions and part of broader cultural efforts. Niet beperken tot onderwijs. Kinderen er vroeg bij betrekken.

Leren is een intern, onwaarneembaar proces en leidt tot veranderingen in belief, attitude, or skill. Knowledge building leidt tot het scheppen of veranderen van publieke kennis.
Leren als doel van knowledge building omvat (1), (2) en (3) (zie boven). Het gaat om het verleggen van de grenzen van kennis (advancing the frontiers of knowledge) as the knowledge builder perceive them. Het bepalen van de grenzen is deel van het onderzoek. Het sleutel onderscheid tussen leren en kennis ontwikkelen is de bewuste poging om het culturele kapitaal van de samenleving te vergroten.

Shallow constructivism: activities in which ideas have no overt presence. Leerlingen zijn zich niet bewust van de onderliggende principes. Deep: people are advancing the frontiers of knowledge in their community.
Ideas are treated as real things. Dus communiceren met de omgeving.

Je hebt een gedeelde werkruimte voor kennis building nodig, anders moeten anderen dat organiseren: faciliteiten voor kennisopbouw en nemen van sociale verantwoordelijkheid voor groepswerk.

Matthew effect van veel kennis aanbrengen: de kloof wordt groter. Ook belangrijk (Dewey): Leren moet betekenisvol zijn. Wij willen meer: advances in understanding produce conceptual tools to achieve further advances in understanding. Life long learning.
P000056 Shulman & Shering Fostering communities of teachers als learners: disciplinary perspectives 
 
Teaching en learning-to-teach zien in discipline-specifieke perspectieven. Wat de docent weet, daar gaat het om.  
Constructivist, learner-centered, oriented toward the development of higher-order understanding and skills, collaborative efforts by students in learning communities through distributing their expertise, complex authentic tasks. 
searching for the ‘ big ideas ’ ; 
the analytic challenge: when is a disciplinary topic ‘ jigsawable ’ ?; 
curricular habits and their impact on pedagogical changes; and 
the challenges of implementation in a community of learners. 
[[https://www.dropbox.com/s/4g7rvswlq001oll/P000066%20Syllabus%20Onderwijspsychologie.docx?dl=0]]
"""
Collins, A., Brown, J. S., & Newman, S. E. (1987). Cognitive apprenticeship: Teaching the craft of reading, writing and mathematics (Technical Report No. 403). BBN Laboratories, Cambridge, MA. Centre for the Study of Reading, University of Illinois. January, 1987
Collins, Brown, and Newman developed six teaching methods rooted in cognitive apprenticeship theory and claim these methods help students attain cognitive and metacognitive strategies for "using, managing, and discovering knowledge".[2] The first three (modeling, coaching, scaffolding) are at the core of cognitive apprenticeship and help with cognitive and metacognitive development. The next two (articulation and reflection) are designed to help novices with awareness of problem-solving strategies and execution similar to that of an expert. The final step (exploration) intends to guide the novice towards independence and the ability to solve and identify problems within the domain on their own. The authors note, however, that this is not an exhaustive list of methods and that the successful execution of these methods is highly dependent on the domain.[1]
Modeling
Coaching
Scaffolding
Articulation
Reflection
Exploration
P000089 Brown Palincsar 1987 Reciprocal teaching comprehension strategies JDDay JG Borkowski Intelligence and exceptionality 81 132 Ablex.pdf 
 
Brown, A.L. & Palincsar, A.S. (1987). Reciprocal teaching of comprehension skills: a natural history of one program for enhancing learning. In J.D. Day & J.G. Borkowski (Eds.), Intelligence and exceptionality: New directions for theory, assessment, and instructional practices. (pp. 81 - 132). Norwood, N.J.: Ablex.  
 
Brown en Palincsar (1987) ontwierpen een cursus begrijpend lezen voor leerlingen van 12 jaar, die de basisvaardigheid van het technisch lezen goed beheersten maar twee jaar achter lagen op een toets voor begrijpend lezen. De training was gericht op het verwerven van vier vaardigheden: het geven van een samenvatting van een tekstgedeelte, het bedenken van vragen over een tekstgedeelte, het voorspellen van de inhoud van een paragraaf die volgde op het juist gelezen gedeelte en het ophelderen van onduidelijkheden in een tekstgedeelte. Tijdens het eerste deel van de cursus demonstreerde de docent de beoogde vaardigheden in groepjes van twee tot zeven leerlingen. Tijdens het tweede deel voerden de docent en de leerlingen de strategieën om beurten uit terwijl ze commentaar gaven op elkaars aanpak. Tijdens het derde deel gingen de leerlingen zelfstandig aan de slag en deed de docent nog slechts als adviseur aan de training mee. De trainingsmethode leidde tot substantiële en stabiele verbeteringen in het toepassen van de geleerde strategieën en ook in tastbare vooruitgang in prestatie op een standaard toets begrijpend lezen.
"""
Spiro, R.J., Vispoel, W.P., Schmitz, J.G., Samarapungavan, A., &  Boerger, A.E. (1987). Knowledge acquisition for application: cognitive flexibility and transfer in complex content domains. In B.C. Britton (Ed.), Executive control processes (pp. 177-198). Hillsdale, NJ: Erlbaum. 
 
Kennisverwerving in slecht-gestructureerde domeinen, waarin geen regels of principes geformuleerd kunnen worden die algemeen genoeg zijn om de meeste gevallen te dekken, verloopt anders dan in goed-gestructureerde domeinen. 
Vier bezwaren tegen schematheorie: (1) Schema's zijn rigide en niet geschikt voor aanpassing. (2) Weinig interconnecties tussen de schema's. (3) Kennis wordt kunstmatig opgeschoond. (4) Kennisdomein wordt als te regelmatig opgevat. Allemaal simplificaties. Onze opvatting: 
(1) In plaats van rigide schema's: flexibele, doelgevoelige situatie-schema's. Schema's worden samengesteld op het moment van gebruik: mobilisatie van potentiële kennis. 
(2) Streven naar veel interconnecties. Daardoor: (1) situatie-specifieke categorisering, (2) veel toegangsroutes, (3) reservoir aan potentiële analogieën. 
(3) Bij onderwijs nadruk leggen op complexiteit. Cases in hun natuurlijke context bestudeerd, niet gestript. 
(4) Niet de indruk wekken dat het domein goed gestructureerd is 
Aanpak: Veel cases presenteren: eerst decomponeren en representeren volgens vele, gedeeltelijk overlappende, dimensies; daarna veel connecties leggen tussen de aspecten van de cases. Een slecht-gestructureerd domein is als een landschap (term van Wittgenstein) dat vanuit verschillende richtingen verkend moet worden door van de ene casus naar de andere te reizen ("criss-crossing"). Niet beperken tot één bepaalde richting! Streven naar niet-lineaire en multidimensionele teksten. 
Empirisch onderzoek: recall test en zes transfertests: 1 en 2: 2 nieuwe teksten over nieuw onderwerp in zelfde domein: begrip testen. 3: begrip van nieuwe teksten die relatie leggen tussen 3 casus in de tekst. 4: essay over onderwerp. 5: remote associations test, zoeken naar betekenisvolle connecties tussen paren van begrippen. 6: beschrijving van symbool, icon, gerelateerd aan onderwer (20ste eeuw). 
Hoe zet je casus in volgorde? Aanvankelijk het onderwerp niet te ongestructureerd presenteren. Partial Overlap Index: overlap in thematische kenmerken tussen elk paar van opeenvolgende casus bekijken. Moet steeds halverwege minimum en maximum zijn. Vervolgens op hoger niveau overlap tussen relaties bekijken. Ook de voorkeur aan intermediate values. Het beste: een cyclische afwisseling van abstraction-centered presentaties en case-centered presentaties. Plaatjes kunnen de multidimensionele complexiteit in casus goed representeren, leggen de familieverwantschappen tussen de casus bloot! 
Kuhn (1989) stated that the ability to co-ordinate theory and evidence is essential to scientific reasoning. First, a learner has to be able to distinguish between theory and evidence. Secondly, a learner has to be able to understand what the implications are of a particular piece of evidence for the tenability of a theory or hypothesis.
"""
P000789 Brown en Campione - Psychological theory and the design of innovative learning environments 
Brown, A. L., & Campione, J. C. (1996). Psychological theory and the design of innovative learning environments: On procedures, principles, and systems. In L. Schauble & R. Glaser (Eds.), Innovation in learning: New environments for education (pp. 289-325). Mahwah, NJ: Lawrence Erlbaum Associates, Inc. 
 
Brown and Campione (1996) 
 
 
Onderzoek. Een concrete gebeurtenis vormt het vertrekpunt voor een onderzoeksproject. Denk aan een film of video waarin een probleem zo duidelijk aan de orde wordt gesteld dat de leerlingen begrijpen dat er een serieus of spannend probleem opgelost moet worden. In een documentaire wordt bijvoorbeeld ingegaan op de oorzaken en de consequenties van overgewicht. De probleemstelling moet helder maken wat het kernbegrip of big idea is dat achter het probleem zit. Een big idea heeft een centrale plaats in een vakgebied en is terug te vinden in de stof die deel uitmaakt van het curriculum dat voorbereidt op het eindexamen. Het is belangrijk dat leerlingen begrijpen wat de relatie tussen het onderzoeksproject en het curriculum is. Belangrijk omdat niet alleen de intrinsieke motivatie gewekt moet worden (belangstelling voor het onderwerp) maar ook de extrinsieke motivatie. Leerlingen moeten inzien dat actieve deelname aan het onderzoeksproject een zinvolle bijdrage vormt aan de voorbereiding op het eindexamen. 
De klas bespreekt de probleemstelling en de onderzoeksvragen die docent en onderzoekers van tevoren hebben geprepareerd (Brown, 1997). Dit proces kost veel aandacht en tijd. Rico en Shulman (2004) noemden een periode van drie dagen om een en ander uit te zoeken.  De onderzoeksvragen worden in een tweedimensionale matrix in verband gebracht met een reeks overbruggende algemene thema’s die samen licht werpen op het big idea. Deze matrix is belangrijk en moet door de leerlingen goed worden begrepen. Zonder dit begrip is de fase van uitwisselen van resultaten niet goed te realiseren.  De leerlingen stellen onderzoeksgroepen samen. Binnen elke groep worden de thema’s over de leerlingen verdeeld. Vanuit elke onderzoeksgroep neemt een leerling deel aan de themagroep waarin het thema wordt besproken dat de leerling gekozen heeft.  
De klas gaat in kleine onderzoeksgroepen aan de slag met de onderzoeksvragen. Het onderzoek wordt uitgevoerd volgens de methoden voor wetenschappelijk onderzoek, waarbij replicatie en het uitsluiten van alternatieve verklaringen een belangrijke rol spelen. De onderzoeksopzet moet van tevoren goed in de groep worden doordacht en getoetst aan beide criteria. De onderzoeksopzet wordt besproken met docent en onderzoeker die er beiden feedback op geven. De groep voert het onderzoek uit en trekt gezamenlijk conclusies. Soms is het nodig eerst een pilotonderzoek te doen om de onderzoeksvragen te verduidelijken.  
 
"""
Mayer, R. (2004). Teaching of subject matter. Annual Review of Psychology, 55, 715-744. 
 
Abstract Psychology of subject matter refers to the scientific study of learning and instruction within school subjects. The growing research literature on teaching and learning of school subjects represents one of educational psychology's most productive accomplishments of the past two decades. The purpose of this chapter is to examine representative advances in the psychology of subject matter, including how people learn to read words, comprehend printed passages, write compositions, solve arithmetic word problems, and understand how scientific systems work. The introduction provides a historical overview of how to promote transfer and is followed by reviews of representative research in learning and teaching of reading fluency, reading comprehension, writing, mathematics, and science 
 
 Mayer, R. (2004). Teaching of subject matter. Annual Review of Psychology, 55, 715-744. 
 
Abstract Psychology of subject matter refers to the scientific study of learning and instruction within school subjects. The growing research literature on teaching and learning of school subjects represents one of educational psychology's most productive accomplishments of the past two decades. The purpose of this chapter is to examine representative advances in the psychology of subject matter, including how people learn to read words, comprehend printed passages, write compositions, solve arithmetic word problems, and understand how scientific systems work. The introduction provides a historical overview of how to promote transfer and is followed by reviews of representative research in learning and teaching of reading fluency, reading comprehension, writing, mathematics, and science 
 
 
Introduction 
Wet onderzoek naar leren en instructie in schollvakken 
Three Views of How to Promote Transfer 
Het geleerde toepassen in nieuwe situaties 
General transfer 
Doctrine of formal discipline 
Latijn, logica: zuiver denken 
Specific transfer 
Thorndike: transfer of identical elements 
Singley en Anderson (1989): productions als identieke elementen 
Low road transfer 
Specific transfer of general knowledge 
Regels toepassen 
High road transfer 
Leerdriehoek 
Teaching Reading Fluency 
Componenten 
Bewustwording van spraakklanken 
Decoderen van woorden 
Toegang krijgen tot woordbetekenissen 
Teaching of Reading Comprehension 
Componenten 
Gebruik van voorkennis 
Gebruik van prozastructuur 
Maken van inferenties 
Gebruik van metacognitieve kennis 
Teaching of Writing 
Componenten 
Plannen 
Uitschrijven 
Reviseren 
Teaching of Mathematics 
Componenten 
Translating: Representatie maken 
Integrating: Uitwerken van de representatie 
Planning en Monitoring: Ontwerpen van een oplossingsplan 
Uitvoeren: uitvoeren van het oplossingsplan 
Teaching of Science 
Componenten 
Herkennen van een anomalie 
Creëren van een nieuw model 
Gebruiken van het nieuwe model 

<tblauw>Witte Donderdag 2021, zonnig, 13°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{Sociaal: Bericht naar Rob Uittenbosch||cl}}
"""

|^10:40 |Vier jaar geleden in Florence met rondleiding Arjan, 20°, nu Noord en fris maar wel zonnig. Altijd kiezen, kiezen voor de opgewekte aanpak. Te moeilijk. |
|^10:43 |Nu even mooie muziek voor Witte Donderdag. Misschien James Pollard. |
|^10:48 |Dat gaat niet, dan Haydn Sieben Letzte Worte Unseres Erlösers am Kreuze|
|^10:54 |Nu belastingaangfite afmaken. |
|^11:20 |OK klaar.  Nu even koffie en bureau opruimen. |
|^11:45 |Eerst even inhoud: Turfs|
|^16:58|Nu mail naar Rob|
|^17:07|Nog even de vu mails opruimen, vanavond de gmails.|
<tblauw>zondag, regen maar ook zon, 20°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='b' checked=1></$checkbox>|~KoffieLink Ekklesia|
|^<$checkbox field='c' checked=1></$checkbox>|Podcast: Laatste tekstwijzigingen|
|^<$checkbox field='d' checked=1></$checkbox>|Podcast: Fragmenten opnemen|
|^<$checkbox field='e' checked=1></$checkbox>|Podcast: Instructie naar Mirjam|
|^<$checkbox field='f' checked=1></$checkbox>|Podcast: Fragmenten versturen|

|^11:48|Dat was roeien, ontbijt, koffielink. Nu laatste tekstwijzigingen podcast. Lied van Job lezen|
|^11:54|Gedoe met opslaan. Nu nog even iets aan Kalender veranderen|
|^12:00|Gelukt. Nu Lied van Job|
|^12:03|Daar staan wel mooie regels in:<br>"Ga ik denken, dan vind ik geen rede, geen recht."<br> "Die zich heeft verbonden om wat te doen?<br>Zich hult in zwijgen als mensen sterven?"|
|^12:56|OK, de tekst is definitief! Kunnen we de liedjes downloaden?|
||^<$checkbox field='g' checked=1></$checkbox> Herschep ons hart|
||^<$checkbox field='h' checked=1></$checkbox> Gottes Zeit|
||^<$checkbox field='i' checked=1></$checkbox> Jij bent de god|
||^<$checkbox field='j' checked=1></$checkbox> Vriend|
||^<$checkbox field='k' checked=1></$checkbox> Candide|
|^15:56|https://u.pcloud.link/publink/show?code=0ZwCdxXZWXVcibw3YDun2vpd8vnH5BOOm7LX|
|^19:25|Nu proberen om de volgende dingen te doen:<br>1. Proberen het geheel af te luistere, zonodig bestand voor bestand.<br>2. Bestanden versturen naar Tineke Teunen<br>3. Instructie naar Tineke en Mirjam|
|^23:47|Prachtige zomergasten avond met kinderpsychiater Robert Vermeiren. Nu nog dagboek|
<tblauw>woensdag 2021, regen, buien, wind, 10°</tblauw> 

|customTable|k
|^ <$checkbox field='72844' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='72900' checked=1></$checkbox>|<<bes "Promotie voorzitten">>|
|^ <$checkbox field='72928' checked=1></$checkbox>|<<bes "Stukjes Weekbrief">>|
|^ <$checkbox field='171330' checked=1></$checkbox>|<<klu "Boodschappen">>|
|^ <$checkbox field='171344' checked=1></$checkbox>|<<lez "Crossroads">>|

|^07:00|Zo dadelijk even roeien. Van belang om terug te blikken op bezoek aan Huub gisteren en op vergadering bestuur en team. Hoe doen we dat. Hier een kaart maken met als titel "Let op Ekklesia" met een mix van aandachtspunten en dingen om te doen. In de plaats van de huidige todo lijst.|
|^07:31|Nu roeien|
|^10:05|Affiliatie Booden, naar de VU voor  promotie Karkdijk|
|^17:14|Promotie ging goed, boodschappen gedaan, nap, 20 blz. Crossroads gelezen. Nu twee stukjes Weekbrief. Eerst stukje over Hans Werner. Bestaand stukje copiëren en inkorten.|
|^17:35|Dat ging snel. Nu het verslag lezen en aantekeningen maken.|
<tblauw>zaterdag Nieuwjaarsdag 2022, zonnige perioden, 12 - 15°</tblauw> 

|customTable|k
|^ <$checkbox field='111818' checked=1></$checkbox>|<<lez "Bas Heijne">>|
|^ <$checkbox field='111837' checked=1></$checkbox>|<<lez "De Kom">>|
|^ <$checkbox field='111851' checked=1></$checkbox>|<<stu "Consolation">>|
|^ <$checkbox field='111904' checked=1></$checkbox>|<<stu "Maandbrief">>|
|^ <$checkbox field='114917' checked=1></$checkbox>|<<spo "stadswandeling">>|
|^ <$checkbox field='115047' checked=1></$checkbox>|<<soc "Nieuwjaarswensen">>|

|^11:16|Bas Heijne lezen. Daarna De Kom. Daarna Ignatieff. Daarna Maandbrief. |
|^11:49|Nu eerst stadswandeling|
|^15:07|Mooie stadswandeling. Nu De Kom|

<tblauw>donderdag 2021, bewolkt, miezerig, 16°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Ada en Els halen|
|^<$checkbox field='b' checked=1></$checkbox>|Oppassen op Ada en Els|
|^<$checkbox field='c' checked=1></$checkbox>|Tegentij voorbereiden|
|^<$checkbox field='d' checked=1></$checkbox>|Tegentij|
|^<$checkbox field='e' checked=1></$checkbox>|Eten bij Gerrie|

|^10:39|Even Bestuur Tegentij half uur later|
|^10:52|Tegentij voorbereiden|
|^11:00|Nu even Grok|
|^13:44|Nu even nap|
<tblauw>dinsdag 2021, heerlijk weer in Egmond, 20 - 23°</tblauw>

|^✔|^11:27|Al gelopen langs het strand, nu aan de slag|
|^✔|^11:29|Cobex: Lukken|
|^✔|^13:30|Cobex: Andere zaken|
|^✔|^14:30|Roth: Sjtetl|
|^✔|^15:00|Foto's Franca|
|^✔|^18:31|Naar Amsterdam|
|^✔|^19:30|Joke bellen|
|^✔|^20:30|Roeien|
|^✔|^21:30|Stuk Mirjam|
<tblauw>zaterdag 2021, fris met af en toe een bui, 8 - 11°</tblauw>

|^✔|^07:00|Sportief: Roeien|
|^✔|^10:00|Klussen: Kringloop|
|^✔|^10:30|Klussen: Boodschappen|
|^|^|Kranten|
|^✔|^13:10|Naar Deventer|
|^✔|^16:00|Sociaal|
|^|^17:11|Studeren: Sacks|
|^&#x2714;|^17:42 |Sociaal|
|^✔|^23:00|Lezen: Radetzkymars H XIII|
<tblauw>vrijdag 2021, ochtendrood, meer bewolking, later regen, 16°</tblauw>

|^07:16|Opstaan! Roeien|
|^15:57|Cobex: bron van de tekst localiseren?|
|^18:39|Afwassen en naar het koor|
|^23:56|Geslaagde koorrepetitie en borrel bij De Kannibaal|
<tblauw>woensdag 2021, bewolkt maar droog, later wat zon, 19 - 22°</tblauw>

|^07:01|Aankleden, ontbijten, naar Mercia en Franca|
|^07:39|Ontbijten, naar Slootermeer|
|^10:55|In de Fruittuin van West|
|^14:13|Even een procent lezen en een nap|
|^15:19|De positieve tests: 2878, flink hoger dan het afgelopen weekgemiddelde. We gaan weer naar de 3000|
|^23:19|OK, nog even een sudoku en dan slapen|
1. Op 2 september 1894 geboren in Brody, Galicië. Joodse familie, overwegend Joodse omgeving. Opgevoed door moeder in het huis van grootvader, Orthodox-Joodse texielhandelaar.<br>
2. 1901: Op school in Brody. Veel belangstelling voor taal en literatuur. Vioolles.<br>
3. 1914: Studie in Wenen, germanistiek en filosofie<br>
4. 1916: Vrijwilliger aan het oostfront. Dood Franz Joseph. Niet helemaal duidelijk wat Roth heeft gedaan. Opleiding bij infanteriedivisie, oorlogscorrespondent, reizen door Galicië, veel drinken. Dood van de keizer belangrijk thema.<br>
5. 1919: Journalist in Wenen. De 25-jarige Roth krijgt aanzien als journalist. In café Herrenhof leert hij de 19-jarige Friederike Reichler ken, een beeldschone jonge vrouw. <br>

25. Spoetnik in 1957. Schrik bij de Amerikanen: achterstand? Tekort aan creativiteit? Onderzoek! Experimentele psychologie. Onderzoek:
27. Op onderwijs en praktijk gericht. Methodes om creativiteit te bevorderen. 
28. De bestaande onderwijsvormen zijn niet geschikt om creativiteit te bevorderen. Creativiteit wordt dicht in de buurt gebracht van problem solving. 
29. Doelgericht en methodisch te werk gaan vanuit een welomschreven probleemstelling.
30. In de definitie van het probleem ligt de oplossing besloten. Zola maakte eerst een uitgewerkt plan voor hij ging schrijven. 31. De dichter als ingenieur. Experimenteel creativiteitsonderzoek sluit aan bij intelligentieonderzoek. 32. Hoge intelligentie hangt niet samen met hoge creativiteit [?]. 

2: Brainstorming. Deelnemers (stuk of 10) spreken vrijuit. Kritiek op anderen is uit den boze. 33. De goede ideeën die eruit komen worden nader onderzocht. Dit lijkt wel op creativiteit, maar dan in de groep. In //synectics// probeert men van de groep een eenheid te maken. 34. 35. Je het creatieve proces in de groep niet echt waarnemen. Dan voelt men zich bekeken en gaat men acteren. Ook in een film met Picasso aan het werk wordt creativiteit niet op heterdaad betrapt (zie [[Picasso at work|https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.youtube.com/watch%3Fv%3DNxes8pyHkJc&ved=2ahUKEwjjtJShsuDxAhVR2aQKHWjFAtgQwqsBMAB6BAgkEAE&usg=AOvVaw2oeLoih1-2YUoMT78xXXaB]]). 36. Het blijft een vertoning. Bieden creativiteitstests en beter beeld van wat creativiteit is? 37. 38. 39. 40. 

3: Terugkerend kenmerk van de creatieve persoonlijkheid: non-conformisme. Elke creatieve benadering van problemen wordt gekenmerkt door verscheidenheid. de creatieve persoonlijkheid denkt op een atypische manier, hij blijft onafhankelijk, hij kent aarzelingen een positieve waarde toe en neemt geen genoegen met bestaande zekerheden. Hij probeert steeds te herstructureren. 41.  Bestaan er twee soorten van denken? Convergerend en divergerend denken? Edward de Bono: lateraal denken. Gewoon denken is doen wat van je verwacht wordt, leermeesters en autoriteiten eerbiedigen. Lateraal denken doorbreekt geijkte patronen en speelt rondom bestaande problemen. Gewoon denken graaft dieper in een kuil die er al is, lateraal denken graaft er een nieuwe kuil naast.  42. De Bono vindt dat beide vormen van denken gemixt zijn. Dat maakt het moeilijk om het onderscheid vol te houden. Ideeën mogen verrassend zijn, vergaande absurditeit zal niemand wensen. 43. Overigens zijn begrippen als //nieuw// en //origineel// moeilijk te definiëren. Kun je creativiteit of lateraal denken aanleren? De Bono vindt van wel. 44. Hoe kun je een kind voorschriften geven over hoe creatief te denken? 45. Een heel andere opvatting: Bergson (Le Rire, 1990): zoeken naar een maagdelijke manier van zien, denken, horen, zodat je de oorspronkelijke zuiverheid van alle dingen ziet. Een onbereikbaar ideaal.

4: 46. Over het proces praten vereist introspectie. Het creëren. Fasering. Incubatie, inspiratie en verificatie. 47. Proberen tot hypothesen te komen, fluency belangrijk. 48. Inspiratie en transpiratie. [zie Gombrich waar een veel diepgaander analyse wordt gegeven] 49. Toevalligheid speelt een rol en ook de zekerheid van het resultaat. Geen inspiratie zonder deugdelijke voorbereiding.  50. Inspiratie is afhankelijk van werken en ploeteren. In de kunsten net als in de wetenschap. Hypothesen! Of ook: mogelijkheden! 51. Van der Meer: Je moet warrig kunnen denken. Je moet open staan om warrige rare ideeën uit te werken. Einstein zegt dat woorden en taal geen rol spelen in zijn denkmechanisme tijdens de incubatiefase. 52. Overeenkomsten tussen kunsten en wetenschappen gelden ook voor verificatiefase. Het werk moet een vaste structuur met samenhang bezitten. Wetenschap: //de// waarheid. Kunst: //een// waarheid. Misschien is het verschil in de praktijk niet zo groot.

Er is altijd een doel. Het hele menselijk bestaan is doelgericht. 53. 54. Van de //Guernica// zijn veel voorbereidende schetsen bewaard gebleven. 

Van de Beek en Rikhof: de kerk is heilig omdat God erin woont. God woont bij de mensen om hun zonden bloot te leggen zodat er een eind aan gemaakt kan worden. Daarom is de kerk fantastisch.

Robert Putnam (2000): //Bowling Alone//. Alles wat we vroeger samen deden doen we nu alleen. In alle Amerikaanse en Engelse boeken is het gebruik van Wij stabiel, daalt het gebruik van Ik van 1900 tot 1965 waarna het scherp toeneemt. Zie je ook in popsongs. Ook meer haatwoorden. Voetbalteams en orkesten excelleren pas echt als er wordt samengewerkt. Wat zie je: minder huwelijken, minder kinderen in een huwelijk. Alleen leven is niet hetzelfde als eenzaam zijn. Maar er is een connectie, uiteindelijk zijn we sociale dieren. Eenzaamheid verzwakt het immuunsysteem. We worden een eenzame massa. Mensen met een sociaal netwerk knappen sneller op na een ingreep. Soldaten die van het front terugkeren naar een eenzaam bestaan: post traumatische stress. Ons vermogen om te socialiseren maakt ons uniek als mensen. Moraliteit is: ons commitment aan anderen, ons vermogen connecties te vormen. Edmund Burke: een cultuur die niet meer verbindt met verleden en toekomst verbreekt de keten en continuiteit van onze samenleving. We worden eendagsvliegen. Als ouden van dagen in ere worden gehouden leven ze langer. Zie de dorpen op Sardinië. <p>

Religie verschafte gemeenschapszin. Denk ook aan de opvang van Joodse vluchtelingen in Joods kerkelijke gemeenschappen. Onze connecties vormen ons. Als onze vrienden stoppen met roken, dan houden wij er zelf ook mee op. Banen vinden via je netwerk. <p>

Charles Taylor: zelf vervulling is de hoogste norm, commitment aan anderen doet er niet meer toe. Een groep heeft een collectieve weerstand. Moraliteit is locaal, ontstaat in families en onder vrienden. In de oorspronkelijke gemeenschappen werd de voedselvoorziening en de verdediging samen geregeld. Geloofsgemeenschappen bewaren het sociaal kapitaal. Het is niet goed om alleen te zijn.  
Het is de warmste zomer ooit gemeten. 2019 is het jaar van het protest. Geen uitzicht. Geen taal om te spreken over wat ons verbindt. Malen in de nacht. Een groot en adembenemend uitzicht. De gebroken schepping. Lichtscherven verbinden tot het weer samenhangt.
"""
<tblauw>zaterdag 2012, bewolkt, 10°</tblauw>

{{0410 Docent: Camus||cl}}
{{0410 Klussen: Naar Egmond||cl}}
{{0410 Studeren: Turfs 1||cl}} 
{{0410 Sociaal: Leesclub||cl}} 
{{0410 Klussen: Omvormer terugplaatsen||cl}} 
{{0410 Studeren: Turfs 2||cl}} 

10:41 Camus Filosofie 2 gedaan
13:54 In Egmond, zeer koud! Maar de omvormer doet het en de kachel brandt. Nu even kijken hoe het moet met het zilverzand.  
14:49 Nu even Turfs. Aantekeningen uit hoofdstuk 5. De kerk als oase halen.
23:02 Verder met laatste hoofdstuk Turfs.
<tblauw>dinsdag 2021, enkele buien, later opklaringen, 20 - 23°</tblauw>
<<todolist-ui caption:" " width:"" base:"mijntodos">>

|^07:41|Nu eerst roeien|
|^10:37|OK, nu koffie en plan maken|
|^13:02|Even naar die floating buttons kijken|
<tblauw>vrijdag 2021, regen of natte sneeuw, 4°</tblauw> 

|customTable|k

|^08:16|Nu eerst roeien.|
|^14:50|Even een totale inzinking na vervelende toestand binnen ekklesiabestuur. Hoe dom is het gewest om voorzitter te willen worden. Hadden ze Seph maar genomen, dan had ik het nu een stuk rustiger gehad. Verder gedoe met Anne over alweer de kerstboom. En de mail van Martin van Bleek over de repetities rond Kerst. Verwacht en clash met Anee een weet niet hoe dit aan te pakken|
|^16:20|Nu de COBEX zaken afhandelen. Uitspraken goedkeuren.|
|^16:26|Deetman, Bouman, Isufi en Schreuder hoeven niet meer. Nog meer? Nee, het is klaar. Nu de stukken voor maandag klaarleggen. Ik ben slecht bezig. Eerst de stukken downloaden.|
|^16:45|Even dat lijstje van het koor maken. |

<<qualify "12 december">>
<<qualify "10 december">>
<code><<transclusion>></code>
<tblauw>maandag 2022, zonnig en koud, 4°</tblauw> 

|customTable|k
|^ <$checkbox field='155230' checked=1></$checkbox>|<<soc "Mercia en Franca">>|
|^ <$checkbox field='155318' checked=1></$checkbox>|<<klu "Mercia van 🏫 halen">>|
|^ <$checkbox field='155342' checked=1></$checkbox>|<<bes "afspraak Kees Kok">>|
|^ <$checkbox field='155401' checked=1></$checkbox>|<<klu "agenda's bijwerken">>|

|^15:48|Begin van refl, opschrijven hoe laat het is. Net Mercia van school gehaald, ze wilde nog even spelen op het speelplaatsje met een paar klasgenootjes, oa Liv en Ailee. Kan ik een afspraak regelen met Kees Kok, Stan en Seph? Proberen via Whatsapp. |
|^15:51|Probleem, geen thuisagenda hier. Vanavond even doen. Ook agenda's bijwerken.|
|^15:55|Tekst over traditie en vernieuwing in de geschiedenis vande muziek|
<tblauw>zaterdag 2021, in Egmond, wolken en zon, 24°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen, zwemmen, planken|
|^<$checkbox field='b' checked=1></$checkbox>|Kranten|
|^<$checkbox field='c' checked=1></$checkbox>|Wandelen|
|^<$checkbox field='d' checked=1></$checkbox>|Fiets lijstje maken|
|^<$checkbox field='e' checked=1></$checkbox>|Grok|

|^12:01|Al gelopen en gezwommen. Nu kranten.|
<tblauw>donderdag 2021, weer een zomerdag, 21 - 26°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|🎹 spelen|
|^<$checkbox field='b' checked=1></$checkbox>|Studeren: [[12. Safe Space]]|
|^<$checkbox field='c' checked=1></$checkbox>|[[Bestuur: SVAN opheffen]]|
|^<$checkbox field='d' checked=1></$checkbox>|Zonsverduistering|
|^<$checkbox field='e' checked=1></$checkbox>|Naar Bergen lopen over het strand|

|^07:34|Nu aankleden en ontbijten|
|^09:21|Nu even een karton voor de zonsverduistering maken.|
|^09:34|Nu het geld voor Casa Crocetti overmaken. Hoeveel? € 680 |
|^09:49|Wanneer moet Egmond betaald? Kan nergens een nota van PWN vinden. Doen we zondag.|
|^11:10|Nu Safe Space uitlezen. Aantekeningen weer niet opgeslagen. Dat blijft toch wel een zwakke kant van Tiddlywiki. Nu doorlezen.|
|^21:04|Nu nog aan SVAN werken.|
<tblauw>maandag 2021, buien in de ochtend, vanmiddag met zon, 16 - 21°</tblauw>


|^|^08:54|Nu eerst aankleden en ontbijten|
|^&#x2714;|^10:22 |Adviseur: [[Review EDUREV-D-21-00268]]|
|^&#x2714;|^10:49 |Even Bestuur: ramen SiteDish|
|^&#x2714;|^11:33 |Adviseur: [[Review EDUREV-D-21-00268]]|
|^&#x2714;|^12:30 |Adviseur: [[Review EDUREV-D-21-00268]]|
 
<tblauw>woensdag 2021, grijs, 9 - 12°</tblauw>

| <$checkbox field='a' checked=1></$checkbox>|<<spo "Roeien">>|
| <$checkbox field='b' checked=1></$checkbox>|<<klu "Mercia van school halen">>|
| <$checkbox field='c' checked=1></$checkbox>|<<adv "Review Edurev [[Review EDUREV-D-21-00549]]">>|
| <$checkbox field='d' checked=1></$checkbox>|<<bst "Ekklesia: Jaargesprekken">>|
| <$checkbox field='e' checked=1></$checkbox>|<<bst "Ekklesia: info naar Sem">>|
| <$checkbox field='91611' checked=1></$checkbox>|<<klu "rij met hokje">>|
| <$checkbox field='91944' checked=1></$checkbox>|<<klu "dagboekfragmenten">>|

|^04:42|Nog even slapen|
|^07:07|Nu roeien|
|^09:18|Mooie verbetering van rij met hokje: veldnaam is nu de tijd in uren minuten en seconden|
|^09:41|OK. Nu verder met review. Proberen de 8 punten op een rijtje te krijgen. Met een mooie cantate van Bach.|
|^09:47|We beginnen met de kop.|
|^09:56|Nu punt 1.|
|^10:11|Nu punt 2.|
|^10:22|Nu punt 3.|
|^13:16|Wachten op Jochem. Dan weer naar huis.|
<tblauw>zondag 2021, mist en zon 15°</tblauw>

|^07:32|Zo dadelijk roeien|
|^09:58|Nu even vijf blz. Iwan Iljitsj|
|^15:29|Nu COBEX voorbereiden. Stukken downloaden|
<tblauw>vrijdag 2021, weer een zonnige nazomerdag, 24°</tblauw>

|^07:08| Opstaan!|
<<ximg width:100% "/Foto's/2021TF 098 Ten Hagen.png">>

Belang: Sanne van Herpen

<<ximg width:100% "/Foto's/2021TF 098 Samenvatting.png">>

Aandachtspunten: <p>
Cr1: Govaerts (3.6), Ierland (3.4), Pool (5.4):De scores zijn redelijk gelijk. Ierland scoort als enige zeer goed. Pool twijfelt of online bijdraagt aan binding aan de opleiding. Govaerts merkt op dat het onduidelijk is of co-creatie wel deel blijft uitmaken van de afstudeerfase na de pilot. <p>
Cr2: Govaerts (4.8), Ierland (4.5), Pool (6): Pool vindt de vertaling naar ontwerprichtlijnen niet krachtig genoeg en scoort ontoereikend. Govaerts merkt op dat een hybride leeromgeving niet automatisch leidt tot meer binding en mist de koppeling/onderbouwing. Ierland mist de directe link tussen meer contact door de interventie versus de huidige situatie; waarom is er tot nog toe niks mee gedaan? <p>
Cr3: Govaerts (4.1), Ierland (6.6), Pool (6): De scores lopen uiteen. Pool vindt de meting van de betrokkenheid mager, en het team aan de kleine kant. Ierland geeft aan dat studenten wel genoemd worden voor de co-creatie, maar dat voor hen niet omschreven wat ze zullen doen en dat ze onderdeel van het projectteam zijn. Daarnaast geeft Ierland aan dat onduidelijk is hoe de resultaten zullen worden gedeeld, hoe de tool wordt ontwikkeld en alles samen maakt de inschatting van de haalbaarheid van het project lastig.<p>
Cr4: Govaerts (3), Ierland (1.5), Pool (3.5): De scores lopen uiteen. Govaerts vindt de omschrijving van de betekenis van Comenius voor de aanvrager summier. <p>
<<ximg width:100% "/Foto's/2021TF 275 Kok.png">>

Belang: geen

Samenvatting: <p>
Het doel van dit project is om studenten beter voor te bereiden op de onderzoeksstage door middel van gamification. CO-IEMES is een opleiding voor creatieve conceptontwikkeling waarbij studenten hun opleiding afsluiten met een praktijkgericht onderzoek. Studenten hebben echter moeite met onderzoek. Ze lopen vast, voelen zich onzeker en vinden het lastig om zelf keuzes te maken.
De oorzaak van dat probleem is dat studenten het idee hebben dat onderzoek vooral een kwestie is van de juiste onderzoekregels volgen. En dat is belangrijk, maar onderzoek gaat ook over nieuwsgierigheid, over betekenis geven en over zelf de leiding nemen. Studenten zouden moeten ervaren dat onderzoek over vrijheid gaat en speels en creatief kan zijn. Hoe mooi zou het zijn als studenten leren om de regels van onderzoek op een vrije en speelse manier toe te passen? Door gamification kunnen we een leeromgeving creëren waarin het spelkarakter van onderzoek doen vorm krijgt op een manier die past bij onze studenten en die hen voorbereidt op hun afstudeeronderzoek. <p>
Omdat studenten les hebben gehad in game-design en bekend zijn met gamification worden zij in dit project medeontwikkelaar van hun eigen onderwijs. Zo dragen zij zelf bij aan een uitdagende leeromgeving waarin zelfstandigheid en complexiteit gecombineerd worden. De belangrijkste opbrengst van dit project is echter, dat de studenten hierdoor betere praktijkonderzoekers worden. Door hen de speelsheid van onderzoek doen te laten (her)ontdekken, leren studenten om hun kennis en vaardigheden succesvol in te zetten, op een wijze die past bij het creatieve profiel van hun opleiding. <p>

Aandachtspunten: <p>
Cr1: Koeslag-Kreunen (4), Herpen (3.5), Ierland (1.8): De scores lopen uiteen. Koeslag-Kreunen mist een omschrijving van wat het project nu gaat opleveren. <p>
Cr2: Koeslag-Kreunen (6), Herpen (3.5), Ierland (4.3): De scores lopen uiteen. Koeslag-Kreunen vindt de omschrijving van de meerwaarde te mager. Herpen vindt onduidelijk of de innovatie tot de omschreven opbrengsten zal leiden. Ierland geeft aan dat het onduidelijk is of de opbrengsten behaald gaan worden. <p>
Cr3: Koeslag-Kreunen (3), Herpen (5.4), Ierland (4): De scores lopen uiteen. Herpen geeft aan dat de evaluatie onvoldoende ingezet wordt in het evalueren van het behalen van de gewenste opbrengst. Ierland mist een omschrijving van de daadwerkelijke inzet van studenten. <p>
Cr4: Koeslag-Kreunen (3), Herpen (1.5), Ierland (2): De scores lopen uiteen. Koeslag-Kreunen scoort een 3, maar onduidelijk is waarom (argumentatie: “Het profiel, de onderwijsvisie en de visie op het lidmaatschap zien er passend en geengageerd uit.”)<p>
<<ximg width:100% "/Foto's/2021TF 283 Schilder.png">>

Belang: Els van der Pool, Lisette Baartman

Samenvatting<p>
Afstuderen bij de opleiding Bedrijfskunde leverde studenten regelmatig frustratie en studievertraging op. Dit kwam omdat studenten een scriptie moesten opleveren waarbij de opleiding de methodische grondigheid van groot belang vond, maar opdrachtgevers vooral keken naar praktische relevantie. Om dit verschil te verkleinen is ons afstuderen vernieuwd. Naast meer flexibiliteit in de keuze van eindproducten, moeten studenten nu een voor de context passende mate van methodische grondigheid kunnen verantwoorden. Studenten bleken echter dilemma’s te ervaren in het maken van dit soort keuzes. Vanuit de leeruitkomsten verwachten we dat studenten dit d.m.v. reflectie zelfstandig moeten kunnen, maar de gebruikelijke reflectiemethoden blijken hiertoe ontoereikend. Om studenten hierbij beter te ondersteunen willen we als innovatie de Sensemaker app introduceren bij het afstuderen. Uit een pilot met afstudeerders blijkt deze app namelijk tot meer betekenisvolle reflectie te leiden. Ook biedt de app volgens studenten een toegankelijkere vorm van reflectie met meer intrinsieke motivatie voor gebruik. Daarnaast kan de opleiding via de app realtime inzicht krijgen in dilemma’s binnen de afstudeerpopulatie waardoor we gerichte onderwijsinterventies kunnen doen. De app is echter een blanco canvas en moet specifiek ingericht worden voor onze opleiding en context. Dit gaan we doen in co-creatie met studenten, docenten en praktijkbegeleiders waarbij de principes van actieonderzoek en design thinking worden toegepast. De app en de procedures er omheen zullen in meerdere fasen in lopende afstudeertrajecten worden getest. Het projectteam is divers qua expertise wat de kwaliteit en de doorwerking naar de opleiding en onderzoek borgt.<p>

Aandachtspunten<p>

Cr1: Wessel (2.6), Govaerts (3.2), Herpen (5.5): De scores lopen sterk uiteen. Govaerts mist in de aanvraag een omschrijving van de rol en verantwoordelijkheid van de begeleidende docenten. Herpen vindt de bespreking van de mogelijke inbedding van de innovatie onvoldoende. <p>
Cr2: Wessel (2), Govaerts (4.8), Herpen (4): De scores lopen uiteen. Govaerts mist hoe de app daadwerkelijk ingezet zal worden (op welke momenten en wijze), waardoor onduidelijk is hoe goed de haalbaarheid is van het project. Herpen vindt de omschrijving van de kwalitatieve opbrengst te mager. <p>
Cr3: Wessel (3), Govaerts (5.1), Herpen (5): De scores lopen uiteen. Wessel mist een opmerking over de mogelijke belangenverstrengeling in de samenwerking tussen bedrijf en hogeschool. Govaerts mist een omschrijving van de deelname van studenten en het werkveld, een heldere omschrijving van de evaluatiecriteria, en de taken en rolverdeling is onvoldoende uitgewerkt. Herpen vindt de kwalitatieve opbrengsten niet voldoende omschreven. <p>
Cr4: Wessel (2), Govaerts (4.1), Herpen (4): De scores lopen uiteen. Govaerts vindt de bijdrage van Comenius voor de aanvrager onderbelicht. Herpen vindt de uitleg over wat de bijdrage van dit project betekent voor de carrière van de aanvrager wat te mager.<p>
<<ximg width:100% "/Foto's/2021TF 304 Sanchez.png">>

Belang: geen<p>

Samenvatting<p>
Internationaal opererende Nederlandse bedrijven tonen aan dat Virtual Reality (VR) en Augmented reality (AR) nieuwe mogelijkheden biedt voor trainingen en dienstverlening aan hun buitenlandse klanten en het eigen personeel. Binnen het (HBO-)onderwijs is er weinig onderzoek gedaan naar de toegevoegde waarde van deze opkomende technologieën voor internationalisering, internationale competenties en de impact op het afstuderen voor de arbeidsmarkt van de toekomst.  Veel initiatieven bevinden zich momenteel nog in embryonale fase. Concrete experimenten en praktijkonderzoeken zijn schaars. Deze zijn veelal gericht op de toepassing in Nederland.
Door de coronapandemie kunnen duizenden Nederlandse studenten fysiek niet deelnemen aan een buitenlandse studie of (afstudeer)stage doen. Hierdoor lopen ze studievertragingen op en missen ze essentiële authentieke buitenlandse leerervaringen die ze nodig hebben om te kunnen afstuderen. Met mijn aanvraag bedien ik de wens van studenten om te gaan afstuderen met de internationale competenties die ze nodig hebben om naadloos te kunnen aansluiten op de arbeidsmarkt.<p>
Op basis van een pilot bij Bedrijfskunde kom ik tot aanbevelingen over hoe AR/VR in te zetten ingezet om authentieke internationale leeromgevingen te bieden die studenten nodig hebben om succesvol af te studeren. In het verlengde hiervan beantwoord ik de vraag hoe kan je internationale competenties verder integreren in het 3e en 4e leerjaar. Dit kan leiden tot vernieuwing of verbetering van de begeleiding van studenten, nieuwe vormen van afstuderen en alternatieve authentieke internationale leeromgevingen. De aanvraag is ingebed in een lopend Erasmus+ KA107 uitwisseling tussen Saxion, drie Albanese Universiteiten en the International Chamber of Commerce Albania.<p>

Aandachtspunten<p>
Cr1: Govaerts (2), Baartman (4), Ierland (1.4): De scores lopen sterk uiteen. Baartman mist een vergelijking naar initiatieven in het onderwijs, zijn die er niet? <p>
Cr2: Govaerts (4.5), Baartman (6.9), Ierland (2.2): De scores lopen sterk uiteen. Govaerts mist een omschrijving van succescriteria. Baartman vindt de omschrijving van de opbrengsten niet zo helder, mist daarin een maat/meeteenheid. Ierland mist een goede omschrijving voor de delen van de internationale ervaring waar dit project op aan zal sluiten, wat vervangt het (wel en niet)? <p>
Cr3: Govaerts (5.5), Baartman (7), Ierland (3): De scores lopen sterk uiteen. Govaerts vindt het toetsingskader van evaluatie onduidelijk, het disseminatieplan onvoldoende te beoordelen, en vraagt zich af of met de voorgestelde wijze van evalueren de meerwaarde van VR/AR wel kan worden vastgesteld. Baartman mist duidelijke definities en keuzeonderbouwing voor bijvoorbeeld virtual storytelling. Ierland mist meetbare evaluatiepunten op basis waarvan je het project als geslaagd zou kunnen beschouwen. <p>
Cr4: Govaerts (5), Baartman (5.5), Ierland (2.5): De scores lopen uiteen. Govaerts mist een omschrijving op basis waarvan de docentprofessionaliteit zou kunnen worden beoordeeld. Baartman merkt op dat de aanvrager gastdocent is, is dat voldoende voor deze aanvraag?<p>
Hoe gaan we verder met ons verhaal, als we het licht hebben gezien. Is er nog hoop?

Camus wordt gezien als bestrijder van het idee dat hoop doet leven. De hoop dat er misschien wél een betekenis in het leven is. De hoop dat er toch een goede vader is, die ons gaat belonen als we goed doen. Die ons bestraffend toespreekt als we kwaad doen. Het idee van een hiernamaals, waar er geen angst is, geen pijn en geen verdriet. En waar we allemaal eeuwig zullen leven. Voor Camus is die houding riskant. Dan leef je het toekomstige leven en niet het leven hier en nu. Hoop leidt je aandacht af van de werkelijkheid, het sust je in slaap, het is opium. Dat is een vorm van hoop waar tegen Camus zich verzet. Filosofische zelfmoord noemt hij dat. Hij zet ze op één lijn: religie, nationalisme, racisme, sexisme. Doppen in je oren stoppen, velen om je heen doen dat. Terwijl we ons juist bewust moeten worden van de onontkoombare werkelijkheid, lering moeten trekken uit onze ervaringen.

Camus zegt: het bewustzijn van het absurde is het begin, waarna de opstand volgt, hierdoor wordt het nutteloze leven waardevol. De opstand is de weigering te berusten. Ze stelt de wereld elk moment weer ter discussie. De opstand is de eerste consequentie van het absurde, de volgende consequentie is vrijheid. De vrijheid van het individu: de mens is niet vrij om aan zijn lot te ontsnappen, maar hij heeft wel de vrijheid om zijn lot vorm te geven.

Psalm 73 voegt aan deze vrijheid nog iets toe: de kracht die je ontvangt in de ontmoeting met de ander. Martin Buber liet uit psalm 73 de volgende prachtige zinnen op zijn graf beitelen, na ze eerst zelf aan het graf van een al even vermaarde filosoof en theoloog Franz Rosenzweig voorgedragen te hebben:

Und doch bleibe ich stets bei dir,
meine rechte Hand hast du erfasst.

Een heel bemoedigende, troostende tekst. 

"""
Gij houdt mij vast,
uw hand in mijn hand.
Alles zult Gij
ten goede leiden,
Gij voert mij mee
in uw raadsbesluit.
Wat is de hemel
voor mij zonder U,
wat moet ik op aarde
als Gij niet bestaat?
Al wordt mijn lichaam
ook afgebroken,
al sterft mijn hart,
Gij zijt mijn Rots,
mijn God, de toekomst
die op mij wacht.

Ver weg van U
is het geen leven,
U ontrouw zijn
is niemand zijn.

Bij U, mijn hoogste
goed, mijn God,
bij U ben ik
geborgen.
"""

Bieden deze woorden troost en hoop? Het vertrouwen dat er altijd anderen zullen zijn in wier ogen je de aanwezigheid van God zult ervaren die je draagt op adelaarsvleugels? Die je opgooit om in vrijheid je leven vorm te geven en proberen om op jouw beurt goed te doen aan anderen. Die je opvangt als weer eens krijsend dreigt neer te gaan? Totdat je vliegen kunt op eigen kracht?

Zo moge het zijn.
Het Christendom is narratiever. Verhalen zijn fragmentair. Bijbelverhalen kunnen loodrecht tegenover elkaar staan. Neem de Rijke Jongeling versus de Onrechtvaardige Rentmeester.

Wie God denkt te kennen, mag er zeker van zijn dat wie hij kent, God niet is. Een waarlijk transcendente God kan nooit aan een menselijke definitie beantwoorden.

Verwacht niets van bisschoppen, dan kunnen ze alleen maar meevallen.

De kerk is geen doel op zich. Hoogstens faciliteert ze onze relatie met God. De kerk is een metgezel op onze tocht. Maar we mogen er niet in verdwijnen.

Een kerk die zich uitsluitend op het hiernumaals richt en een streng moralisme voorstaat laat mij koud. De kerk is gastvrij, ze oordeelt niet, ze is een toevlucht voor het menselijk tekort. 

De kerk is plaats voor het transcendente, het verrijzenisgeloof. Humor een schoonheid als verbinding tussen het zegbare en het onzegbare.
De vraag: should society legisate for morality, or should that be left to individual consequence?
Lord Devlin: a shared morality is essential to society. Without shared ideas on politics, morals, and ethics no society can exist. H.L.A. Hart disagreed: niet alle morele principes hoeven worden afgedwongen door wetgeving. We beschikken niet over beslissingsprocedures om te bepalen om gebieden te onderscheiden waar gedrag onderhevig is aan wetgeving en gebieden waar persoonlijkeo keuze en overtuiging leidend moeten zijn. John Stuart Mill: het enige doel waarvoor de staat macht kan uitoefenen over een lid van de gemeenschap, tegen zijn wil, is te voorkomen dat anderen worden gschaad. Dat werd het leidend principe van vrijheid.<br>

Van positieve vrijheid is volgens Berlin sprake als mensen ‘meester over zichzelf’ zijn. Doorslaggevend is dat ze ergens welbewust toe besluiten. In deze opvatting, die onder meer wordt verdedigd door Jean-Jacques Rousseau en Immanuel Kant, staat vrijheid gelijk aan zelfbepaling. Autonomie, dat letterlijk betekent dat iemand zichzelf de wet kan stellen. Daartegenover plaatst hij de negatieve vrijheidsopvatting van liberale denkers als John Locke en John Stuart Mill: de afwezigheid van dwang door andere mensen. Mill beschrijft dat het meest puntig in het begin van de klassieke liberale tekst On Liberty, het zogeheten ‘schadeprincipe’: alles mag, zo lang een ander er geen schade van ondervindt. <br>

Berlin wijst erop dat positieve vrijheid zich gemakkelijk laat misbruiken. Iemand die geen meester over zichzelf is, die bijvoorbeeld te veel drinkt of zich intellectueel niet ontwikkelt, kan daartoe worden gedwongen. Hij is immers onvrij. Maar waar ligt de grens? Berlin wijst op het gevaar van paternalisme, uit goede bedoelingen. ‘Vrijheid gaat niet om mijn wens om door een deur te lopen, maar om de vraag of die deur open is.’<br>

Hoewel Berlin dus het negatieve vrijheidsbeginsel van het liberalisme onderschrijft, zijn er ook essentiële verschillen met de liberale traditie. Hij ziet de samenleving als meer dan een optelsom van individuen; hij benadrukt  dat de mens een sociaal of politiek wezen is. Soms komt zijn positie in de buurt van het republikanisme, dat actief burgerschap onderschrijft. Berlin zag in de republikeinse renaissancedenker Niccolò Machiavelli een inspiratiebron. Hij deelt ook diens afkeer van een door moraliteit gedreven politiek. Berlin verdedigt moreel pluralisme – wat iets anders is dan moreel relativisme. Natuurlijk zijn er ethische principes die boven alles zijn verheven, zoals menselijke waardigheid, maar die laten zich maar moeilijk vertalen tot een eenduidig politiek programma. <br>

https://www.groene.nl/artikel/het-tragisch-liberalisme-van-isaiah-berlin<br>

Berlin zag als de grootste en dus meest fatale misvatting in het westerse denken. Volgens Berlin is dat het platoonse ideaalbeeld, dat ervan uitgaat dat op alle 'echte’ vragen in de filosofie slechts een antwoord juist is; dat er een betrouwbare methode is om dat antwoord te vinden; en dat al die juiste antwoorden op al die vragen uiteindelijk met elkaar verenigbaar zijn, zodat ze te zamen 'de waarheid’ vormen. Misschien bereiken we dat ideaal nooit, omdat we niet slim genoeg zijn, of te zondig, maar toch zijn de eeuwige waarheden in principe kenbaar. Dit idee van Plato komen we ook tegen in het joodse en het christelijke geloof, in de Verlichting, bij Hegel, Marx, de socialisten en de liberalen.<br>

Machiavelli. De roemruchte Florentijn wees er immers op dat de waarden van de heersende klasse, nodig om de staat te leiden, onverenigbaar zijn met christelijke deugden als nederigheid, wereldverachting, berusting in het lijden en het geloof in verlossing na de dood. En toch waren dat waarden die naast elkaar konden - en moesten - bestaan. Maar het was volgens Machiavelli daardoor niet mogelijk om een criterium te bepalen voor de vraag hoe een mens moest leven.<br>

Pleit Berlin, in navolging van Vico en Herder, nu voor ethisch relativisme? Is hij van mening dat het er niet toe doet welke waarden mensen belangrijk vinden en dat dus het hebben van waarden daarom in feite pure onzin is? Berlin ziet in Vico en Herder pleitbezorgers van het pluralisme, wat hij omschrijft als 'de opvatting dat mensen talloze verschillende doelen kunnen nastreven maar toch volkomen rationeel, volkomen menselijk blijven, in staat elkaar te begrijpen en met elkaar mee te voelen en inzichten aan elkaar te ontlenen.’ Er zijn gemeenschappelijke waarden, anders was communicatie tussen culturen of begrip voor historische tijdperken onmogelijk, maar er zijn ook steeds botsende waarden. Een klassiek voorbeeld vormen natuurlijk vrijheid en gelijkheid. Twee waarden die de mens al vele eeuwen nastreeft, maar die onveranderlijk leiden tot grote spanningen, omdat ze in beginsel onverenigbaar zijn. Deze onverenigbaarheid betekent echter niet een diskwalificatie van een van deze twee waarden, het maakt alleen duidelijk dat de idee van het volmaakte geheel, de utopie van de ideale samenleving, te enen male onhaalbaar is.<br>

Universele waarden mogen dan niet bestaan, er is toch een 'minimum aan zo goed als universele waarden zonder welke een samenleving nauwelijks zou kunnen voortbestaan’. Er zijn immers tegenwoordig nog weinig voorstanders van slavernij, gaskamers of de plicht van kinderen om hun ouders aan te geven als zij zich kritisch uitlaten over de regering. Op deze punten zijn compromissen niet te rechtvaardigen. 'Maar anderzijds lijkt het streven naar volmaaktheid altijd een recept voor bloedvergieten in te houden, en of het nu de oprechte idealist, de zuiverste van geest is die het verlangt, dat doet er niets aan af.’<br>

In tegenstelling tot het hedonistische cynisme van de VVD is het liberalisme van Berlin stoicijns en tragisch. Hoewel Berlin nogal eens wordt ingelijfd bij de liberale denkers en hij zichzelf ook als liberaal beschouwt, ligt hij volgens Gray overhoop met zowel het klassieke als het moderne liberalisme. En wie Grays meesterlijke boek leest wordt duidelijk waarom Bolkestein - nooit te beroerd om met befaamde denkers om te gaan alsof hij met ze op school heeft gezeten - Berlin nog steeds niet heeft gevraagd om in De Balie eens een avondje gezellig te debatteren. Van Locke en Mill tot Hayek en Rawls gaan liberalen ervan uit dat onze vrijheid is gebaseerd op het feit dat wij rationele keuzen maken. En bij Bolkestein is die verstandelijke afweging vereenvoudigd tot: wat levert het me op? Ook bij Berlin bestaat de vrijheid uit de keuzen die we maken, maar die keuze kan lang niet altijd rationeel zijn. Omdat de zaken of waarden waartussen we moeten kiezen soms onvergelijkbaar zijn, schiet het verstand vaak tekort.<br>

Het gaat bij Berlin niet om een rationele maar om een radicale keuze. We kunnen eindeloos de voor- en nadelen van een keuze tussen twee waardevolle zaken afwegen, uiteindelijk moeten we toch de knoop doorhakken. Deze keuze is volgens Gray 'groundless and criterionless’, en in zo'n geval hebben we 'no choice but to act’. In deze opvatting - die men naar eigen smaak decisionistisch, voluntaristisch of existentialistisch kan noemen - zit dus het grote verschil tussen Berlin en alle rationele liberalen. Wie hem nu wil indelen bij de jonge Sartre of Heidegger, van wie Berlin zegt dat hij hem niet kan lezen, maakt een grote vergissing. Volgens Berlin verwezenlijken wij onszelf weliswaar in het maken van keuzen, maar dat kiezen geschiedt, in tegenstelling tot wat de meeste existentialisten vinden, niet ex nihilo. We kiezen immers niet in het luchtledige, maar binnen een context die is gevormd door de keuzen van eerdere generaties. Wij hebben onszelf immers niet gekozen, maar zijn het produkt van overgeerfde waarden, tradities en maatschappelijke verhoudingen. Bovendien zijn onze keuzen veelal niet het resultaat van echte 'beslissingen’, maar van ervaringen. Met behulp van wat postmodern jargon vat Gray het als volgt samen: 'We mogen dan co-auteurs zijn van onze levens, maar deze zijn altijd variaties op bestaande teksten.’<br>

Denkers als Hamann, Herder, Maistre en Burke wezen erop dat de rede en de wetenschap niet het antwoord kunnen leveren op alle vragen die de mens heeft, en dat waar het gaat om waarden - ethisch, esthetisch, sociaal of politiek - vaak meerdere antwoorden geldig zijn. Ofwel, in de woorden van Hamann: 'God is geen wiskundige, God is een kunstenaar.’ Ook wezen deze tegenstanders van de Verlichting het universalisme af. Ieder tijdperk, iedere cultuur, zelfs ieder land kent zijn eigen waarden, eigen cultuur, eigen tradities, en deze zaken dienen gerespecteerd te worden.
<br>

https://www.liberales.be/teksten/2017/6/29/twee-opvattingen-van-vrijheid-isaiah-berlin<br>

Berlin onderscheidt in zijn essay twee interpretaties van het vrijheidsbegrip, een negatieve en een positieve. Negatieve vrijheid is het domein waarbinnen iemand ongestoord door anderen kan doen of zijn wat in zijn vermogen ligt. Dit is de kern van het klassieke liberalisme. Positieve vrijheid gaat over de mate waarin iemand meester is over zijn eigen bestaan en heeft betrekking op de waarde van gemeenschap, culturele identiteit en culturele zelfbeschikking. Legt men teveel nadruk op de gemeenschap dan kan de negatieve vrijheid onaanvaardbaar in de verdrukking komen. Heeft men geen oog voor de gemeenschap en het feit dat mensen in hoge mate sociale wezen zijn dan doet men evenzo geen recht aan het individu. Hier moeten dus afwegingen gemaakt worden.<br>
Naar Mars, verder uitzoomen. Tussen 56 en 400 miljoen km ver. Wat is er vreemd aan een verlangen naar een verbindend verhaal waarin samenkomt wat nu uit losse scherven lijkt te bestaan? Vreemder nog dan de koele blauwe kleuren van de zon vind ik de
gedachte dat zij ook daar, ver van ons vandaan, gewoon opkomt en ondergaat. In mij huist klaarblijkelijk het domme maar diepgewortelde idee dat ze bij ons hoort, van ons is, voor óns schijnt.
"""
<tblauw>zondag 2021, zonnig in Egmond, koude noordenwind, 7°</tblauw>

{{0411 Bestuur: SVAN||cl}} 
{{0411 Egmond rekening||cl}} 
{{0411 Klussen: accu's op bankje||cl}} 
{{0411 Sportief: lopen||cl}} 
{{0411 Docent: Camus||cl}} 
{{0411 Studeren: Torfs||cl}} 
{{0411 Sociaal: KoffieLink||cl}} 
{{0411 Reflectie: podcast||cl}} 

15:53 Even werken aan de Egmond rekening. Wat te doen. Rekening uitkiezen. We kunnen kiezen uit een spaarrekening van de ING rekening of de ABN AMRO rekening. We kiezen een spaarrekening, nl spaarrekening V 785-38646. Daar stort ik het bedrag van Berend op. En het bedrag van Cathrien en Jochem haal ik van de Raborekening.
16:08 Dat lukt even niet. Daar heb je de Rabo Reader voor nodig. Morgen thuis even doen. Wij storten de kosten van het raam. Dat morgen even verrekenen. Even een spreadsheet openen om de transacties bij te houden. 
16:22 Wat wil ik aan Torfs doen: uitlezen. Wat wil ik aan SVAN doen: plan maken om deze week de rekening af te sluiten en de stukken naar Kees en het andere lid van de kascontrolecommissie te sturen. Kan ik nu de rekening afsluiten: Jaar 2020, jaar 2021. Jaar 2020?
1. Van de rekening ING 6360579 oktober t/m april uitdraaien
2. Spreadsheet en stukken 2020 in orde maken
3. Spreadsheet 2021 maken
4. Stukken 20201 in orden maken
5. Verslag vergadering maken
6. Stukken opsturen naar Kees en Sharief.
16:35 Camus: Rest bekijken en plan maken voor afronding. 
<tblauw>woensdag 2021, zonnige perioden, 21 - 24°</tblauw>

|^00:14|Nu gaan slapen|
|^11:33|OK, Geroeid en auto gebracht. Nu koffie zetten.|
|^11:50|Pagina OS15. Aanvraag in behandeling en gepauzeerd. Hoe heette die meneer van Alexander? Richard Vermolen 06 22235767. Eens even bellen.|
|^11:58|OK, gedaan, kan afgevinkt.|
|^13:05|Heb nu ongeveer de perfecte TiddlyWiki! Nu even lunchen en de auto ophalen|
|^18:15|Henk Bluemink betalen|
<tblauw>dinsdag 2022, zon, later meer wolken, 2 - 6°</tblauw> 

|customTable|k
|^ <$checkbox field='122416' checked=1></$checkbox>|<<stu "bron lezing muziek zoeken">>|
|^ <$checkbox field='122435' checked=1></$checkbox>|<<soc "joke van eekeres">>|

|^12:24|erg mooie lezing van Bernstein over fonologie, maar te moeilijk voor doel. Nog even doorzoeken|
|^19:54|Goede ontmoeting met Joke. Nog geen bron.|
<tblauw>zondag 2021, wolken en zon, 24°</tblauw><p>

|^16:31|OK, wat gaat het goed hier met de nieuwe tablet! Geen computer haast meer nodig. Moet nu nog onderstuk schoonmaken en verven en fiets nagaan. Moet lukken. Nu aan de slag|
<tblauw>vrijdag 2021, mistig, 14 - 17°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen en planken|
|^<$checkbox field='b' checked=1></$checkbox>|Elize|
|^<$checkbox field='c' checked=1></$checkbox>|Sacks|
|^<$checkbox field='d' checked=1></$checkbox>|piano 🎹 spelen|
|^<$checkbox field='e' checked=1></$checkbox>|Tablet zoeken|
|^<$checkbox field='f' checked=1></$checkbox>|Kranten lezen|

|^07:29|Nu aankleden en planken|
|^11:53|Nu Tablet zoeken|
|^12:57|Gelukt, een Lenovo Tab P11|
|^13:00|Nu de Trouw lezen|
|^13:36|Nu [[13. Two Ways of Arguing]]|
|^14:37|Nap en lezen|
<tblauw>dinsdag 2021, zonnige lentedag, maar regen in aantocht, 15 - 19°</tblauw>


|^&#x2714;|^09:26 |Inpakken en naar huis|
|^&#x2714;|^10:30 |Sportief: Lopen|
|^|^12:39|Wat wil ik vanmiddag doen:|
|^<$checkbox field='v00' checked=1></$checkbox>|^|Roth|
|^<$checkbox field='v01' checked=1></$checkbox>|^13:44|Radetzkymars uitlezen|
|^<$checkbox field='v02' checked=1></$checkbox>|^|Sacks|
|^<$checkbox field='v03' checked=1></$checkbox>|^|SVAN|
|^<$checkbox field='v04' checked=1></$checkbox>|^16:00|Stofzuigen|
|^<$checkbox field='v05' checked=1></$checkbox>|^17:00|Moppen|
|^<$checkbox field='v06' checked=1></$checkbox>|^19:00|Boodschappen|
<tblauw>donderdag 2021, lichte regen, 9 - 11°</tblauw>

| <$checkbox field='70812' checked=1></$checkbox>|<<bst "Ekklesia: Jaargesprekken">>|
| <$checkbox field='70850' checked=1></$checkbox>|<<bst "Ekklesia: info naar Sem">>|
| <$checkbox field='115923' checked=1></$checkbox>|<<klu "Logeerappartement betalen">>|

|^07:04|Ontbijt, Franca halen|
|^11:23|OK, na veel gepruts een geschikt icon voor $:/core/ui/Buttons/GaNaarVandaag|
<tblauw>maandag 2021, veel zon, 15°</tblauw>

|^08:03|Al geroeid|
|^15:38|Cobex, lunch met Aadje, tandarts|
<tblauw>zaterdag 2021, nu nog zon, later wolken, 24°</tblauw>

|^07:39|Opstaan!|
|^12:10|Algemeen alarmnummer: 112. Politie: 113. Brandweer: 115. Ambulance: 118.|
|^13:12|In Porto Sant'Elpidio voor de lunch|
|^19:21|Iets intypen via de tablet blijkt hier onmogelijk. Niet meer proberen.|
|^19:22|Iets opschrijven over de wandeling gisteren.|
|^22:27|Laatste poging om iets op te schrijven.|
<<ximg width:100% "/Foto's/2021TF 042 Hermsen.png">>

Belang: geen<p>

Samenvatting <p>
Tijdens het afstudeerproces spelen naast vele inhoudelijke leermomenten ook persoonsvormende leermomenten een belangrijke rol in de ontwikkeling tot beginnende professionals. Binnen onze faculteit 3mE sturen we goed op de inhoud, maar ontwikkeling op het gebied van persoonsvormende leermomenten is vaak onvoldoende. Mede hierdoor levert de afstudeerfase meer problemen en minder leeropbrengsten op dan gewenst. Studenten méér en anders begeleiden wordt bemoeilijkt door de grote aantallen studenten (600+ jaarlijks) en de hoge werkdruk van begeleiders. We hebben explicietere begeleiding nodig op het gebied van de persoonlijke en professionele ontwikkeling van studenten: ze moeten leren reflecteren op hun rol in het afstudeerproces en ontdekken hoe ze bijbehorend gedrag en vaardigheden kunnen ontwikkelen. De grote uitdaging is om een geschikte oplossing schaalbaar te maken. <p>
Bovenstaande problematiek willen we aanpakken met ludodidactiek. In een Serious Game wordt de reflectieve begeleidersrol in spelvorm en -regels ingebouwd en komen persoonlijke vraagstukken van de student zó aan bod dat er bewust van geleerd wordt. De afstudeerders en de afstudeerbegeleider spelen in groepen samen waardoor begeleiding, intervisie en reflectie zowel vanuit de afstudeerbegeleider als peer-to-peer plaatsvinden. Begeleiders hebben geen aanvullende (coachings)vaardigheden nodig. Dit maakt het op grote schaal bruikbaar. We ontwerpen dit spel iteratief volgens de Design Thinking methodologie en doen dit in co-creatie met studenten en gamedesigners (Hogeschool voor de Kunsten Utrecht). Met kwalitatief onderzoek toetsen we het effect van deze interventie. Door het spel en het ontwerpproces vrij te delen, hopen we anderen te inspireren en bieden we duidelijke handvatten voor het gebruik binnen andere organisaties.<p>

Aandachtspunten<p>
Cr1: Wessel (5), Koeslag-Kreunen (4), Pool (3.5): De scores lopen uiteen. Wessel geeft aan de vorm van het spel nog wat te onduidelijk te vinden om de innovatie te kunnen beoordelen. <p>
Cr2: Wessel (2.5), Koeslag-Kreunen (3), Pool (3.5): De scores lopen uiteen. Pool geeft aan dat de beoogde leeropbrengsten lastig te meten lijken. <p>
Cr3: Wessel (3.5), Koeslag-Kreunen (4), Pool (5): De scores lopen uiteen.Wessel mist inzicht in het spel en geeft aan het daarom lastig te beoordelen te vinden. Koeslag-Kreunen vindt de uitleg over de implementeerbaarheid en overdracht zeer onderbelicht, is een 4 dan een terechte score? Pool zou graag een tussentijdse evaluatie zien, ook met betrekking tot de disseminatie. <p>
Cr4: Wessel (2.4), Koeslag-Kreunen (2.9), Pool (3.5): Scores komen redelijk overeen.<p>
<<ximg width:100% "/Foto's/2021TF 169 Van Gurp.png">>

Belang: geen

Samenvatting<p>
Masterstudenten plooien zich naar wat ze denken dat van hen verwacht wordt. Zij realiseren zich onvoldoende dat juist authenticiteit en een eigen professionele identiteit tot succes leidt. Dat geldt zowel in hun relatie met patiënten als tot hun peers als tot hun eigen welzijn. Doen alsof en kopiëren van heersende mores (hidden curriculum) leiden tot vroegtijdig uitvallen. Eenmaal professional houdt het leren niet op, al voelt dat zo vaak wel. Hernieuwde eindtermen (raamplan 2020) en toenemend persoonsgerichte zorg vragen om betrokkenheid van patiënten in het (door-)ontwikkelen van generieke professionele kwaliteiten van zorgprofessionals (in spé).<p>
We willen met dit project bereiken dat studenten (in contact met elkaar, toekomstige collega’s én patiënten) ervaren dat je ook als arts jezelf mag zijn, met kwaliteiten en beperkingen. Iedereen heeft zijn beperkingen. Dat is niet erg als je laat zien dat je ze erkent en er aan werkt. Dat is ‘leven lang leren’ . Een leven-lang-leren-houding bevordert leren in wederkerigheid, nodig om de kloof tussen de huidige generatie van zorgprofessionals en jonge studenten, opgeleid met een constructief kritische houding en de principes van feedback, te helpen overbruggen. Als leven lang leren mag en kan, wordt succesvol afstuderen gemakkelijker.<p>
Het project: Eindopdracht master geneeskunde: studenten starten het leven lang leren van en met patiënten en professionals door praktijkervaringen te delen, elkaars achtergrond en hun werkrelaties te onderzoeken. Drie partijen werken gezamenlijk aan een veilig leerklimaat. Eenmaal afgestudeerd blijft de jonge zorgprofessional verbonden: in de eindopdracht van een volgende student. Wij bouwen aan een learning community!

Aandachtspunten<p>
Cr1: Govaerts (4), Baartman (3), Ierland (2): De scores lopen uiteen. Govaerts geeft aan het project weinig innovatief te vinden en vraagt zich af of het project wel haalbaar zal zijn. Baartman mist een verwijzing naar vergelijkbare initiatieven, zijn die er niet? <p>
Cr2: Govaerts (7.5), Baartman (3.6), Ierland (3.4): De scores lopen sterk uiteen. Scores verschillen. Govaerts vindt het onvoldoende aannemelijk dat de interventie leidt tot de beoogde verandering. Baartman vindt de onderbouwing hier en daar mager. Ierland geeft aan dat het niet helemaal duidelijk is en onvoldoende beargumenteerd op welke wijze het plan breder toepasbaar zou kunnen zijn. <p>
Cr3: Govaerts (7.5), Baartman (2.6), Ierland (4): De scores lopen sterk uiteen. Scores verschillen erg. Govaerts mist hier de uitwerking van de implementatie, de stappen die nodig zijn om het plan blijvend te integreren in de opleiding en erna (leven lang leren), succescriteria en (doorlopende) evaluatiepunten. Baartman mist evaluatiecriteria en vindt het erg beknopt. Ierland sluit daar bij aan en vindt de ontwikkeling van de digitale leeromgeving onvoldoende uitgebreid. <p>
Cr4: Govaerts (2), Baartman (5.9), Ierland (1.5): De scores lopen sterk uiteen. Baartman vraagt zich af of iemand die UHD wil worden wel past bij Comenius.<p>
<<ximg width:100% "/Foto's/2021TF 197 Berendsen.png">>

Belang: Geen

Samenvatting<p>
Door het groeiend aantal Masterthesis studenten, zowel on campus alsook online, de blijvende noodzaak om studenten individueel te begeleiden, en de groeiende aandacht om objectief en accuraat om te gaan met onderzoeksdata, is er behoefte aan een efficiënte en doeltreffende manier om snel en accuraat te screenen op veelgemaakte fouten tijdens het data-analyse proces van het afstudeeronderzoek, om studenten vervolgens succesvoller te laten afstuderen.<p>
Wij stellen een nieuwe didactische werkvorm voor om studenten tijdens het afstudeeronderzoek elkaars data-analyse proces actief te laten reviewen door een ‘real-life’ situatie na te bootsen (‘Action-Learning- Environment’). Een nieuw te ontwikkelen systeem zal alle fasen van het data-analyse proces omvatten; van data cleaning, data-analyse, interpretatie van de resultaten tot aan data opslag, met daarbij aandacht voor de FAIR data principes. Binnen het systeem incorporeren wij spelelementen (‘Gamified design’) en gestructureerde feedback en hints zodat studenten veelgemaakte fouten kunnen opsporen (‘Error-Hunting’) in de data-analyse van medestudenten. Hierdoor krijgen studenten tijdens hun hele afstudeeronderzoek méér en betere peer-feedback, specifiek gericht op relevante en essentiële knelpunten voor de data-analyse.<p>
Dit project zal leiden tot een nieuwe didactische werkvorm waarmee studenten m.b.v. gamificatie succesvoller afstuderen, een betere kwaliteit van het data-analyse proces alsook het gehele afstudeeronderzoek en docenten met nieuwe skills om studenten te activeren en een kritische houding aan te leren. Indien zowel de werkvorm alsook het systeem succesvol blijken dan kunnen deze ook toegepast worden binnen andere afstudeeronderzoeken aan de Wageningen Universiteit en daarbuiten.

Aandachtspunten<p>

Cr1: Wessel (2), Koeslag-Kreunen (4.9), Herpen (5.5): De scores lopen sterk uiteen. Herpen vindt de werkvorm onvoldoende uitgewerkt en daarnaast dat het wellicht innovatief is in de context van de instelling, maar twijfelachtig of het ook breder dan dat innovatief of van toepassing is. <p>
Cr2: Wessel (2.5), Koeslag-Kreunen (4.5), Herpen (5.5): De scores lopen uiteen. Wessel geeft aan dat het gebruik van literatuur te beperkt is. Koeslag-Kreunen vindt de meerwaarde voor studenten discutabel. Herpen geeft aan dat het onvoldoende onderbouwd is met literatuur met welke focus de vernieuwing nu eigenlijk ingezet gaat worden; gamified learning, crowdsourcing, action learning environment, collective thesis development, learning communities? <p>
Cr3: Wessel (5.4), Koeslag-Kreunen (5.5), Herpen (5.5): De scores komen overeen. Wessel geeft aan dat het literatuurgebruik mager is en dat zich dat ook uit in de risicoanalyse. Koeslag-Kreunen vindt het vreemd dat in de disseminatiefase in het projectplan er slechts een heel algemene beschrijving gegeven is, terwijl in het disseminatieplan juist een heel concrete weergave is gegeven. Herpen geeft aan dat de evaluatie onvoldoende duidelijk en helder in elkaar zit, wat wordt er gemeten en waar? Daarnaast twijfelt Herpen ook aan de risico-analyse. <p>
Cr4: Wessel (3), Koeslag-Kreunen (4.9), Herpen (3.5): De scores lopen uiteen. Koeslag-Kreunen ziet een risico in het laten starten van het project in mei, omdat dan nog docenten moeten regelen een lastige opgave kan zijn. Herpen mist wat betere verwoording/uitleg over wat Comenius bij kan dragen voor de aanvrager.<p>
<<ximg width:100% "/Foto's/2021TF 243 Zweemer.png">>

Belang: geen

Samenvatting<p>

MSc studenten Bio-Pharmaceutical Sciences (BPS) moeten technische communicatievaardigheden beheersen om af te kunnen studeren, waaronder schriftelijke, grafische en mondelinge vaardigheden. Desalniettemin krijgen studenten onvoldoende onderwijs en ondersteuning tijdens deze communicatietaken, wat leidt tot studievertraging. Met de Comenius fellowship ga ik het BPS Communication Lab opzetten, waarin MSc-studenten individueel worden ondersteund door middel van peer-to-peer coaching om zich op gestructureerde wijze technische communicatievaardigheden eigen te maken.<p>
Het BPS Communication Lab stelt MSc-studenten in staat om tot zes coachingsessies per jaar te boeken. Studenten maken minimaal vier afspraken met een Communication Lab coach als onderdeel van hun onderzoekstage, waarbij studieadviseurs en begeleiders studenten actief stimuleren om deze afspraken te maken en na te komen. Op deze manier integreren we dit nieuwe initiatief in ons huidige onderwijs. Doordat de coaches vakinhoudelijke en communicatieve kennis hebben verwerven studenten zowel inhoudelijke als technische communicatieve vaardigheden. Dit ondersteunt de studenten bij het afstuderen en leert hen waardevolle vaardigheden voor hun toekomstige loopbaan. Als pionier van het MIT Communication Lab (Cambridge, VS) ben ik bij uitstek geschikt om dit project uit te voeren, en is het mijn doelstelling om het eerste Communication Lab in Europa op te richten. De impact van deze innovatie op de kwaliteit van communicatieopdrachten en de duur van de afstudeertijd wordt uitgebreid geëvalueerd om het programma voor de volgende jaren te verbeteren. Na voltooiing van deze pilotfase is het mijn vaste voornemen om dit programma te delen met de academische gemeenschap en verder te ontwikkelen met ondersteuning van een opvolgende beurs.

Aandachtspunten<p>
Cr1: Wessel (7), Govaerts (5.4), Pool (4.5): De scores lopen sterk uiteen. Wessel vraagt zich af of dit wel innovatief is; coaching gebeurt immers al. Govaerts sluit hierbij aan. <p>
Cr2: Wessel (3), Govaerts (5.1), Pool (3.5): De scores lopen uiteen. Govaerts geeft aan dat het onderliggende probleem (bij de docenten) niet wordt opgelost door de voorgestelde interventie; waarom zou je dan de docenten niet juist trainen? Pool geeft aan dat vanwege het onderwerp en de kadering, de wens om studenten skills mee te geven voor een leven lang leren niet opgaat, de meeste schrijven immers geen theses meer na hun studie. <p>
Cr3: Wessel (5), Govaerts (5), Pool (4.5): De scores komen redelijk overeen. Wessel vindt het disseminatieplan ontoereikend. Govaerts vindt dat zowel de risicoanalyse als de toepasbaarheid van het onderzoek op het geïdentificeerde probleem matig. Pool vindt de evaluatie matig, zeker met mogelijke risico’s inbegrepen. <p>
Cr4: Wessel (3.5), Govaerts (3.2), Pool (3.5): De scores lopen uiteen. Wessel geeft aan dat de aanvrager wel voldoet, maar er niet uitspringt.
<<ximg width:100% "/Foto's/2021TF 251 Altangerel.png">>

Belang: geen

Samenvatting<p>
Thesis writing is the culmination of most bachelor's programs in Dutch universities. For the Bachelor of Economics and Bachelor of Economics and Business Economics programs at Tilburg University, thesis writing is an important step towards achieving the program learning outcomes. The thesis component constitutes a 12 ECTS course for all bachelor’s students. Apart from a few deadlines, students have full freedom in structuring their work and time. Thus, thesis writing requires a high level of self-regulation. Lack of the latter frequently contribute to undue stress during thesis writing and failure of students in achieving the objectives.<p>
With the help of the Comenius Teaching Fellowship we would like to implement a guided self- regulation component as part of the thesis writing curriculum. We aim to help students guide themselves through the recursive process of research, identify their needs, recognize biases, reduce stress, and improve their performance. The innovation in this project is the design of a guided self-reflection activity that is aimed at the challenges of thesis writing. We go beyond self- reflection in that our approach is based on a leading theory of self-regulated learning (SRL). Helping students develop self-enabling beliefs and self-regulation capability has been shown repeatedly to improve academic outcomes. We expect that competence in self-regulated learning skills would not only improve student’s experience and performance, but support them in their future career going forward. Furthermore, we hope to contribute to developing self-regulated learning programs, which could be particularly useful in light of the recent increase in forced distance learning.

Aandachtspunten<p>
Cr1: Herpen (3.5), Ierland (7.4), Pool (4.8): Scores lopen uiteen. Herpen vindt het onduidelijk op welke wijze dit innovatief is. Ierland en Pool sluiten hier bij aan. <p>
Cr2: Herpen (1.5), Ierland (7.7), Pool (4.5): Scores lopen sterk uiteen. Ierland vindt het onduidelijk hoe de methode (document voor zelfregulatie) de studenten kan helpen, Pool sluit hier bij aan. <p>
Cr3: Herpen (1.5), Ierland (7.3), Pool (4.5): Scores lopen sterk uiteen. Ierland mist een ondervanging voor het risico van uitloop en de overkoepelende evaluatie die beantwoord hoe het uiteindelijke doel behaald wordt. <p>
Cr4: Herpen (2), Ierland (4), Pool (4): Scores lopen uiteen. Herpen en Ierland geven aan dat het onduidelijk is wat Comenius kan bijdragen voor de aanvrager.
<<ximg width:100% "/Foto's/2021TF 269 Abitzsch.png">>

Belang:

Samenvatting<p>
<<ximg width:% "/Foto's/2021TF 269 Samenvatting.png">>


Aandachtspunten<p>
Cr1: Koeslag-Kreunen (6), Herpen (1.5), Baartman (6.9): Scores lopen sterk uiteen. Koeslag-Kreunen twijfelt aan de mate van innovatie. Herpen vindt het een innovatief voorstel. Baartman ziet noch de vernieuwing noch wat nu eigenlijk de oplossing of verbetering is. <p>
Cr2: Koeslag-Kreunen (5), Herpen (3.5), Baartman (7): Scores lopen uiteen. Herpen mist theoretische onderbouwing. Baartman mist hoe en waarom de voorgestelde interventies de kloof tussen theorie en praktijk zouden dichten. <p>
Cr3: Koeslag-Kreunen (4), Herpen (5), Baartman (6): Scores lopen uiteen. Herpen vraagt zich af waarom er op het einde geen disseminatie meer plaatsvindt. Baartman vraagt zich af wat het verschil is tussen de ontwikkeling van de producten binnen de pilot en binnen de Comenius aanvraag en hoe die verschillende producten bijdragen aan het dichten van de kloof tussen theorie en praktijk. <p>
Cr4: Koeslag-Kreunen (4), Herpen (1), Baartman (5.9): Scores lopen sterk uiteen. Herpen heeft alleen maar positieve punten. Baartman vindt dat het project niet aansluit bij de visie op onderwijs van de aanvrager, daar had dan de kloof praktijk-theorie in moeten voorkomen.
De cirkel laat zien hoe het organisch afval en het koolstofdioxide van de
astronauten verwerkt worden tot zuurstof en voedsel. De alg spirulina blijkt voor zo’n verre missie even noodzakelijk als een kloppend hart. ‘De kleine cirkel van nitri catie en fotosynthese met behulp van algen en bacteriën hebben we binnenkort onder de knie. En dan kunnen we planten gaan integreren in deze kringloop.’ Het team van Gòdia Casablancas richt zich om te beginnen op sla, tarwe en bieten. Als je wilt dat zij veilig op reis kunnen, moet je niet alleen een ecosysteem bouwen, maar het ook volledig kunnen controleren.’ Melissa creëert een universum van alg, bacteriën, plant en mens. Ja, Melissa herinnert ons aan onze diepe verstrengeling met de aarde, maar ze maakt die verstrengeling ook kleiner. Ze reduceert haar tot een reisversie van onze biosfeer. Terwijl we langs de verschillende onderzoeksruimtes lopen somt hij de
projecten op die met de kennis van Melissa tot stand kwamen op aarde. Waterzuivering in België. Algenkweek in Congo. Filteren van urine in Franse hotels. Jezelf de ruimte inslingeren, een toekomstige droom. Het heelal is het grootste mysterie. Ooit was Mars een mensvriendelijke wereld, nu een roestige, mensvijandige planeet. Gaat het met de aarde net zo?

Post-Truth: objectieve feiten hebben minder invloed op het vormen van de publieke opinie dan een beroep op emoties en persoonlijke opvattingen. Denk aan de Brexit campagne en aan de Amerikaanse verkiezingen. Verspreiding van fake nieuws lijkt op nazi propaganda. Het eeuwige conflict tussen macht en waarheid. Orwell in 1984: de macht drukt zijn interpretatie van gebeurtenissen, van de wereld, op de geesten van de mensen. Maar het Westen, de bijbel: waarheid is een doel in zichzelf, waarheid maakt je vrij. Waarheid geeft vertrouwen en andersom. Waarheid als de publieke ruimte die we allen bewonen. Respect voor de waarheid vergt nederigheid: sommige feiten zijn waar, ook al stroken ze niet mijn opvattingen.<p>
Op het internet kun je waarheid niet van leugen onderscheiden. C.P. Scott: comment is free but facts are sacred. Mensen halen nu hun feiten van de ongecontroleerde sociale media. Confirmation bias. <tgeel>Dit is niet nieuw, geldt ook voor kranten</tgeel>. Aandacht is selectief, we letten meer op zaken die vrees aanjagen. Marx, Nietzsche en Freud hebben het complotdenken bevorderd. Waarheid als masker van macht. Verder hebben we het postmodernisme. De opvatting dat er een fundamenteel verschil bestaat tussen de realiteit en de <tgeel>manier</tgeel> waarop wij erover spreken en denken. Geldt ook voor de wetenschap. Kuhn: the structure of scientific revolutions. Realiteit is sociaal geconstrueerd. <tgeel>Dat zit anders, er is altijd een spanning tussen werkelijkheid en interpretatie</tgeel>. Zoals Nietzsche al zei: er zijn geen feiten, er zijn alleen interpretaties. Het postmodernisme was een diep obscure beweging. <tgeel>Het probleem is dat Sacks de radicale opvatting tot main stream opvatting verheft.</tgeel> Volslagen relativisme, aanval op de waarheid. De generatie Z, geboren na 1995, vertrouwt niemand meer. Nietzsche zag het al aankomen: als je religie vaarwel zegt, dan raak je ook de moraal kwijt. Als je de moraal weghaalt dan is er geen enkele reden meer om niet te liegen en bedriegen. Verwacht niet dat in een wereld zonder morele code de waarheid zal overleven. 
"""
Samenvatting
Kirschner, Sweller, and Clark (2006) make a general case for the effectiveness of a teaching
method—direct instruction—without reference to any context of what it is that is being taught
by whom and to whom. In so doing, they bypass what is arguably the most pressing concern
facing educators—not how to teach students but what to teach them. An argument is made
for the need to contemplate instructional methods within the broader context of instructional
goals.
Inhoud
the fact that nowhere in the article do they make any reference to what it is that a teacher might be seeking to teach and students undertaking to learn. Implicit in their presentation is the assumption that their claims about how best to teach and learn are universally applicable, irrespective of what is being taught to whom or why.
Cognition and Motivation
my argument is that the concerns of Kirschner et al., and a number of others who take a position similar to theirs, are misplaced and that the most pressing concern facing educators and challenge to educational reformers is not in fact how to teach students but rather what to teach them. In other words, whether or not they have a correct answer, Kirschner et al. do not address the most pressing question.
What do we want children to learn?
IS THERE AN ALTERNATIVE TO LEARNING BY DOING?
Meanwhile, science educators have moved increasingly to the view that the most important thing children have to learn about science is to recognize science as a way of knowing the world, one that distinguishes it from other kinds of knowing and serves as a powerful tool for understanding.
Surely a steady diet of “worked examples” cannot possibly prepare today’s students for what they will face in the 21st-century world.
INTELLECTUAL GOALS AND THE MEANS TO ACHIEVE THEM
there is a place for both direct instruction and student-directed inquiry.
good instruction is never without structure. Indeed, designing the structure of problem-based instructional activities may require the most complex and demanding instructional design of all.
My argument here, then, is not for or against any instructional method. Rather, it is an argument for the need to contemplate instructional methods within the broader context of instructional goals. It is only in this context that it can be meaningful to do so.
Research on epistemological understanding has now grown to the extent that we know in broad terms the nature of a developmental progression that occurs from childhood to adolescence and into adulthood. This evolution in levels of understanding of the nature of knowing provides a foundation, indeed the rational base, that is needed for sustained intellectual engagement and the formation of personal intellectual goals
"""
<tblauw>maandag 2021, hagel en zon, 8°</tblauw>

''Programma''
08:00 Opstaan en aankleden
10:00 Duindoorns snoeien
11:00 Koffie en via Baltus naar huis
13:00 Notitie WKO demarcatie
15:00 Camus
17:00 SVAN
18:00 Koken en eten
20:30 Nader in te vullen

{{0412 Klussen: duindoorns||cl}}
{{0412 Klussen: Naar Amsterdam||cl}}
{{0412 Bestuur: Notitie WKO demarcatie||cl}}
{{0412 Docent: Camus||cl}}
{{0412 Bestuur: SVAN||cl}}
{{0412 Klussen: tuinaarde||cl}} 
{{0412 Klussen: Koken||cl}}

09:54 Even nog de taakjes op een rijtje
10:09 Nu de duindoorns
13:49 Nu tot 15 uur WKO notitie.
15:11 OK, klaar. Nu Camus. 
16:05 Dat was versie 2 van de WKO notitie. Nu Camus.
20:56 Weer een klein dingetje verbeterd aan mijn TiddlyWiki. Nu even Netflix.
23:02 Programma goed afgewerkt! Even het programma voor morgen.
<tblauw>donderdag 2021, rustig zomerweer, 22 - 27°</tblauw>

|^08:21|Geroeid, nu aankleden en ontbijt|
|^08:49|Nu ontbijten, dan plopper|
|^10:20|Dat waren de plopper en boodschappen. Nu tanden poetsen en studeren|
|^11:04|Nu SVAN. Notulen aanpassen: handtekeningen eronder. Tot 11:30|
|^12:21|Genoeg aan gedaan. Vraag is of ik moet aangeven of de stichting bij de opheffing baten heeft. Navragen bij Kees.|
|^12:23|Nu Heijne|
|^12:57|Nu naar Egmond|
|^21:00|Weer terug. Even iets doen aan creativiteit.|
|^23:05|Kijken of we nog even wat kunnen lezen in Savoy|
<tblauw>zondag 2021, grijs, 10°</tblauw> 

|customTable|k
|^ <$checkbox field='173654' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='173708' checked=1></$checkbox>|<<ref "Ekklesia">>|
|^ <$checkbox field='173801' checked=1></$checkbox>|<<soc "Verjaardag Mercia">>|
|^ <$checkbox field='173819' checked=1></$checkbox>|<<ref "Dagboek">>|

|^08:11|Mercia 5 jaar!|
|^17:36|Gezellige verjaardag met Mercia (zie dagboek)|
|^17:41|Nu even Coen|
<tblauw>maandag 2021, vriendelijk zomerweer, 21 - 24°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen en zwemmen|
|^<$checkbox field='b' checked=1></$checkbox>|Contact Caroline Vonk|
|^<$checkbox field='c' checked=1></$checkbox>|Contact Caroline Elbers|
|^<$checkbox field='d' checked=1></$checkbox>|Bericht Noord4Us|
|^<$checkbox field='e' checked=1></$checkbox>|Onderstuk voor schoonmaken|
|^<$checkbox field='f' checked=1></$checkbox>|Onderstuk voor verven|
|^<$checkbox field='g' checked=1></$checkbox>|Zijkant Noord schoonmaken|
|^<$checkbox field='h' checked=1></$checkbox>|Zijkant Noord verven|
|^<$checkbox field='i' checked=1></$checkbox>|Borrel met Joop en Ingrid|
|^<$checkbox field='j' checked=1></$checkbox>|Dresden|

|^11:07|Nu voorkant schoonmaken|
|^14:48|OK, voorkant klaar. Nu lunch en nap.|
|^15:53|Nu even werken aan afronding assignments. Hoe gaan we dat aanpakken. Het gaat dus om een scoringsvoorschrift. Voor de #1-opdrachten is dat eigenlijk vrij simpel: het afvinklijstje met een paar caveats: onderzoeksvragen, wetenschappelijk belang, etc. Voor de #2-opdrachten geldt dat er er vooral beloningen worden uitgedeeld. We zouden een apart bestand kunnen maken met opvallende statements, om aan te geven wat het type statements is dat evt. een uitroepteken verdient. |
<tblauw>zaterdag 2021, toch weer een zonnige dag, 19 - 23°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Naar Amsterdam|
|^<$checkbox field='b' checked=1></$checkbox>|Verjaardag Sara en Franca|
|^<$checkbox field='c' checked=1></$checkbox>|Tablet installeren|
|^<$checkbox field='d' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='e' checked=1></$checkbox>|Kranten lezen|
|^<$checkbox field='f' checked=1></$checkbox>|Sacks|

|^16:41|Tablet werkt perfect! Zelfs al een stukje geschreven: <<ximg width: 50% "/Dagboek/20210612 Mijn notitie - Page 1.png">>|
<<pdf "/DD/Onderzoek/Reviews/EDUREV-D-17-00192.pdf">>
<tblauw>woensdag 2021, geregeld zon, 15 - 18°</tblauw>


|^|^06:56 |Opstaan en aankleden|
|^|^07:26 |Ontbijten en krant doorlopen|
|^ ✔|^08:00|Naar Mercia en Franca|
|^ ✔|^09:00|Oppassen op Mercia en Franca|
|^ ✔|^14:00|SVAN: geld overmaken|
|^|^13:49|Mails opruimen|
|^ ✔|^21:30|Lezen: Argus|
|^ ✔|^22:15|Studeren: Sacks|
|^ ✔|^|Roth: Joris van Casteren|
 
<tblauw>vrijdag 2021, lichtgrijs, 9°</tblauw>

| <$checkbox field='181211' checked=1></$checkbox>|<<bst "Ekklesiabestuur">>|
| <$checkbox field='181243' checked=1></$checkbox>|<<spo "Roeien">>|
| <$checkbox field='181300' checked=1></$checkbox>|<<spo "Lopen">>|
| <$checkbox field='181327' checked=1></$checkbox>|<<klu "Boodschappen">>|

|^12:36|Een ochtend geprutst, maar nu dan toch het doel bereikt! Tiddler [[$:/plugins/inmysocks/iconmenus/icon/New Journal]] bevat nu een conditionele constructie. Als de Vandaag kaart bestaat, dan navigeert het systeem daar naartoe. Als de Vandaag kaart niet bestaat, dan maakt het systeem een Vandaag kaart aan. Knap werk! |
|^12:45|Goed om even een backup te maken.|
|^12:50|We kunnen nu ook rekenen met de ~TiddlyFormula plugin. Zet de som tussen mushroom haakjes: (= 2*3 =)|
|^12:51|Je kunt ook strings aan elkaar plakken, heel handig: (= "abc" & " de kat gaat mee" =)|
|^12:55|Nu de overige afleveringen van Babylon Berlin hier neerzetten.|
|^16:25|OK, nu even rusten, om half zes zoomen met ekklesiabestuur.|
<tblauw>dinsdag 2021, buiïge regen, 14°</tblauw>

|^08:01|Telefoon Anne laadt niet op. Nu roeien|
|^09:04|Nu ontbijten, daarna stofzuigen en moppen|
|^10:10|Nu stofzuigen en moppen|
|^13:32|Het enige monitoring systeem dat werkt zijn de hokjes|
| <$checkbox field='a' checked=1></$checkbox>|10 blz Kruispunt|
| <$checkbox field='b' checked=1></$checkbox>|[[Verzekering Lekke Band Italië]]|
| <$checkbox field='c' checked=1></$checkbox>|appje naar Mirjam en Alex|
| <$checkbox field='d' checked=1></$checkbox>|vakantiedag [[zondag 19 september 2021]]|
<tblauw>zondag 2021, zonnig, 18 - 27°</tblauw>

|^07:22|Opstaan!|
|^09:08|Al een wandelingetje gemaakt naar Loretello. Nu ontbijten|
|^10:27|Uitstapjes uitzoeken|
|^11:47|Nu een uur lezen|
|^16:06|Nu lezen tot we weggaan|
<<ximg width:100% "/Foto's/2021TF 320 Carr.png">>

Belang: geen

Samenvating<p>
We hebben een verandering in de professionele cultuur van wetenschappers in de life sciences nodig. Het verbeteren van de reproduceerbaarheid van onderzoek heeft er baat bij dat jonge wetenschappers vaardig worden in het managen en delen van hun data en in het communiceren over hun onderzoek [1]. Het is voor het merendeel van de wetenschappers nog steeds moeilijk om deze belangrijke taken goed uit te voeren. [2,3]. De volgende generatie onderzoekers beginnen hun carrière in een snel veranderende sector, waar publieke financiering niet alleen wetenschappelijke publicaties evalueert, maar waarin ook een bredere set aan bijdragen en maatschappelijke impact worden meegenomen [4].<p>
De uitdaging is dus om onze master studenten te motiveren om te reflecteren, bij te dragen aan discussies en actief deel te nemen aan het vormgeven van een nieuwe rol voor wetenschappers in de maatschappij - en ondertussen ook de volgende stap in hun carrière te zetten.<p>
Ons voorstel is om een nieuwe skills course te ontwikkelen die studenten uitdaagt om gedurende hun hele masterstudie te reflecteren op hun eigen professionele competenties. Studenten zullen werken in teams met een mentor. Door de aanpak van deze community-learning projecten [5] zullen studenten uitdagingen aangaan die ze ook in hun professionele leven zullen tegenkomen. Het vak zal een leerportfolio opleveren, waarmee studenten hun professionele ontwikkeling en arbeidsmarkt voorbereidingen duidelijk aantonen. Dit unieke vak zal onze studenten in staat stellen een sterk begin te maken aan hun professionele leven en tegelijkertijd uit te lokken dat ze ‘bottom- up’ de volgende generatie wetenschappers in de life sciences zullen verbeteren<p>

Aandachtspunten<p>
Cr1: Wessel (6), Koeslag-Kreunen (2), Pool (5.4): De scores lopen sterk uiteen. Wessel en Pool vinden het project niet innovatief genoeg. Koeslag-Kreunen vindt het wel innovatief vanwege het leren in een groep. <p>
Cr2: Wessel (3.5), Koeslag-Kreunen (2.9), Pool (5.4): De scores lopen uiteen. Wessel mist theoretische onderbouwing en mist of het initiatief ook op ander plekken interessant zou zijn. Pool vindt het niet innovatief en vernieuwend genoeg. <p>
Cr3: Wessel (2.5), Koeslag-Kreunen (5.5), Pool (5.4): De scores lopen uiteen. Wessel vindt het disseminatieplan wat aan de korte kant, maar het gehele rapport goed geschreven. Koeslag-Kreunen vindt het risico voor overvraging bij de student onvoldoende gecounterd en de evaluatie en disseminatie zijn niet uitgebreid genoeg. Pool vindt de verbinding tussen de drie modules onduidelijk (figuur 2). <p>
Cr4: Wessel (2), Koeslag-Kreunen (4), Pool (4.5): De scores lopen uiteen. Pool mist een student en een professional in het team.

//Deep altruism//: het onzelfzuchtig nastreven van het welzijn van anderen in de verre toekomst, duizend jaar en verder. Leren nadenken op een andere tijdschaal. De ethiek van een landing op Mars. Gaan de Marslanders zich afkeren van de aarde? De 10.000 Year Clock. We leven in 02021. Wordt gebouwd in een berg in het westen van Texas. Onduidelijk wanneer hij klaar is. Met de klok wil de stichting ons laten nadenken over de komende 10 millenia. Verschillende tempolagen, de korte en de lange termijn. Hoe verder je uitzoomt, hoe meer verbindiingen je ziet. Extreem uitzoomen geeft een //warm, fuzzy feeling//. De eeuwigheid in de seconde, dat is het lange nu. 
Mijn universitaire studie was een glorieuze ervaring. Een plaats waar mensen met respect luisteren naar tegengestelde meningen. Integriteit, eerlijkheid en liefde voor de waarheid. Jordan Peterson kreeg geen visiting scholarship omdat hij met iemand met een verkeerd t-shirt op de foto stond. <tgeel>Er was veel meer met die man aan de hand. Dat moet ik nog uitzoeken.</tgeel>

Nieuwe betekenis voor het begrip //safe space//: een plek waar je je kunt terugtrekken, als je niet meer tegen andere opvattingen kunt. //No-platforming//: geen ruimte voor tegenstemmen. Universiteiten horen bastions te zijn van de vrijheid van denken en onderzoek. <tgeel>Praesidium libertatis</tgeel>. Al deze veranderingen begonnen in 2013 toen de Generatie Z (geboren na 1995) aan de studie begon. Na jaren van niet oordelen, moreel relativisme en expressief individualisme hebben we nu het omgekeerde, de nieuwe intolerantie. Het //Journal of Controversial Ideas// waar auteurs anoniem publiceren. 

Het geval van Socrate is een speciaal geval, zie het boek van I.F. Stone. 
De aanval op de academische vrijheid komt door het verlies van waarheid als waarde. En dat komt door de postmodernisten. De universiteit is niet langer een gemeenschap van geleerden op zoek naar de waarheid maar een machtsfactor. Er zijn alleen nog onderdrukkers en slachtoffers, morele blackmail! Dat gaat  heel gemakkelijk, zie Ed Husain's boek The Islamist. Nietzsche waarschuwde ons al: als de waarheid sterft is er alleen nog de wil tot macht. De eerste plek waar dat zichtbaar wordt is de universiteit. De universiteit moet de bewaker zijn van het open debat, het hoffelijke argument, het beschaafde spreken, en het respectvol luisteren. Politieke vrijheid moet worden beschermd door het verdedigen van intellectuele vrijheid. 

Audi et altermen partem! 
Brink, C. (2007). What are universities for? Unpublished report. Newcastle: University of Newcastle. 

!!!Waarom zijn universiteiten bezig met onderzoek en onderwijs?
!!! Waar komen de universiteiten vandaan?

* Start universiteiten in de 13e eeuw: liberal arts en teaching the professions
* Liberal arts for the free citizen: grammar, logic, rhetoric, geometry, arithmetic, astronomy, music, medicine and architecture
* Faculties of medicine, law and theology as postgraduate centres of excellence. Liberal arts as the foundation. 
* Oxford en Cambridge deden niet mee aan de industriële revolutie. Geen ingangseisen, diploma zonder examens. 
* Spanning met de behoeften van de samenleving. 
* Von Humboldt startte met het idee van een universiteit als onderzoeksinstituut.
* Mooi citaat van Cardinal Newman, lectures in Dublin in 1852

<<<
… the man who has learned to think and to reason and to compare
and to discriminate and to analyse , who has refined his taste , and
ormed his judgement , and sharpened his mental vision , will not indeed
at once be a lawyer , or a pleader , or an orator , or a statesman , or a
physician , … or an engineer , or a chemist , or a geologist , or an
antiquarian , but he will be placed in that state of intellect in which he
can take up any one of the sciences or callings I have referred to …
with an ease , a grace , a versatility , and a success , to which another is
a stranger .
<<<

!!! Waar staan de universiteiten nu?

* Van industriële economie naar kenniseconomie
* Kennis is de core business van universiteiten dus ze staan midden in deze verandering. 
* Universiteiten staan midden in de publieke belangstelling. 
** Student fees
** Lijstjes
** Agenda's
* De policy makers van nu zijn allemaal baby boomers, kregen hun educatie rond de jaren 70, tijd ven expansie en grote tegenstellingen. 
* Oneindige reeks eeuwig durende debatten, o.a. over onderwijs versus onderzoek. 
* Terug naar Plato en Aristoteles
* Up en down zijn inderdaad tegenstelde richtingen. Maar Aristoteles wijst niet omlaag maar naar de wereld om hem heen. 
!!! Mijn ideeën

* Verticaal en horizontaal zijn niet tegengesteld maar orthogonaal. 
* Denk aan supply en demand
* Supply: liberal arts in al zijn vormen. World rankings (impact factoren, publicatielijstjes)
* Demand: regional engagement, widening participation, community service. 
* Tegenstellingen of elkaar versterkende feedback loops?
* Onderwijs en onderzoek
!!! Kortom
* Universiteiten hebben een aabodkant en een vraagkant. 
* Aanbod en vraag van en naar kennis zitten in een feedback loop. 
!!! Waar zijn universiteiten voor?
* De zoektocht naar kennis is zowel een doel in zichzelf als een middel tot en doel. 
* Knowledge for life!
<tblauw>dinsdag 2021, meer zon dan wolken, 9°</tblauw>

||tijd|actie|
|^ ✔|^07:00|[[Sportief: Roeien]]|
|^|^08:00|Ontbijten|
|^ ✔|^09:00|[[Klussen: Stofzuigen]]|
|^ ✔|^|[[Klussen: Kachel schoonmaken]]|
|^ ✔|^10:30|Sociaal: Eva Draaisma|
|^ ✔|^11:00|[[Klussen: Moppen]]|
|^|^12:00|Lunchen|
|^ ✔|^12:45|Klussen: Naar de tandarts|
|^ ✔|^16:00|Klussen: Todolist|
|^ ✔|^17:29|[[Docent: Youtube fragmenten aan elkaar]]|
|^ ✔|^20:00|Docent: La Peste fragmenten kiezen|
|^ ✔|^20:30|[[Docent: Berichten naar Riekeld en Tineke Teunen]]|
<tblauw>vrijdag 2021, zonnige perioden en droog, 20 - 25°</tblauw>

|^06:05|Even de plannen bijstellen|
|^08:54|Nu ontbijten|
|^14:08|Dat was Harry. Wel even werken aan Docent en Reflectie. Nu een uur Heemstra|
|^16:35|OK twee Heemstra's gedaan. Nu dagboekfragmenten en piano spelen.|
|^23:22|OK. Nu nog even Roth.|
<tblauw>maandag 2021, grijs, 20°</tblauw> 

|customTable|k
|^ <$checkbox field='74419' checked=1></$checkbox>|<<adv "COBEX">>|
|^ <$checkbox field='100005' checked=1></$checkbox>|<<klu "Lamp ophangen">>|
|^ <$checkbox field='100037' checked=1></$checkbox>|<<soc "briefje aan Berber">>|
|^ <$checkbox field='100109' checked=1></$checkbox>|<<klu "Dia's scannen">>|
|^ <$checkbox field='100530' checked=1></$checkbox>|<<klu "vaste lijn opzeggen">>|

|^07:43|Nu opstaan, 9 uur COBEX|
|^10:01|Even pauze met de COBEX. Plan [[Lezing Muziek]] opfrissen|
|^10:06|Even de vaste lijn opzeggen|
|^13:17|OK, nu hebben we definitief een oplossing voor de Workflowy wens. De inhoudsopgave als todo lijst: Zie [[Workflowy]]. De inhoudsopgave in het linkerpaneel en de tekst in het rechterpaneel: zie [[Workflowy 1]]|
<tblauw>donderdag 2022, mist en een beetje zon, 2 - 6°</tblauw> 

|customTable|k
|^ <$checkbox field='213713' checked=1></$checkbox>|<<soc "Ada en Els">>|
|^ <$checkbox field='213731' checked=1></$checkbox>|<<soc "Eten bij Gerrie">>|
|^ <$checkbox field='223605' checked=1></$checkbox>|<<bes "datum bestuursvergadering">>|

|^21:36|Nu nog de voicemail checken en een app naar bestuur en team|
<tblauw>dinsdag 2021, bewolkt en regen, 20 - 23°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen, zwemmen|
|^<$checkbox field='b' checked=1></$checkbox>|Bas Heijne|
|^<$checkbox field='c' checked=1></$checkbox>|Fiets nagaan|
|^<$checkbox field='d' checked=1></$checkbox>|Kranenburgh|
|^<$checkbox field='e' checked=1></$checkbox>|Fiets naar fietsenmaker|
|^<$checkbox field='f' checked=1></$checkbox>|Naar Amsterdam|
|^<$checkbox field='g' checked=1></$checkbox>|Dresden|

|^11:43|Even een stukje Bas Heijne |
|^12:12|Dat schrijven gaat echt prima! Nu even de fiets nagaan.|
|^16:36|OK, weer in Amsterdam. Mooie tentoonstelling gezien in Museum Kranenburgh in Bergen. Geestige tekeningen van illustrator The Tjongh King. Ook erg leuk voor Mercia en Franca. En een mooie tentoonstelling over Die Brücke, een groep expressionistische schilders in Duitsland van 1905 tot 1925. Zie https://www.kranenburgh.nl/tentoonstelling/94/kunstenaars-van-die-brucke. Zie ook dit prachtige naakt van Otto Muller: |
| |<<ximg width:% "/Cultuur/Screenshot_2021-07-13-16-47-37-854.jpeg">>|
|^16:44|Nu even 10 blz. Dresden|
<tblauw>zondag 2021, zonnig, 11 - 18°</tblauw>

|^06:26|Nu nog even rusten|
<tblauw>zaterdag 2021, pittige buien, veel wind, 8°</tblauw><p>
""" 02:51 Even een kleine notitie om gezien of alles goed werkt.
08:17 Nu aankleden en ontbijten. Daarna boodschappen.
11:30 Toch nog even naar de lettertypes kijken. 
12:26 Gelukt, zowel op de Surface als op de telefoon!
12:36 Nu naar Sara. Nog geen contact met Cathrien.
<tblauw>donderdag 2021, Hemelvaartsdag, zonnige start, 17 - 19°</tblauw>


|^ ✔|^07:51 |Beginnen met roeien|
|^ ✔|^09:53 |Nu tafel afruimen. Al weer drie mooie stukken in Argus gelezen|
|^ ✔|^11:00|Bezoek Cathrien en gezin|
|^ ✔|^16:00|Sportief: Lopen|
|^ ✔|^18:00|Studeren: Sacks, 4. The Fragile Family|
|^|^|SVAN: geld overmaken|
|^|^|Cultuur: Radetzkymars tv- serie|

 
<tblauw>zaterdag 2021, vanuit het westen meer zon, 11 - 14°</tblauw>

|^09:04|Ontbijten met Kees Boonman|
|^13:16|Bezoek aan namen monument. Heel indrukwekkend.|
<tblauw>woensdag 2021, zon en wolken, enkel buitje, 14°</tblauw>

|^07:18|ontbijten|
|^08:19|nu roeien|
| <$checkbox field='a' checked=1></$checkbox>|roeien|
| <$checkbox field='b' checked=1></$checkbox>|AppImage|
| <$checkbox field='c' checked=1></$checkbox>|Belangen NWO|
|^14:42|Even een vakantiedag doen.|
|^18:41|Oppassen ging goed. Mercia begint steeds beter te praten. Ze zei op een bepaald moment:  "Stel, ...". Ik vond het heel opmerkelijk dat ze zo'n zin kon formuleren. Net als de zin, bij het weggaan, toen Anne zei dat we nu echt weg moesten: "Ander vergeet de pont jullie!" Ook een bijzondere zin. Mercia heeft echt een heel goed verstand.|
|^18:46|Nog even een begin met maandag 20 september 2021, eerste dag in Vicenza|
<tblauw>maandag 2021, zon en warm, 28°</tblauw>

|^12:47|Vanochtend gelopen, geplankt, gezwommen, gekeken in Nidastore en boodschappen gedaan in San Lorenzo in Campo|
|^12:48|Nu lezen|
|^22:56|Weer een prachtige dag. Vanmiddag Corinaldo bezocht. Interview met staatssecretaris Paul Blokhuis in de NRC ontroerend. Ook over het plotselinge overlijden van zijn 18-jarige dochter Julia|
Het Vliegenbos. Er broeden een ijsvogel en een buizerd, er woont een vos. Het is er behoorlijk donker, geeft een aangenaam gevoel van ruimte. Weg van de dagen vol licht en haast. Ik hoor hetzelfde anders. Het begin van een kosmologisch bewustzijn. 

Sociale en politieke zaken zijn complex en hebben veel kanten. <tgeel>Precies dat vergeet Sacks zelf geregeld!</tgeel> Als je alleen maar met modder of stenen gooit, dan kom je niet ver. Verontwaardiging brengt geen verandering. David Brooks in NYT: wokeness brengt geen verandering teweeg. Het is expressief maar niet practisch. Het gaat om de vraag of politiek ruimte heeft voor ambiguïteit en complexiteit. Letten we op de zaken die ons verenigen of op de zaken die ons cheiden? <p>
In de Bijbel argumenteren Abraham, Mozes, Jeremia, en Job allen uitgebreid met God. Dat is typisch voor Joden, zij zijn altijd aan het argumenteren. Een alternatief voor de wet van Aristoteles: of p, of niet-p. De waarheid is geen alles of niets zaak. Elke steen is deel van het dispuut, en het dispuut is belangrijker dan de uitkomst. <p>
Populisme en "wokeness" zijn binair, extreem. Populisme is de politiek van de woede. De overtuiging dat weinigen heel veel verdienen en velen achteruit gaan. Je land wordt je afgenomen. Verwerping van de huidige politieke en culturele elites. Ressentiment tegen het establishment, de belofte van sterke leiders die het volk teruggeven wat hen is afgenomen.<p>
Mooie uitleg van Numeri 16: Korach, Datham en Abiram. Een dispuut dat niet was opgezet voor de goede zaak. Het ging niet om de waarheid maar om de overwinning. Het kenmerk van populistische politiek: claimen dat jij alleen het volk vertegenwoordigt, andere stemmen illegaal verklaren. Geldt ook voor wokeness. Ook op de universiteiten: het einde van de academische vrijheid. <tgeel>Hier is Sacks zelf weer een alles-of-niets argument aan het opzetten.</tgeel> In de Joodse traditie worden tegenstemmen niet tot zwijgen gebracht maar gewaardeerd. Ook in de huidige staat Israël <tgeel>(sic)</tgeel>. Het boek Job gaat niet over het heerlijk van Job maar over zijn recht van tegenspreken. Job als de eerste dissident (William Safire).  Vervang nooit waarheid door macht.
<tblauw>woensdag 2021, buien, zon, noordenwind, 9°</tblauw>

||tijd|actie|
|^|^07:30|Ontbijten|
| ✔|^08:15|Klussen: Naar Mercia en Franca|
|^ ✔|^09:00|Sociaal: Oppassen op Mercia en Franca|
|^&#x2714;|^09:15|Sociaal: [[Linkje naar Eva Draaisma]]|
|^&#x2714;|^12:00|Sociaal: Mercia van school halen|
|^&#x2714;|^13:16|Klussen: Erfpacht betalen|
|^&#x2714;|^14:16 |Klussen: Mails op 0|
|^&#x2714;|^16:00|Adviseur: Evaluatie USO|
|✔|^20:30|Reflectie: [[Torfs: De kerk is fantastisch]]|
|^&#x2714;|^|Klussen: Raymond betalen|
|^|^|Harry|
|^|^|Winnie de Poeh|
<tblauw>zaterdag 2021, wolken en zonnige perioden, 20 - 25°</tblauw>

|^07:56|Nu eerst roeien, daarna aankleden en ontbijten, daarna Deen|
|^10:02|Ontbijtboel opruimen, afval afvoeren, boodschappen en lopen|
|^12:48|Wandelen tweede vakantieweek, tot 13:30. Daarna SVAN|
|^14:21|Nu een 😴|
|^15:11|Nu Heemstra, twee hoofdstukken|
|^16:01|Nu de SVAN brief versturen|
<tblauw>dinsdag 2021, grijs, 9°</tblauw> 

|customTable|k
|^ <$checkbox field='45822' checked=1></$checkbox>|<<adv "scriptieprijzen: klaarzetten">>|
|^ <$checkbox field='50527' checked=1></$checkbox>|<<adv "B these [[Tan]]">>|
|^ <$checkbox field='50546' checked=1></$checkbox>|<<adv "B these [[Van Leeuwen]]">>|
|^ <$checkbox field='50614' checked=1></$checkbox>|<<adv "B these [[Heinmueller]]">>|
|^ <$checkbox field='50651' checked=1></$checkbox>|<<adv "M these [[De Ridder]]">>|
|^ <$checkbox field='50843' checked=1></$checkbox>|<<adv "M these [[Mocking]]">>|
|^ <$checkbox field='50906' checked=1></$checkbox>|<<adv "M these [[Vierling]]">>|
|^ <$checkbox field='50932' checked=1></$checkbox>|<<adv "M these [[Huinen]]">>|
|^ <$checkbox field='115842' checked=1></$checkbox>|<<adv "[[Belonging@UU – Diversity and inclusion beyond the numbers]]">>|
|^ <$checkbox field='115929' checked=1></$checkbox>|<<adv "[[SENSE: Sustainable and Equitable North-South Collaboration in Education]]">>|
|^ <$checkbox field='115942' checked=1></$checkbox>|<<adv "[[UU Open Source Investigations Lab (OSINT Lab)]]">>|
|^ <$checkbox field='120027' checked=1></$checkbox>|<<adv "[[An Ecosystem to Educate Leaders of Change (EELOC)]]">>|
|^ <$checkbox field='120058' checked=1></$checkbox>|<<adv "[[Get started and keep going with SoTL!]]">>|
|^ <$checkbox field='134930' checked=1></$checkbox>|<<soc "Kerstboom halen voor in de hal">>|
|^ <$checkbox field='135018' checked=1></$checkbox>|<<soc "data God en wij">>|
|^ <$checkbox field='135041' checked=1></$checkbox>|<<adv "concept uitspraken COBEX">>|
|^ <$checkbox field='135111' checked=1></$checkbox>|<<bes "Coen Zuidema">>|

|^05:00|materiaal scriptieprijzen klaarzetten|
|^05:54|intussen bezig met de derde b these|
|^06:18|Dat gaat mooi snel met die management samenvattingen. Nu de master theses|
|^06:48|Zo dadelijk roeien|
|^10:17|Nu verder met Mocking|
|^10:39|Nu Vierling|
|^10:54|Koffie en Huinen|
|^11:32|Dus: <br> De Ridder 5 5 5 1 16<br>Mocking 5 5 4 1 15<br>Vierling 3 3 3 2 11<br>Huinen 4 5 3 1 13|
|^11:54|Klaar. Nu het werk voor Utrecht in kaart brengen. |
|^12:08|Beginnen met de eerste|
|^13:48|Kerstboom gehaald voor de hal. Nu tweede aanvraag.|
|^15:03|Nu eerst de data voor God en wij: wo 15, do 16, ma 20, di 21, wo 22|
|^15:14|Nu aanvraag 2, tot 15:30|
|^17:05|Nu aanvraag 3, tot 17:30|
|^17:57|Nu nog naar de COBEX stukken kijken|

Criteria:
Maatschappelijke relevantie
Vakrelevantie
Leesbaarheid
Diversiteit
<tblauw>vrijdag 2022, °</tblauw> 

|customTable|k
|^ <$checkbox field='165128' checked=1></$checkbox>|<<soc "Harry">>|
|^ <$checkbox field='165137' checked=1></$checkbox>|<<klu "Dia's">>|
|^ <$checkbox field='165149' checked=1></$checkbox>|<<soc "Petra">>|
|^ <$checkbox field='165157' checked=1></$checkbox>|<<klu "Smeg">>|

|^16:52|Smeg: mail opzoeken|
<tblauw>woensdag 2021, bewolkt maar vermoedelijk droog, 19-23°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Coronatest|
|^<$checkbox field='b' checked=1></$checkbox>|Papier naar container|
|^<$checkbox field='c' checked=1></$checkbox>|10 blz Bas Heijne|
|^<$checkbox field='d' checked=1></$checkbox>|10 blz. Dresden|
|^<$checkbox field='e' checked=1></$checkbox>|Boodschappen|
|^<$checkbox field='f' checked=1></$checkbox>|Artikel over Gombrich|
|^<$checkbox field='g' checked=1></$checkbox>|Shortcuts voor EditorToolbar items|
|^<$checkbox field='h' checked=1></$checkbox>|Rondje lopen|

|^08:28|Even de dokter bellen ivm corona|
|^10:08|Om 13 uur coronatest op het Buikslotermeerplein|
|^10:19|Even muziek Uitgeleid voor Anne uitprinten|
|^10:22|Nu eerst Dresden|
|^14:16|Nu nap|
|^16:05|Hoe voeren we een shortcut in in TiddlyWiki?|
|^16:11|Wat moet gedaan worden na het typen van bijv. ctrl-alt-r: Een regel toevoegen zoals hierboven aangegeven. Hoe doen we dat nu: klikken op editor-toolbar icon met de horizontale streepjes. Eigenlijk weet ik dat al niet meer, erg! Dat proberen terug te vinden en in tiddler zetten. |
|^16:57|Hij doet het!!! Nu nog dezelfde procedure voor Check. |
|^17:09|Dat is heel snel gelukt!! Nu nog even een kaart aanmaken met de procedure erop|
|^22:29|Ongelooflijk, dat dit nog steeds zo goed werkt. Nu nog even 10 blz. Heijne proberen|
<tblauw>maandag 2021, weer een zonnige dag, 24 - 29°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Naar de VU|
|^<$checkbox field='b' checked=1></$checkbox>|Promotie voorzitten|
|^<$checkbox field='c' checked=1></$checkbox>|Sacks: Two ways of arguing|
|^<$checkbox field='d' checked=1></$checkbox>|Sacks: Victimhood|
|^<$checkbox field='e' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='f' checked=1></$checkbox>|Financiën op orde|
|^<$checkbox field='g' checked=1></$checkbox>|Egmond betalen|

|^09:10|Nu opruimen en aankleden|
|^19:06|Nu 🎹 spelen|
|^20:00|Journaal|
<tblauw>zondag 2021, wolken, buien, 9°</tblauw> 
""" 

<$list filter="[tag[#dagtaak]datum[0314]]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
08:08 Nu roeien
08:40 Nu aankleden en ontbijten
09:19 Nu ontbijten
11:28 nederlandleertdoor
14:45 Nu reglement versturen, nap en radetzkymars
17:34 nu Radetzkymars
18:24 nu solarized dark
21:28 nu stukken naar Alexander
22:02 Nu nog even Bakewell
23:10 Stoppen, zeer tevreden over deze database!

<tblauw>vrijdag 2021, van alles wat, 16°</tblauw>
 

|^&#x2714;|^07:30|Roeien|
|^&#x2714;|^08:30|facedo bellen|
|^&#x2714;|^11:39|SVAN: geld overmaken: € 14997,32 naar nl0ingb0000853343 Orde der Augustijnen|
|^&#x2714;|^09:52|sudo apt install nvidia-driver-390|
|^|^11:38|Lijkt opgelost. Nu koffie en kranten en db|
|^&#x2714;|^12:00|Lunchen met Sara|
|^&#x2714;|^14:00|Sara naar Zuiderwoude brengen|
|^&#x2714;|^17:00|Ger en Choux maaltijd halen|
|^&#x2714;|^18:00|Eten met Ger|
<tblauw>zondag 2021, zeer grijs, 11°</tblauw>

| <$checkbox field='84517' checked=1></$checkbox>|<<spo "Roeien">>|
| <$checkbox field='84536' checked=1></$checkbox>|<<ref "Dagboek">>|
| <$checkbox field='84953' checked=1></$checkbox>|<<soc "Koffie met nieuwe buren">>|
| <$checkbox field='102643' checked=1></$checkbox>|<<bst "WKO: aantekeningen">>|
| <$checkbox field='102943' checked=1></$checkbox>|<<bst "Ekklesia: Sem">>|
| <$checkbox field='103019' checked=1></$checkbox>|<<doc "Lezing muziek">>|
| <$checkbox field='140024' checked=1></$checkbox>|<<bes "Ekklesia: jaargesprekken">>|

|^08:45|Nu roeien|
|^10:30|Nu Keppler|
|^13:28|Nu even de aantekeningen voor Alexander opzoeken|
|^14:01|OK, nuttig. Nu even vrijdag 12 januari 1990 invoeren.|
<tblauw>donderdag 2021, nu nog regen maar beter weer op komst, 14°</tblauw>

|^08:22|Al geroeid. Nu ontbijten en naar Egmond|
| <$checkbox field='a' checked=1></$checkbox>|Mail Mirjam|
| <$checkbox field='b' checked=1></$checkbox>|Tekst Alex|
| <$checkbox field='c' checked=1></$checkbox>|Belangen NWO|
| <$checkbox field='d' checked=1></$checkbox>|Servicekosten aanpassen|

Radiosignalen van exoplaneten. Op zoek naar onze tweelingplaneet. Misschien in Proxima Centauri, op 4,24 lichtjaar. Een tweelingplaneet is nog niet in zicht. De aanwezigheid van een magnetisch veld is maar één van de indicatoren. 
Gesprekken met Holocaust overlevenden. Zij behoorden tot de sterkste, aan  het leven toegewijde mensen di ik heb ontmoet. Ze richtten zich op de toekomst. Pas toen ze zekerheid hadden opgebouwd gingen ze terugkijken, schreven boeken en bezochten scholen. Soms pas na 50 jaar. Door een enorme wilskracht weigerden ze zichzelf als slachtoffers te beschouwen. Jordan Peterson verzet zich tegen een slachtoffercultuur. Jonge mensen moeten verantwoordelijkheid voor hun eigen leven nemen. Hoe is dit mogelijk? Hoe kun je slachtoffer zijn en jezelf toch niet als slachtoffer zien? We kunnen in elke situatie terugkijken en vooruit kijken. Ik kan het verleden niet veranderen. Maar ik kan de toekomst wel veranderen. In de toekomst ligt de keuzevijheid. Zeker, er zijn slachtoffers. Gevaarlijk wordt het als we het slachtofferschap tot politiek issue maken. Neo-Marxisme: de wereld bestaat uit onderdrukkers en slachtoffers. De basis voor de identiteitspolitiek. De nieuwe onderdrukten zijn het slachtoffer van een mannelijke, witte cultuur. Dit is de kern van het hedendaagse multiculturalisme. <tgeel>Dat kun je toch niet menen!</tgeel> Politiek gaat over macht en verdeling van hulpmiddelen. Niet over de psychologie van zelfrespect of het toeschrijven van schuld. Viktor Frankl: de vrijheid om te beslissen hoe te reageren, die kan je niet worden afgenomen. Edith Eger: lijden is universeel maar slachtofferschap is een keuze. 
http://bit.ly/2kKyHtb
<tblauw>donderdag 2021, droog en zon, 9°</tblauw>

|^✔|^07:00|[[Sportief: Roeien]]|
|^|^08:15|Ontbijten|
|^&#x2714;|^09:00|Klussen: auto naar garage|
|^&#x2714;|^10:36|Bestuur: [[Noord4Us]]|
|^&#x2714;|^11:16 |[[Bestuur: SVAN opheffen]]|
|^&#x2714;|^12:32|[[Ekklesia Jaarrekening 2020]]|
|^&#x2714;|^13:00|[[Sportief: Lopen]]|
|^&#x2714;|^14:20|Klussen: auto ophalen|
|^&#x2714;|^14:45|Klussen: Karwei WD-40 en batterijen|
|^<$checkbox field='v2' checked='ja' unchecked='nee'></$checkbox>|^17:00 |[[Sociaal: Eten met Ger]]|
|^<$checkbox field='tw' checked='ja' unchecked='nee'></$checkbox>|^16:45|Klussen: TextSnippets in TW|
|^<$checkbox field='v3' checked='ja' unchecked='nee'></$checkbox>|^15:53 |[[Studeren: Bakewell]]|
|^<$checkbox field='v1' checked='ja' unchecked='nee'></$checkbox>|^21:00|Sociaal: Margriet en Ewald|
<tblauw>zondag 2021, zon, in het noorden met wolken, 22 - 27°</tblauw>

|^07:30|Nu roeien|
|^14:29|Intussen al in Egmond. Gewerkt aan afvoer wc. Iets verbeterd. Nu een nap|
|^15:53|Savoy uit, Heemstra H7, nu strand|
|^19:16|Nu Heemstra 7|
<tblauw>woensdag 2021, grijs maar ook een beetje blauw, 10°</tblauw> 

|customTable|k
|^ <$checkbox field='230114' checked=1></$checkbox>|<<soc "bezoek Harry">>|
|^ <$checkbox field='230131' checked=1></$checkbox>|<<klu "boodschappen">>|
|^ <$checkbox field='230143' checked=1></$checkbox>|<<bes "overleg Mirjam">>|
|^ <$checkbox field='230201' checked=1></$checkbox>|<<spo "roeien">>|
|^ <$checkbox field='230214' checked=1></$checkbox>|<<adv "USO">>|
|^ <$checkbox field='230254' checked=1></$checkbox>|<<soc "borrel Margriet en Ewald">>|
<tblauw>zaterdag 2022, grijs, mist, 4°</tblauw> 

|customTable|k

|^17:11|Cathrien is er nog steeds slecht aan toe. Morgen met haar wandelen.|
<tblauw>donderdag 2021, nu nog bewolkt en grijs, vanmiddag zon, 19 - 23°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Els en Ada halen|
|^<$checkbox field='b' checked=1></$checkbox>|Op Els en Ada passen|
|^<$checkbox field='c' checked=1></$checkbox>|Bij Ger eten|
|^<$checkbox field='d' checked=1></$checkbox>|Naar Egmond rijden|
|^<$checkbox field='e' checked=1></$checkbox>|Shortcut voor het invoegen van afbeeldingen|
|^<$checkbox field='f' checked=1></$checkbox>|Routebeschrijving naar Petra|

|^09:16|Even kijken of de referenties naar de bibliotheek ook werken met TiddlyWiki en Pcloud|
|^09:39|Dat werkt! Nu even kijken of de shortcut naar afbeelding invoegen kunnen maken.|
|^21:04|Weer in Egmond. Op Els en Ada gepast, geen wel goed ondanks het feit dat beiden erg verkouden en eigenlijk koortsig waren. |
|^21:08|Routebeschrijving naar Petra, hoe doen we dat. We hebben de beschrijving voor Bart-Jan. Die erbij halen|
|^21:15|Routebeschrijving naar huisje Jos en Anne-Carien in Egmond aan Zee. <br><br>Rij naar Egmond aan Zee, bestemming camping Roompot Vakanties Kustpark Egmond aan Zee. Je rijdt via de Egmonderstraatweg Egmond aan Zee binnen. Bij de stoplichten, waar rechts als kunstwerk een wit paard staat, ga je rechts de Sportlaan in. Dan het eerste weggetje rechts, om de nieuwe vakantieappartementen De Egmonden heen. Je rijdt op de ingang van de camping af. Die ingang laat je rechts liggen! Je rijdt rechtdoor tot aan de slagboom, de ingang tot ons terrein. Daar kun je het beste even bellen (06 29016832) en ik kom eraan met de sleutel om de slagboom voor je open te maken. Als je met de fiets bent kun je ook doorrijden tussen de geparkeerde auto's door tot de tweede slagboom. Daarna vervolg je het pad (kan mul zijn!). Op de splitsing meteen na de tweede slagboom rechts houden. Je fietst door, rechts de landjes waar de Egmonders groeten (dikwijls aardappelen) verbouwen. Aangekomen bij de volgende kruising zie je recht voor je een kastje met boeken om door te geven, daarachter twee dennebomen, en daarachter, in een duinpan, een bruin houten huis. Dat is ons huis, nr. 122. Wees welkom!|
|^21:22|OK, versturen|

<<ximg width:50% "/Foto's/20100701c Piano Grande.jpg">>
<tblauw>dinsdag 2021, steeds meer zon, 24°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Raymond|
|^<$checkbox field='b' checked=1></$checkbox>|Sacks: Victimhood|
|^<$checkbox field='c' checked=1></$checkbox>|Roeien|
|^<$checkbox field='d' checked=1></$checkbox>|Koffie met Anne|
|^<$checkbox field='e' checked=1></$checkbox>|Overleg met Frans Prins|
|^<$checkbox field='f' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='g' checked=1></$checkbox>|Boëthius|

|^07:53|Nu roeien|
<tblauw>maandag 2021, enkele bui, af en toe zon, 9°</tblauw> 
""" 

<$list filter="[tag[#dagtaak]datum[0315]]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list> 
07:32 nu roeien
08:00 nu aankleden
08:51 ontbijten
09:13 stofzuigen
11:07 nu koffie en krant
11:57 Nu even reviewen
12:23 Nu naar de tandarts
14:40 Nu God en wij
15:14 Even een shor nap.
15:59 Nu even zoom link aanmaken voor God en wij
16:09 Nu verder met Wright
19:09 Nu afwassen en overleg MV. 
<tblauw>zaterdag 2021, kil en grijs, 15°</tblauw>

|^ ✔|^|Sportief: Roeien|
|^ ✔|^|Klussen: Horloge kopen|
|^ ✔|^|Sociaal: Joke van Eekeres|
|^ ✔|^|Lezen: kranten|
|^ ✔|^|Studeren: Sacks H5|
|^ ✔|^|Klussen: koken|
|^ ✔|^|Cultuur: La prima cosa bella|
 
<tblauw>maandag 2021, grijs, grijzer, 8°</tblauw>

| <$checkbox field='80749' checked=1></$checkbox>|<<spo "Roeien">>|
| <$checkbox field='81306' checked=1></$checkbox>|<<doc "[[Lezing Muziek]]">>|
| <$checkbox field='102943' checked=1></$checkbox>|<<bst "Ekklesia: Sem">>|
| <$checkbox field='114221' checked=1></$checkbox>|<<klu "Stofzuigen">>|
| <$checkbox field='114237' checked=1></$checkbox>|<<klu "Moppen">>|
| <$checkbox field='173523' checked=1></$checkbox>|<<bes "Afspraken jaargesprekken">>|
| <$checkbox field='173539' checked=1></$checkbox>|<<soc "zoomlink God en wij">>|

|^08:08|Nu roeien|
|^11:41|Al gestofzuigd en gemopt. Nu krant|
|^12:00|Nu twee uur werken aan Lezing Muziek|
|^13:57|OK, even lunchen|
|^16:50|19000 besmettingen, zucht. Nu even zoomlink voor vanavond aanmaken.|
|^16:55|Nu info naar Sem|
<tblauw>vrijdag 2021, vanmiddag droger (zon schijnt nu), 14°</tblauw>

|^10:31|Al geroeid. Nu planning en boodschappen|
|^11:03|Nieuw kunstje om pdf bestanden in te voegen. Clone de tiddler "PDF Tiddler" en voeg de bestandsnaam (inclusief /) in op de plaats van "Filenaam". Het bestand oet in de Public Folder van Pcloud staan. De nieuwe tiddler bevat dan het PDF bestand. Je kunt het PDF-bestand door transclusie invoegen in een andere tiddler.|
|^11:06|Even nog de dt-transclusie proberen|
|^12:16|Werkt niet. Nu scheren en verder aankleden.|
|^15:19|Boodschappen gedaan en afval opgeruimd. Toch nog twee dingen bedacht, checkmark en zoeken naar expandabale todolist. Eerst checkmark|
|^15:22|Ja, checkmark werkt toch eigenlijk veel slechter dan hokje. Je moet dan het taakje opzoeken en de naam veranderen.|
|^15:34|Het gaat eigenlijkk we goed. Dankzij de relink faciliteit worden alle bijbehorende referenties bijgewerkt als je een vinkje (ctrl-shift-V) plaatst. Cool. Second-best oplossing.|
|^15:35|Nog even zoeken naar expandable todolist.|
|^15:48|Niet gevonden. We gaan met de checkmark werken. We gaan ook werken met de categorieën. Beginnen met lezen en dat doen|
|^17:40|Pannenkoeken bakken. Nog printen|


<tblauw>woensdag 2021, warm maar bewolkt, 29°</tblauw>

|^17:38|Vandaag een mooie wandeling gemaakt in de omgeving van Pergola. Nu even dagboekaantekeningen maken. |

In de zomer van 1977 stuurde de NASA de Voyager I en de Voyager II op een wetenschappelijke missie naar de grote buitenplaneten van ons zonnestelsel. Van een afstand van 22,7 miljard (Voyager I) en bijna 19 miljard (Voyager II) kilometer leveren de sondes nog altijd data uit het verre heelal. Je zweeft zonder coördinaten in een kosmische afgrond. Doodeng. De o ciële term voor deze angst is astrofobie. Het gevoel van nergens zijn, denk ik nu, kun je alleen maar bestrijden met ergens zijn. Je vereenzelvigen met de plek waar je bent. Ineens lijkt het belachelijk dat ik niet weet waar ik woon. Wel mijn huis ken, maar niet de bodem waarop ik leef, niet de diepte van mijn tuin. Mijn meest nabije grond.
http://bit.ly/2kmkgh5
<tblauw>vrijdag 2021, veel zon, 10°</tblauw>

|^<$checkbox field='v00' checked='ja' unchecked='nee'></$checkbox>|^07:03 |[[Docent: Camus]]|
|^<$checkbox field='v01' checked='ja' unchecked='nee'></$checkbox>|^07:30|[[Sportief: Roeien]]|
|^|^|Ontbijt|
|^|^10:06 |Wat nu te doen: ik wil werken aan Camus, ik wil het afval opruimen, ik wil Facedo in gang zetten. Vanmiddag vaccinatie! Ik wil ook werken aan Iris. Misschien nu eerst het afval en Facedo. |
|^<$checkbox field='v04' checked='ja' unchecked='nee'></$checkbox>|^10:10 |Klussen: afval afvoeren|
|^<$checkbox field='v05' checked='ja' unchecked='nee'></$checkbox>|^10:30|Klussen: Facedo|
|^<$checkbox field='v06' checked='ja' unchecked='nee'></$checkbox>|^11:00|[[Docent: Camus]]|
|^<$checkbox field='v07' checked='ja' unchecked='nee'></$checkbox>|^12:00|Klussen: Iris|
|^<$checkbox field='v08' checked='ja' unchecked='nee'></$checkbox>|^12:49|Klussen: Watervoorziening tuin|
|^<$checkbox field='v02' checked='ja' unchecked='nee'></$checkbox>|^|[[Muziek: Piano spelen]]|
|^<$checkbox field='v09' checked='ja' unchecked='nee'></$checkbox>|^14:30|Naar Egmond|
|^<$checkbox field='v10' checked='ja' unchecked='nee'></$checkbox>|^15:05|[[Vaccinatie]]|
|^<$checkbox field='v11' checked='ja' unchecked='nee'></$checkbox>|^17:00|[[Sportief: Lopen]]|
<tblauw>maandag 2021, veel wind, regen en ook een beetje zon, 18°</tblauw>

|^15:13|nu twee hoofdstukken Heemstra|
|^16:44|Mooie macro voor details. Nu lezen in Sherriff|
|^20:37|Nu even textpand hier uitbreiden, tot 20:50. Daarna Gombrich|
|^20:45|Dat is al gelukt. Nu Gombrich. Kunnen we dat artikel ook een beetje opsplitsen?|
<tblauw>donderdag 2021, mooie dag met veel zon, 10°</tblauw> 

|customTable|k
|^ <$checkbox field='93848' checked=1></$checkbox>|<<soc "oppassen op Ada en Els">>|
|^ <$checkbox field='143917' checked=1></$checkbox>|<<lez "10 blz Tolstoj">>|
|^ <$checkbox field='144003' checked=1></$checkbox>|<<bes "stuk Kees Kok lezen">>|
|^ <$checkbox field='144022' checked=1></$checkbox>|<<soc "eten bij Ger">>|
|^ <$checkbox field='10547' checked=1></$checkbox>|<<soc "God en wij">>|

|^14:39|Even het artikel van Kees Kok lezen|
<tblauw>zondag 2022, grijs, 4°</tblauw> 

|customTable|k
|^ <$checkbox field='181925' checked=1></$checkbox>|<<soc "wandelen met fam. Lybaart">>|
|^ <$checkbox field='182035' checked=1></$checkbox>|<<lez "The Apprentice">>|

http://musicpsychology.co.uk/why-music-memory-and-emotion/
<tblauw>vrijdag 2021, bewolkt in Egmond, misschien later zon, 19°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen langs het strand|
|^<$checkbox field='b' checked=1></$checkbox>|Overzicht assignments Beyond|
|^<$checkbox field='c' checked=1></$checkbox>|10 blz. Dresden|
|^<$checkbox field='d' checked=1></$checkbox>|Lunch met Petra en Mente|

|^09:58|Al gelopen. Nu aankleden|
|^10:08|https://tiddlywiki.com/static/Macro%2520Calls%2520in%2520WikiText%2520(Examples).html|
|^11:56|Day was het gras maaien. Nu even twee blz Dresden|
|^12:17|Ook nog twee blz Kozbelt|
|^19:54|Gezellige middag met Petra en Mente. Daarna nap en bezoek aan de Windwijzer.|
|^19:57|Eigenlijk moet je nooit weglopen bij TiddlyWiki zonder te saven.|
<tblauw>woensdag 2021, zonnig en warm, 25 - 30°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Naar Cathrien|
|^<$checkbox field='a' checked=1></$checkbox>|Oppassen op Franca en Mercia|
<tblauw>dinsdag 2021, eerst nog zon, daarna regen, 7°</tblauw> 
""" 

<$list filter="[!has[draft.of]tag[#dagtaak]datum[0316]]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>{{Klussen: benzine tanken||cl}}
{{Klussen: cartridges bestellen||cl}}
{{Klussen: stemmen||cl}}

10:36 even tiddlywiki: eigen lettertypen gebruiken
11:18 Nu verder met Tom Wright. Eigenlijk moet hij uit!
12:33 Even de rare "#taak" tiddlers terugzetten. 
13:18 Kom er niet uit. Vermijd tag #taak...
13:55 Tiddler view-taak verwijderd: probleem opgelost! Ook de WorkFlowy Link verwijderd. 
13:56 Nu even cartridges bestellen. 
14:17 OK, gekookt. Nu cartridges bestellen. ProPart Ink Cartridge LC-3213CXL
14:29 Klaar, nu even opgeven voor Ekklesia
14:32 OK, gedaan, ook de mails op 0. Nu even verder met de review.
14:37 Nu nog drie zaken: review, varenna, bakewell, en ger natuurlijk. 
15:25 Nu Bakewell!
16:22 Even 1985 ingevoerd. Nu Bakewell: Kierkegaard. 
16:47 Inhoud van /core/ui/TopBar/menu leeg gemaakt. 
20:30 Dat was eten bij Ger. Nu kijken hoever we komen met Wright. 
23:55 Klaar!
<tblauw>zondag 2021, weer grijs en kil maar in de middag meer zon, 15°</tblauw>



|^|^14:23|Nu even opschrijven wat ik tot nu heb gedaan en wat ik nog wil doen. Gedaan:|
|^&#x2714;|^08:00|Sportief: Roeien|
|^&#x2714;|^09:00|Reflectie: LuisterLink|
|^&#x2714;|^10:00|Klussen: Pop!_OS|
|^&#x2714;|^11:00|Sociaal: Verjaardag Ger|
|^|^14:26|Te doen|
|^&#x2714;|^14:26|Klussen: Nog één keer [[Pop!_OS]]|
|^&#x2714;|^15:36 |Bestuur: SVAN geld overmaken en checken hoe rekening op te heffen|
|^&#x2714;|^16:10|Docent: Opzet levensloop Roth maken|
We hebben dus het idee om een portret van Joseph Roth te maken: levensloop in jaartallen, Roth als Jood, Roth als schrijver, Roth als partner en vriend, De Rote Joseph, de journalist, Roth als hotelmens, Roth als drinker
Eerst prezi aanmaken

|^|^17:13 |Studeren: Sacks|
|^|^|Bestuur: bericht Noord4Us en contact Caroline|
|^|^15:36|Henk betalen|

Fira Sans SemiBold 10
Roboto Slab Regular 11
<tblauw>dinsdag 2021, grijs, 11°</tblauw>

| <$checkbox field='101651' checked=1></$checkbox>|<<doc "Lezing Muziek">>|

|^10:17|Nu verder met de lezing over Muziek. Twee uur volhouden.|
|^23:44|We gaan slapen|
<tblauw>donderdag 2021, wolken, af en toe een spetje, 24°</tblauw>

Vandaag een dagje naar Urbino.
Elon Musk schiet in de Crew Dragon voor het eerst mensen in de ruimte. Democratisering van de ruimtevaart? De jubeltoon staat me tegen. Bezos en Musk zijn de nieuwe ruimtebaronnen. Wat bedoelen we met koloniseren van de ruimte? We moeten reservaten op Mars aanwijzen waar we niet mogen landen. Misschien is er microbiotisch leven. Olympus Mons, grootste vulkaan in ons zonnestelsel, 25 km hoog, in de krater een stijle wand van 6 km hoog. Wie door de ruimte veranderd wil worden moet de ruimte niet te veel veranderen.
Singley and Anderson (1985) developed a modern version of the theory. They argued that Thorndike’s (1922) theory lacked precision:
What exactly is an element of knowledge, and when are two
elements truly identical? They proposed the production rule as the
element of transfer, and used the number of identical productions
between two tasks as a measure of potential transfer. As a demonstration
of this approach, they examined transfer between text
editors. In one of their experiments, subjects had to learn to edit
text using one of three editors, and then switched to a different text
editor. The experiment, which I discuss in detail later on, demonstrated
substantial transfer between text editors. At approximately
the same time, Kieras and Bovair (1986) outlined a similar theory
of transfer with production rules, showing that the amount of extra
time needed to learn extensions to particular procedures can be
predicted by the extra number of productions needed for that
extension. In all these cases, transfer was a matter of taking
task-specific knowledge from one task and using it for another,
semantically similar, task.
To predict the exact amount of transfer, Singley and Anderson
(1985) encoded each of the three editors in a production system
model based on a task analysis by Card, Moran, and Newell
(1983). The three models had several identical production rules,
especially those involving the higher level planning of the edits.
More specific rules, in particular the specific keystrokes controlling the edits themselves, differed between editors. In addition, the
two line editors showed a larger overlap with each other than with
the screen editor. To account for transfer, they calculated the
percentage of overlap in production rules between two editors,
taking into account the frequency in which a particular rule was
used. On this basis, they were able to account for a large amount
of the transfer, but not all of it. In particular, the model was only
able to account for half of the transfer between the line editors and
the screen editor: Whereas transfer in the data amounted to 62%,
the model only showed 33% transfer. The model was clearly
missing something
http://bit.ly/2jpy0bT

http://bit.ly/2jQaxwB
http://bit.ly/2lEoz5t

We define engagement in learning as students' behavioral, cognitive,affective, and social involvement in instructional activitieswith their teachers and classmates. For example, a studentwho is highly engaged on a regular basis might be describedas someone who is always looking at the appropriate bookat the appropriate time, provides thorough responses tothought-provoking questions, becomes excited by or takespride in learning new things, and willingly discusses ideaswith other students.
"""
[[artikel|file:///home/jos/Dropbox/Bibliotheek/P001623 Fredricks Blumenfeld Paris 2004 School Engagement RevEdRes 74 1 59 109.pdf]]

Fredricks, J. A., Blumenfeld, P. C., & Paris, A. H. (2004). School engagement: Potential of the concept, state of the evidence. Review of educational research, 74(1), 59-109.

Samenvatting: The concept of school engagement has attracted increasing attention as representing a possible antidote to declining academic motivation and achievement. Engagement is presumed to be malleable, responsive to contextual features, and amenable to environmental change. Researchers describe behavioral, emotional, and cognitive engagement and recommend studying engagement as a multifaceted construct. This article reviews definitions, measures, precursors, and outcomes of engagement; discusses limitations in the existing research; and suggests improvements. The authors conclude that, although much has been learned, the potential contribution of the concept of school engagement to research on student experience has yet to be realized. They call for richer characterizations of how students behave, feel, and think-research that could aid in the development offinely tuned interventions.

School engagement is seen as an antidote to such signs of student alienation. The American Heritage College Dictionary (4th ed.) defines engage- ment as "[being] actively committed"; to be engaged is "to involve oneself or become occupied; to participate" (a definition based on behavior). Finally, as defined in the New Oxford American Dictionary, to engage is to "attract or involve" (a definition based on emotion).

The multifaceted nature of engagement is also reflected in the research literature, which defines engagement in three ways. Behavioral engagement draws on the idea of participation; it includes involvement in academic and social or extracurricular activities and is considered crucial for achieving positive academic outcomes and preventing dropping out. Emotional engagement encompasses positive and negative reactions to teachers, classmates, academics, and school and is presumed to create ties to an institution and influence willingness to do the work. Finally, cognitive engagement draws on the idea of investment; it incorporates thoughtfulness and willingness to exert the effort necessary to comprehend complex ideas and master difficult skills.

Engagement als meta construct waarin multipele componenten aanwezig zijn. Testen voor additieve en interactieve effecten. Engagement kan variëren in intensiteit en duur. Het is vormbaar! Resultaat van interactie tussen individu en omgeving. Gevoelig voor variatie in omgeving. Engagement in de klas en in de grotere schoolomgeving. 

Behavioural engagement
Gewoonlijk op drie manieren gedefinieerd: (1) positief gedrag, afwezigheid van verstorend gedrag; (2) involvement in leren en academische taken, effort, persistence, concentratie, aandacht, vragen stellen, bijdragen aan klassediscussie; (3) deelname aan school-gerelateerde activiteiten. Veel verschillende typologieën in omloop, mede gebaseerd op mate van engagement. 

Emotional engagement
Affectieve reacties in de klas, interesse, verveling, geluk, verdriet, angst. Emotionele reacties op school en docent. Eerder onderzoek naar attitudes. Situationeel en personal. Eccles et al. (1983) four components of value:  interest (enjoyment of the activity), attainment value (importance of doing well on the task for confirming aspects of one's self-schema), utility value/importance (importance of the task for future goals), and cost (negative aspects of engaging in the task).

Cognitive engagement
Investment in learning, self-regulation, flexibility in problem solving, preference for hard work, and positive coping in the face of failure. Opnieuw situationeel of personal, motivation to learn. Onderscheid tussen mastery goals and performance goals. Effort komt hier terug. Volition:  as "psychological control processes that protect concentration and directed effort in the face of personal and/or environmental distractions, and so aid learning and performance". 

Summary
We have noted several strengths and limitations of current conceptualizations of behavioral, emotional, and cognitive engagement. First, definitions of engagement incorporate a wide variety of constructs. For example, behavioral engagement encompasses doing the work and following the rules; emotional engagement includes interest, values, and emotions; and cognitive engagement incorporates motivation, effort, and strategy use. This inclusiveness comes at a price. Some of the definitions overlap almost completely with prior literatures, such as those on attitudes toward school or those that use teachers' ratings of behavior to predict achievement. In addition, many of the definitions in the engagement literature are more general than those in other bodies of research from which it draws. The engagement literature is also marked by duplication of concepts and lack of differentiation in definitions across various types of engagement. For example, effort is included as part of definitions of behavioral and cognitive engagement, and no distinction is made between effort aimed merely at fulfilling behavioral expectations and that aimed at understanding the material and mastering the content. Finally, many conceptualizations of engagement include only one or two of the three types.

Measurement of Engagement
Self-reports, teacher ratings. Observation techniques. Off-task behavior, deeply involved behavior, limited information on quality of effort. Rating quality of instructional discourse in the classroom. 

Summary
In addition to the specific problems that we have noted concerning the measurement of each type of engagement, there are measurement problems that span all three. Some scholars include conceptually distinct and discrete scales for each type of engagement (e.g., Miller et al., 1996; Nystrand & Gamoran, 1991; Patrick, Skin- ner, & Connell, 1993; Skinner & Belmont, 1993); others combine these into a single, general engagement scale (e.g., Connell, Halpern-Felsher, Clifford, Crichlow, & Usinger, 1995; Marks, 2000; Lee & Smith, 1995). The practice of combining items into general scales precludes examining distinctions among the types of engagement. In addition, conceptual distinctions are blurred because similar items are used to assess different types of engagement. For example, questions about persistence and preference for hard work are included as indicators of both behavioral engagement (Finn et al., 1995) and cognitive engagement (Connell & Wellborn, 1991).

Outcomes of engagement

Achievement
Several studies have demonstrated a positive correlation between behavioral engagement and achievement-related outcomes (e.g., standardized tests, grades) for elementary, middle, and high school students).  Discipline problems also have been associated with lower school performance across grade levels. Much less research exists on emotional engagement and achievement. Achievement benefits are found when students are rated as going beyond, doing more work than is required, or initiating discussions with the teacher about school subjects.
In conclusion, the research reviewed shows that behavioral engagement (e.g., participation, work behavior, and conduct) is correlated with higher achievement across various samples and ages. Similarly, the link between one aspect of cognitive engagement-strategy use-and achievement in the middle and high school years has been well documented. There also is some evidence of a correlation between emotional engagement and achievement.

Engagement may help to protect individuals from dropping out of school. In summary, several studies show that behavioral disengagement is a precursor of dropping out. These findings have been based on various measures of behavior (participation, work involvement, and conduct) across ethnically diverse samples in the elementary and high school years. There is less empirical evidence of a correla- tion between emotional engagement and dropping out. However, the ethnographic research indicates that an emotional connection to teachers and peers can help to reduce dropout rates. We found no studies of cognitive engagement and dropping out. In addition, we know very little about the process by which disengagement influ- ences the decision to drop out. Longitudinal research that explores the mediating processes between behavioral and emotional disengagement and dropping out is crit- ical for intervention efforts. Furthermore, dropout rates vary dramatically by school, even after controlling for demographic characteristics (Rumberger, 1995). An important issue for future study is which aspects of the school and classroom context can promote engagement. Some possible answers to this question can be found in the next section, where we review factors in the school and classroom that are related to engagement.

Antecedents of Engagement

Family, community, culture, and educational context influence engagement. We focus on the educational context. 

School-level factors
In a review article, Newmann (1981) outlined characteristics of high schools that can reduce student alienation and "increase students' involvement, engagement, and integration in school" (p. 546). These include voluntary choice, clear and consistent goals, small size, student participation in school policy and management, opportu- nities for staff and students to be involved in cooperative endeavors, and academic work that allows for the development of products. Diverse interventieprogramma's als voorbeeld. Heel goed voorbeeld: Positive Behavior Support. 

In summary, this research suggests that school-level factors are associated with behavioral engagement. There is less evidence about the link between school-level factors and emotional and cognitive engagement. Future investigations need to sys- tematically examine the impact of school-level factors, such as those noted by New- mann (1981), on the three types of engagement across diverse populations and ages. Longitudinal tracking of changes in engagement as a result of attempts to alter the school context also are needed. There are several widely implemented school reforms that focus on increasing achievement and not explicitly on engagement (see Borman, Hewes, Overmann, & Brown, 2003, for a review of school reforms). Although eval- uations of these reforms do not specifically measure it, engagement may be the mediator that links reforms to outcomes. Including engagement measures in these intervention studies can provide insight into the degree to which engagement is responsive to variations in the environment and can point to the specific school and classroom changes that have the largest effects on behavioral, emotional, and cogni- tive engagement. 

Classroom context
Teacher support: academic, interpersonal. Voorbeeld: Tinto! In summary, numerous studies have illustrated a link between teacher support and behavioral engagement. These studies are based on a variety of measures of behavior (e.g., participation, work involvement, and conduct) across diverse samples in the elementary, middle, and high school years. Most of the evidence concerning the asso- ciation between teacher support and emotional engagement comes from related lit- eratures. Findings concerning the impact of teacher support on cognitive engagement are beginning to accumulate and point to the importance of a combination of aca- demic and social support. Determining whether the effects of social or academic sup- port on engagement vary with student age and background requires further study. Finally, because the majority of research has been cross-sectional rather than longi- tudinal, we know very little about the long-term consequences of teacher support on behavioral, emotional, and cognitive engagement.

Peers: In conclusion, the primary evidence for the effect of peers on engagement comes from studies of naturally occurring peer groups (Kindermann, 1993; Kindermann et al., 1996). Other work has shown that the peer group can contribute to school dis- engagement among minority youth. Related studies that use constructs and measures similar to those used in the engagement literature also illustrate the link between peers and engagement. For example, peer acceptance and peer rejection are pre- dictors of outcomes that are aspects of behavioral engagement (e.g., participation, conduct, work involvement) and emotional engagement (e.g., interest, satisfaction in school). Future investigations should examine the impact of peers on cognitive engagement. They should also consider whether there are developmental and group differences in how peers affect engagement. For example, whether the relationship is stronger for older children, as they develop gender, racial, and cultural identities, remains to be explored.

Classroom Structure: In summary, although only a few studies of structure and engagement exist, the findings, when considered along with those from other well-established literatures, indicate that classroom structure should be examined in future work on the effects of con- text on engagement.

Autonomy Support: Autonomy-supportive classrooms are characterized by choice, shared deci- sion making, and absence of external controls, such as grades or rewards and pun- ishments, as reasons for doing schoolwork or behaving well. n two separate studies, suburban elementary school students whose teachers offered more choices-about which literacy tasks to perform and when and where to perform them-worked more strategically and persisted longer in the face of difficulty, thus manifesting two aspects of cognitive engagement (Turner, 1995; Perry, 1998). In contrast, studies of the junior high school transition do not corroborate presumed influences of auton- omy support. 

Task Characteristics: Newmann theorizes that engagement in learning will be enhanced in classrooms where the tasks (a) are authentic; (b) provide opportunities for students to assume ownership of their conception,  execution, and evaluation; (c) provide opportunities for collaboration; (d) permit diverse forms of talents; and (e) provide opportunities for fun.  Marks (2000) tested the impact of authentic instructional work and social sup- port on engagement in schools undergoing reforms to improve achievement. Using a combined measure of behavior and emotion, she found that elementary, middle, and high school students' perceptions of the opportunities to be involved in authen- tic instruction were a strong unique predictor of engagement.

Individual Needs
In this section, we review studies that assume that individual needs are a mediator between contextual factors and engagement. Connell's self-system 
The literature on needs provides a theoretical perspective on why certain contex- tual factors promote engagement. However, the degree to which needs mediate between contextual factors and engagement is not examined in most studies. In gen- eral, the research has tested the direct link between needs and engagement. For example, there is fairly consistent evidence from the literature on relatedness, belong- ing, and community that feeling that one belongs to and is a member of the commu- nity is associated with behavioral and emotional engagement in the elementary and middle school years. In addition, a few studies show that the need for autonomy is correlated with behavioral and emotional engagement. These studies are based on a measure of autonomy that contrasts acting for internal reasons, such as interest and pleasure, with acting for external reasons, such the teacher's requirement. The real- ity is that classrooms are constrained situations and students often have to perform an activity for external reasons, whether they like it or not. Finally, several studies demonstrate a consistent association between the need for competence and behav- ioral, emotional, and cognitive engagement in the elementary, middle, and high school years.

Conclusions and Future Directions

The vast majority of studies test the impact of a single type of engagement and a single outcome of interest, such as the correlation between behav- ioral engagement and achievement. Similarly, with a few exceptions, the literature does not examine the influence of multiple classroom antecedents on the three types simultaneously. 
Research on outcomes of interest is needed to answer the following questions: 1. Are some individual patterns more predictive than others? 2. Are dimensions of engagement additive, so that having more of each is ben- eficial? 3. Is some amount of one component enough to compensate for less of another. Our review illustrates the need for clarity about what is and is not included in engagement and for an assessment of the "value added" by studying engagement. Important questions for future inquiry include the following:
1. Which types of engagement are more likely to be displayed during the early grades? 2. How do the three types of engagement evolve and change over time? 3. Are any aspects of context more important among some age groups than others? Another problem is that the literature does not provide adequate evidence about the malleability of engagement. The limited number of longitudinal studies leaves open questions about how responsive engagement is to changes in context. Because surveys often combine questions about the classroom, the school, academics, and social relationships, it is difficult to determine the actual source of engagement, how engagement is related to context, and how engagement changes if conditions are altered. One important area for future inquiry is the impact of school and classroom interventions on behavioral, emotional, and cognitive engagement.
<<pdf  "/Bibliotheek/1624 Wigfield Eccles 2000 Expectancy Value Theory ContEdPsych 75 1 68 81.pdf">>
~~~~<<pdf "/Bibliotheek/1627 2012VansteenkisteLI.pdf">>

Vansteenkiste, M., Sierens, E., Goossens, L., Soenens, B., Dochy, F., Mouratidis, A., Aelterman, N., Haeres, L., & Beyers, W. (2012). Identifying configurations of perceived teacher autonomy support and structure: Associations with self-regulated learning, motivation and problem behavior. Learning and Instruction, 22(6), 431-439.

Configurations of perceived teacher autonomy support and clear expectations.

From the SDT-perspective, teacher autonomy support has a different meaning. Autonomy-supportive teachers allow students to act upon their personal interests and values, such that their learning is accompanied with a sense of volition and psychological freedom.

On the contrary, if teachers want to provide guidance that is experienced as truly competence-supportive by the students, teachers may best adopt the students’ frame of reference. Taking the students’ perspective (i.e., a key element of the promotion of volitional functioning) then allows teachers to provide truly competence-supportive structure, that is, guidance that meets students’ problems and wishes.

Struc- ture has three components, that is, (a) presenting clear goals, rules, and expectations before a learning activity, (b) offering help, guid- ance, and supervision during a learning activity, and (c) giving positive, constructive feedback after a learning activity.

combining teacher autonomy support and structure on learning, adjustment, and grades. These studies have generally shown that both teacher autonomy support and structure play a role in the initiation and regulation of learning behavior.

We hypothesized that clear expectations can be communicated in an autonomy-supportive way, for instance, by providing a rationale for the offered expectations, or in a rather controlling way, for instance, by threatening with punishments if students fail to comply with the expectations. we expected to find two teaching constellations characterized by the provision of clear expectations: teachers who are perceived as offering clear expec- tations and scoring either high or low on autonomy support. Simi- larly, we reasoned that an absence of clear expectations may also go hand in hand with either low or high autonomy support. 

investigating whether students belonging to different clusters would display a different pattern of learning outcomes (i.e., time management, concentration, infor- mation processing, persistence, test anxiety) and motivation.

Based on SDT, we expected that the cluster consisting of students scoring high on autonomy support and expectations would show the most adaptive pattern of outcomes because students’ psychological needs for autonomy and competence are best met in this case. Conversely, the cluster of students scoring low on both teaching dimensions is hypothesized to relate to the most detrimental set of outcomes because both the needs for autonomy and competence are most likely to be frustrated (Hypothesis 2).

Participants were 1036 students in 7th through 12th grade and an additional (optional) year for specialization (13th grade). 

Students’ learning outcomes were assessed with five scales of a validated Dutch version (Lacante & Lens, 2005) of the Learning and Study Strategies Inventory (LASSI;

Uitkomstenplaatje
1. Clear Expectations
2. Autonomy Support
3. Low Autonomy Support
4. High Autonomy Support -- Clear Expectations

Studenten in groep 4: highest degree of autonomous motivation. Contrary to our expectations, students in the clusters with varying levels of autonomy support and structure did not significantly differ from each other on controlled motivation.

Studenten in groep 4: more time management, concentration, deep-level learning (i.e., processing information), and persistence, whereas they scored lower on test anxiety compared to all other groups.
Students in the low autonomy support e vague expectations cluster systematically displayed a more maladaptive learning pattern in comparison with students in the clusters characterized by varying levels of autonomy support and expectations, although the three clusters did not differ for test anxiety. 

Concerning externalizing problem behaviors, students in the high autonomy support e clear expectations cluster scored lowest followed by students in the clusters with varying levels of autonomy support and clear expectations and, finally, students in the low autonomy support e vague expectations cluster. 

Taken together, the absence of both autonomy support and structure is associated with the greatest engagement in problem behavior, whereas the presence of both is associated with the least engagement.
Belangrijkste opmerking: naast de ITS benadering waarbij het student model steeds wordt vergeleken met het expertmodel bestaat er ook tutoring op basis van case based reasoning: steeds nagaan vanuit elke actuele probleemsituatie (door vergelijking met bekende probleemsituaties) wat de beste weg naar de oplossing is.
"""
Pedaste, M., Mäeots, M., Siiman, L. A., De Jong, T., Van Riesen, S. A., Kamp, E. T., ... & Tsourlidaki, E. (2015). Phases of inquiry-based learning: Definitions and the inquiry cycle. Educational research review, 14, 47-61.

Definitie
Inquiry-based learning is an educational strategy in which students follow methods and practices similar to those of pro- fessional scientists in order to construct knowledge (Keselman, 2003). It can be defined as a process of discovering new causal relations, with the learner formulating hypotheses and testing them by conducting experiments and/or making ob- servations (Pedaste, Mäeots, Leijen, & Sarapuu, 2012).
web-based guided inquiry-based learning can improve different inquiry skills, such as identifying problems, formulating questions and hypotheses, planning and carrying out experiments, collecting and ana- lyzing data, presenting the results, and drawing conclusions (Mäeots, Pedaste, & Sarapuu, 2008). Recent technological advancements increase the success of applying inquiry-based learning even more.
"""
Game genre was very varied, with simulations (14), simulation games (10) and role-playing games (12) the most popular, followed by drill and practice games (9), MMORPGs (8), strategy games (8), puzzles (6) and adventure games (4). 7 studies, all looking at games for learning, discussed the use of game features rather than game genre and 30 studies, mostly concerning entertainment games, examined a variety of games. 23 of the 24 simulations or simulation games were games for learning. 7 of the 12 studies of role playing games, 5 of the 8 studies of MMORPGs and 6 of the 9 studies of drill and practice games concerned entertainment games.

Games are being used across many subject disciplines, with games for Science, Technology, Engineering and Maths (STEM) subjects the most popular (24), closely followed by health (23). Of the STEM games there were 12 in science (e. g. Forsyth et al., 2012), 7 in computing (e. g. Coller & Scott, 2009), 2 in engineering (e. g. Joiner et al., 2011), 2 in Maths and 1 cat- egorised generally as STEM. Games for health addressed topics such as exercise (Pichierri, Murer, & de Bruin, 2012), reha- bilitation (Hurkmans, Ribbers, Streur-Kranenburg, Stam, & Berg-Emons, 2011; Li, Sevcenco, & Yan, 2013), quality of life (Chen, Hsieh, Wei, & Kao, 2011) and advanced life support training (Cook, McAloon, ONeill, & Beggs, 2012). Games for business (8) (e. g. Tan, Tse, & Chung, 2010), languages (6) (e. g. Chen & Yang, 2012) and economics (3) (e. g. Huang, Johnson, & Han, 2013)were also found, with a variety of games in other subjects such as planning, civic learning, relationships and problem solving.
"""


The first dimension involves a process of  profiling and modelling the learner and theirrequirements. This profile ensures a close match between the learning activities and therequired outcomes. The emphasis upon the learner highlights the importance of  theinteraction between the learner and their environment. For example, more naturalisticinteractions may provide less of  a gap in learning transfer. Information and communi-cation technology (ICT) capabilities may affect the way that the learner interacts withthe experience, and their abilities to become immersed in the activities in the first place.Feedback to the learner is an important aspect of  reflection upon learning and may becentral to the most effective learning experience—or individual perception of  effective-ness (eg, Jarvis & de Freitas, 2009b).

The second dimension analyses the pedagogic perspective of the learning activities, andincludes a consideration of  the kinds of  learning and teaching models adopted along-side  the  methods  for  supporting  the  learning  processes. This  may  include  the  use  ofassociative models based upon task-centred approaches of learning and consistent withtraining  methodology  (eg,  Gagné,  1965),  and  constructivist  models  of  learning  thatinvolve  building  upon  existing  knowledge  on  the  part  of  the  learner  (eg,  Vygotsky,1978). ‘Situative’ models of  learning involve more socially constructed approaches tolearning (eg, Wenger’s model of communities of practice, 1998). Particular selection oflearning  theories  may  anticipate  the  types  of   learning  outcomes  that  result.  Forexample,  it  has  been  observed  that  immersive  experiences  based  upon  task-centredanalysis and learning task construction result in task-centred outputs, and althougheffective  may  be  limited  to  more  training-based  contexts  for  learning.  Also,  certainforms may reinforce particular approaches more readily.The  third  dimension  outlines  the  representation  itself,  how  interactive  the  learningexperience  needs  to  be,  what  levels  of  fidelity  are  required  and  how  immersive  theexperience needs to be. The link between fidelity and learning has been well explored inthe  work  around  simulations,  but  what  constitutes  interactivity  and  immersion  arerelatively under-researched areas and so present challenges for researchers designingexperiments.  The  representational  dimension  includes  the  ‘diegesis’  or  world  of  theexperience, and may affect levels of  engagement and motivation.The final dimension of  context may impact upon the place where learning is under-taken, for example, in school or informal contexts; it may also affect the disciplinarycontext, for example, which subject area is being studied, and whether the learning isconceptual  or  applied.  Context  may  also  include  the  supporting  resources  used  forlearning. The interactions between the learner and their context are particularly impor-tant as the learner may be present in a physical and a virtual space at the same time.These  hybrid  spaces  are  relatively  unexplored  in  research  terms,  but  may  allow  fordifferent approaches to learning beyond those outlined here
"""
<<pdf "/Bibliotheek/1682 Kozbelt 2008 Gombrich on Creativity Creat Res J 20 1 93 104.pdf">>

{{Gombrich's Cognitive Style||dt}}{{Integration: Gombrich as seeker||dt}}{{Gombrich's Relevance to Contemporary Creativity Research||dt}}
<tblauw>zaterdag 2021, wolken en zon, 12°</tblauw>

|^<$checkbox field='v00' checked='ja' unchecked='nee'></$checkbox>|^07:03 |[[Docent: Camus]]|
|^|^08:32|Ontbijten|
|^<$checkbox field='v01' checked='ja' unchecked='nee'></$checkbox>|^09:00|[[Sportief: Lopen]]|
|^<$checkbox field='v02' checked='ja' unchecked='nee'></$checkbox>|^11:30|Lezen: Kranten|
|^<$checkbox field='v03' checked='ja' unchecked='nee'></$checkbox>|^12:00|[[Docent: Camus]]|
|^<$checkbox field='v04' checked='ja' unchecked='nee'></$checkbox>|^12:30|Klussen: Terras schuren|
|^|^15:57 |Kun je hier ongestoord toen een je gedachten laten gaan? Dat lijkt wel aardig te lukken. Wat kunnen we vandaag nog doen: Camus verder lezen, dagboekfragmenten, Kees Boodt mailen, cultuur: film uitzoeken en bekijken, piano spelen.|
|^<$checkbox field='v05' checked='ja' unchecked='nee'></$checkbox>|^16:16 |Nu even [[Muziek: Piano spelen]]|
|^<$checkbox field='v06' checked='ja' unchecked='nee'></$checkbox>|^|Reflectie: Dagboekfragmenten|
|^<$checkbox field='v007' checked='ja' unchecked='nee'></$checkbox>|^|Film: [[210417 The man who sold his skin (2021)]]|
<tblauw>dinsdag 2021, wolken en regen, 17°</tblauw>

|^06:04|Even de twee Heemstra's doen. Komt vandaag verder niets van met het logeren van Mercia en Franca|
|^11:46|Intussen in Egmond. Franca met koorts in bed. Mercia en Anne doen boodschappen. Ik even twee Heemstraatjes|
|^20:41|OK, rust in de tent. Hopelijk houden we dit even vol. Vanmiddag is de put geleegd. Dat probleem is hopelijk deze zomer verder uit de wereld. Mooie actie van de firma Gul, vader en zoon, aangevuld met zwager/oom/buurman Joop.|
|^20:45|Nu even Heemstra afmaken.|
|^21:48|Nu nog vijf dagboekfragmenten|
<tblauw>vrijdag 2021, bewolkt, nevel en mist, 9°</tblauw> 

|customTable|k
|^ <$checkbox field='74209' checked=1></$checkbox>|<<spo "roeien">>|
|^ <$checkbox field='74335' checked=1></$checkbox>|<<klu "stofzuigen">>|
|^ <$checkbox field='74348' checked=1></$checkbox>|<<klu "moppen">>|
|^ <$checkbox field='74405' checked=1></$checkbox>|<<stu "kiza">>|
|^ <$checkbox field='120511' checked=1></$checkbox>|<<klu "workflowy in TiddlyWiky">>|
|^ <$checkbox field='170832' checked=1></$checkbox>|<<klu "maaltijd bij Choux halen">>|
|^ <$checkbox field='170908' checked=1></$checkbox>|<<soc "eten met de kinderen">>|

|^07:41|Daar gaat-ie weer, roeien|
<tblauw>maandag 2022, wolken, 6 - 9°</tblauw> 

|customTable|k
|^ <$checkbox field='74953' checked=1></$checkbox>|<<stu "Muziek en emotie: youtube">>|

|^07:46|Weinberg cello, erg mooi|
<tblauw>zaterdag 2021, zonnige zomerdag, 25°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen, zwemmen, planken|
|^<$checkbox field='b' checked=1></$checkbox>|Naar Amsterdam|
|^<$checkbox field='c' checked=1></$checkbox>|Kranten|

|^07:31|Zwemmen en lopen|
|^12:09|Huisje schoongemaakt, even de kranten|
|^16:06|Weer thuis, nu trein en speelgoed opruimen.|
||<<ximg width:50% "/Foto's/IMG_20210706_083640_1.jpg">>|
|^18:07|Dit was een mooie foto op 6 juli. Nu omkleden en naar Margriet en Ewald.|
|^22:05|Dat was eten bij Ewald en Margriet. Nog even een mooie foto.|
||<<ximg width:50% "/Cultuur/Raffaello Madonna Sistina.jpg">>|
|^22:10|De Madonna Sistina van Rafael|
<tblauw>donderdag 2021, tropische dag, boven 30°, vanavond onweer</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Els en Ada halen|
|^<$checkbox field='b' checked=1></$checkbox>|Artis|
|^<$checkbox field='c' checked=1></$checkbox>|Op Els en Ada passen|
|^<$checkbox field='d' checked=1></$checkbox>|Boëthius voorbereiden|
|^<$checkbox field='e' checked=1></$checkbox>|Boëthius bijeenkomst|
|^<$checkbox field='f' checked=1></$checkbox>|Appje naar Mirjam|
|^<$checkbox field='g' checked=1></$checkbox>|Bericht naar Caroline|


<tblauw>woensdag 2021, buien, gevolgd door regen, 7°</tblauw> 
""" 

<$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>{{Klussen: Mercia ophalen
||cl}}

16:21 Oppassen... Nog even samenvatting Wright
19:40 Proberen de review uit te lezen
23:42 Verkiezingsavond. Alleen nog exit polls: vvd op 36, CDA op 14, d66 op 27, pvv op 17, PvdA op 9. Maakt voortzetting van de huidige coalitie mogelijk.
<tblauw>maandag 2021, buien, af en toe zon, 15°</tblauw>

https://www.vpro.nl/nooitmeerslapen/speel~POMS_VPRO_508686~joseph-roth-hotelmens~.html

|^&#x2714;|^09:51|Al gedaan: Sportief: Roeien|
|^|^09:53|Nu proberen om in vrijheid te handelen. Nu tanden poetsen.|
|^&#x2714;|^09:59|Nu Adviseur: [[het spoorboekje maken voor morgen]]|
|^|^13:19|Nu lunchen, daarna pomodoro's|
|^&#x2714;|^14:00|Nu aanvraag Kok|
|^&#x2714;|^14:20|Nu aanvraag 283 Schilder|
|^&#x2714;|^14:47|Nu aanvraag 304 Sanchez|
|^&#x2714;|^15:32|Dat was overleg met Matthijs Kallenberg. Nu Sanchez afmaken|
|^&#x2714;|^16:00|Nu de aanvraag van Hermsen|
|^&#x2714;|^16:48|Nu Van Gurp|
|^&#x2714;|^17:13|Boodschappen|
|^&#x2714;|^19:35|Nu verder met Berendsen|
|^&#x2714;|^|Nu Zweemer|
|^&#x2714;|^|Nu Altangerel|
|^&#x2714;|^|Nu Abitzsch|
|^&#x2714;|^21:17|Nu de laatste: Carr!|
|^|^21:33|Klaar|


Te doen<p>

|^&#x2714;|^|Henk Bluemink betalen|
|^&#x2714;|^|SVAN betalen|
|^&#x2714;|^19:34|SVAN stukken uitdraaien|
|^|^|Studeren: Sacks|
|^|^|Klussen: boodschappen|
|^|^|Stukken Ekklesia|
<tblauw>woensdag 2021, waterig zonnetje, 9 - 12°</tblauw>

| <$checkbox field='101132' checked=1></$checkbox>|<<doc "Lezing Muziek">>|
| <$checkbox field='145044' checked=1></$checkbox>|<<klu "Boodschappen">>|
| <$checkbox field='145057' checked=1></$checkbox>|<<adv "COBEX">>|

|^10:11|Nu tanden poetsen en aan de slag met Lezing Muziek|
|^14:50|Dat waren de boodschappen. Nu COBEX|
|^15:09|OK, klaar. Rappel naar Mirjam en Alex gestuurd. Mail over hybride ALV naar bestuursleden gestuurd.|
<tblauw>zondag 2021, rustig bewolkt weer, marathonweer, 14°</tblauw>

|^09:38|Even wat schoolgegevens|

|^School|^Aantal lln|^Niveaus|^Uitstroom|^Inspectie|^Bijzonderheden|
|^Gerrit van der Veen College|^890|^havo (340), vwo (399), tweejarige brugperiode|^van de havo gaat 34% naar hbo, van het vwo gaat 32% naar het wo|^juni 2018: voldoende|^Cultuurschool, één dans-muziek brugklas per jaar, veel leerlingen uit oostelijk havengebied|
|^Fons Vitae Lyceum|^1096|^havo (24%), havo/vwo (30%), atheneum (15%), gymnasium (10%)|^havo>hbo: 64%, vwo>wo: 57%|^havo-resultaten op niveau inspectienorm, vwo-resultaten boven niveau inspectienorm|^Begaafdheidsprofielschool. Veel lln uit Oud-Zuid, oostelijk havengebied en Abcoude|
|^St. Nicolaaslyceum|^1200|^havo (25%), havo/vwo (17%), atheneum (54%), vwo (4%)|havo>hbo: 63%, vwo>wo: 68%|^basisarrangement|^cultuurplusklassen, sportplusklassen, tweetalig vwo, mooie nieuwe school. Veel lln uit oostelijk havengebied|

|^16:44|Nu even drie dingen doen: twee vakantiedagen, 10 blz lezen, piano spelen. Eerst twee vakantiedagen: maandag 20 september en dinsdag 21 september|
|^16:46|Eerst 20 september, de dag dat we naar Vicenza reisden. |
<tblauw>vrijdag 2021, wind, wolken, zon, 24°</tblauw>

|^07:59|Dat was het loopje, nu zwemmen|
|^10:19|Aardig project-management systeem: https://projectify.wiki/demo.html|
|^11:29|Boodschappen gedaan in Castelleone di Suasa. Restanten van de Romeinse stad Suasa, oorspronkelijk een Griekse nederzetting.|
|^11:44|Nu lezen!|
|^12:18|Wind, onweer...|
|^14:36|En regen.  https://fashionunited.nl/nieuws/cultuur/opera-met-kostuums-van-jan-taminiau-nu-gratis-te-zien-op-youtube/2020032445169|
|^16:02|Nu even lezen. Hoe gaan we verder met het verslag? Waar waren we?|
|^16:03|Even maandag doen. En dan omschrijven welke foto´s erbij moeten en die erbij zetten|
UFO's bestaan echt. Er is geen geld voor ufo-onderzoek. Geluiden die niet passen in het dominante wereldbeeld worden weggehoond. Maar alles is op onverklaarbare wijze met elkaar verweven (kosmologisch bewustzijn). 
Soms zit de ander die je op lichtjaren afstand zocht ineens naast je ip de bank. 
<tblauw>zondag 2021, geregeld zon 10°</tblauw>

|^<$checkbox field='v00' checked='ja' unchecked='nee'></$checkbox>|^ 06:17 |[[Docent: Camus]]|
|^|^08:30|Ontbijten|
|^<$checkbox field='v01' checked='ja' unchecked='nee'></$checkbox>|^09:02 |Sportief: Lopen|
|^<$checkbox field='v02' checked='ja' unchecked='nee'></$checkbox>|^11:00|Sociaal: KoffieZoom jhaverhaegh@gmail.com|
|^<$checkbox field='v03' checked='ja' unchecked='nee'></$checkbox>|^12:14 |Klussen: vlonder schrobben|
|^<$checkbox field='v04' checked='ja' unchecked='nee'></$checkbox>|^13:00|[[Docent: Camus]]|
|^<$checkbox field='v05' checked='ja' unchecked='nee'></$checkbox>|^14:00|Sociaal: Harry|
|^<$checkbox field='v06' checked='ja' unchecked='nee'></$checkbox>|^16:30|Klussen: naar huis|
|^<$checkbox field='v07' checked='ja' unchecked='nee'></$checkbox>|^20:22|Adviseur: Comenius Interviews|
 
<tblauw>woensdag 2021, hopelijk iets minder regen, 18 - 20°</tblauw>

|^21:38|Gammel in bed. Hopelijk geen corona, via Franca en haar leidsters. Franca wordt morgen getest.|
|^21:40|Nu even twee Heemstra's.|
<tblauw>zaterdag 2021, bewolkt, nevelig, hier en daar lichte regen, 8°</tblauw> 

|customTable|k
|^ <$checkbox field='162439' checked=1></$checkbox>|<<klu "boodschappen">>|
|^ <$checkbox field='162452' checked=1></$checkbox>|<<soc "maaltijd naar Cathrien">>|
|^ <$checkbox field='162523' checked=1></$checkbox>|<<stu "10 blz Kiza">>|


|^07:43|We gaan weer een strenge lockdown tegemoet! Dat had ik toch niet gedacht. Een dat terwijl de nieuwe omikronvariant misschien wel veel minder ziekmakend is. Eerst roeien.|
|^16:06|Strenge lockdown gaat komende nacht in tot 14 januari. Dienst morgen cancellen?|
|^16:24|Nu 20 blz Kiza|
<tblauw>dinsdag 2022, °</tblauw> 

|customTable|k
|^ <$checkbox field='85605' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='85615' checked=1></$checkbox>|<<stu "Muziek">>|
|^ <$checkbox field='85625' checked=1></$checkbox>|<<soc "Koffie bij Joke en Guus">>|
|^ <$checkbox field='85646' checked=1></$checkbox>|<<klu "Anne testen">>|
|^ <$checkbox field='85659' checked=1></$checkbox>|<<klu "Gerrie halen">>|
|^ <$checkbox field='85713' checked=1></$checkbox>|<<soc "Gerrie eten">>|
|^ <$checkbox field='171238' checked=1></$checkbox>|<<bes "overleg Alex en Mirjam">>|

|^08:57|Ontbijten, Anne testen|
|^13:36|floating editor bar?|
|^17:13|Dat was overleg met Mirjam en Alex. |
|^17:14|Wat kunnen we doen aan Muziek? Ik denk even verder gaan met Juslin. Tekst op telefoon, aantekeningen op tablet|
<tblauw>zondag 2021, prachtige zomerdag in Amsterdam, 21 - 24°</tblauw>

|^07:28|Nu ontbijt klaarmaken|
|^14:40|Nu vijf dingen|

|^<$checkbox field='a' checked=1></$checkbox>|Opruimen|
|^<$checkbox field='b' checked=1></$checkbox>|Nap|
|^<$checkbox field='c' checked=1></$checkbox>|Artikel over Gombrich|
|^<$checkbox field='d' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='e' checked=1></$checkbox>|Kranten|

|^14:42|Eerst opruimen|
|^16:12|Artikel over Gombrich|
|^16:44|Nu dan artikel over Gombrich|
<tblauw>vrijdag 2021, zon, wolken, onweer, 23°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='g' checked=1></$checkbox>|notebook --> OneNote|
|^<$checkbox field='b' checked=1></$checkbox>|creativiteit|
|^<$checkbox field='c' checked=1></$checkbox>|Boodschappen|
|^<$checkbox field='d' checked=1></$checkbox>|overleg Mirjam|
|^<$checkbox field='e' checked=1></$checkbox>|Bioscoop|
|^<$checkbox field='f' checked=1></$checkbox>|Eten met D&E|
<tblauw>donderdag 2021, een buitje, 8°</tblauw> 
""" 

<$list filter="[!has[draft.of]tag[#dagtaak]datum[0318]]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list> {{Cultuur: Hope Gap||cl}}
{{Klussen: Logboek upgraden||cl}}
{{Bestuur: Mail Comenius||cl}}<br>
10:10 Even een lijstje maken.
13:31 Héhé we zijn er weer. Met de hulp van papier!  Nu stuk ekklesia uitdraaien. 
13:52 OK, mail Comenius beantwoord. Nu stuk ekklesia en nap. Daarna review afmaken. 
16:14 Nu even lopen. 
17:38 Nu Reviewen.
<tblauw>dinsdag 2021, wolken maar ook zon, 15°</tblauw>


|^&#x2714;|^07:00|Sportief: Roeien|
|^&#x2714;|^10:00|Adviseur: Comenius TF: HBO-aanvragen|
|^&#x2714;|^11:00|Adviseur: Comenius TF: WO-aanvragen|
|^&#x2714;|^13:20|Adviseur: Comenius TF: Discussie|
|^&#x2714;|^17:15|Reflectie: 10 dagboekfragmenten|
| ✔^|^19:00|Lezen: Ekklesia leesclub|
<tblauw>donderdag 2021, waterig zonnetje, 10 - 12°</tblauw>

| <$checkbox field='131016' checked=1></$checkbox>|<<soc "Oppassen op Els en Ada">>|
| <$checkbox field='131045' checked=1></$checkbox>|<<soc "Eten bij Gerrie">>|

|^13:11| Nu even drie blz Samama|
<tblauw>maandag 2021, rustige herfstdag in Egmond, 5°</tblauw>

|^09:22|Al geroeid, nu naar Egmond|
|^16:37|Schilderwerk afgemaakt, dennenaalden en afgemaaid gras opgeruimd.|
|^16:38|Per dag een lijstje? |
|^16:54|Ik zie het voordeel er niet van in. Je kunt ook gewoon een lijstje checkboxen maken op de dagkaart die daar een jaar blijven staan. En items die langer duren dan een dag, die staan gewoon opzij. Dat onderscheid is duidelijk. Je zou jezelf nog wat meer kunnen aansporen om nuttige dingen te doen. Die zetten we dan rechts in het lijstje met een groene bal.|
<tblauw> zaterdag 2021, zon en wind; regen? 26°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>| mesje mee|

|^10:33|Naar Venetië|
|^13:23|Lekke band! Wachten op ANWB|
|^23:16|Bizarre dag. Even koffie drinken bij een wegrestaurant leidde tot de constatering dat we een lekke band hadden. Waar en waardoor is dat lek ontstaan? Misschien op de hobbelige wegen in de Marken? Wat was er gebeurd als de lekkage opde snelweg was ontstaan? Hoeveel risico hebben we feitelijk gelopen? Nou ja, moeilijk te beantwoorden vragen. In ieder geval kwam de Italiaanse hulpdienst rond 14.20. Het werd meteen duidelijk dat de auto niet meer gerepareerd kon worden op zaterdagmiddag. Auto op de wagen van de hulpdienst, wij voorin, en naar de plaats waar zich de garage bevindt, Argelato. Naar Albergo Bruma, een uiterst eenvoudig maar schoon onderkomen met een vriendelijke landlady. Koffers uit de auto. De man van de soccorso stradale verdween met de auto, nadat ik een aantal formulieren Haag ondertekend, geen idee wat daar op stond. De auto pakken we maandag weer op.  |
Herfst in het Vliegenbos. Wandelingen in de nacht olv een bevriende ecoloog.
<tblauw>maandag 2021, wolken en zon, 12°</tblauw>

|✔|^|Klussen: Facedo bellen|
|^✔|^|Mail naar Kees|
|^|^|Bellen met Frans Hulsman|
|^✔|^|Contact Carlijn/Adeline|
|^✔|^|Mail Oberon|
|^<$checkbox field='v00' checked='ja' unchecked='nee'></$checkbox>|^08:00|Sportief: Roeien|
|^<$checkbox field='v01' checked='ja' unchecked='nee'></$checkbox>|^09:00|Adviseur: Comenius Interviews|
|^<$checkbox field='v02' checked='ja' unchecked='nee'></$checkbox>|^|Sportief: Lopen|
|^<$checkbox field='v03' checked='ja' unchecked='nee'></$checkbox>|^|Mails op 0|
|^<$checkbox field='v04' checked='ja' unchecked='nee'></$checkbox>|^|[[Docent: Camus]]|
|^<$checkbox field='v05' checked='ja' unchecked='nee'></$checkbox>|^|Contact Jeroen Oskam|
|^<$checkbox field='v06' checked='ja' unchecked='nee'></$checkbox>|^16:45|Klussen: Ger halen|
|^<$checkbox field='v07' checked='ja' unchecked='nee'></$checkbox>|^17:15|Sociaal: eten met Ger|
|^|^20:52 |OK, nu even bericht naar Machinekamer, en bericht naar N4U over Carlijn.|
|^|^21:02|Nu verder met Camus.|

 
<tblauw>donderdag 2021, °</tblauw>
<tblauw>zondag 2021, bewolkt, motregen, 7°</tblauw> 

|customTable|k
|^ <$checkbox field='82005' checked=1></$checkbox>|<<spo "roeien">>|
|^ <$checkbox field='104912' checked=1></$checkbox>|<<ref "Ekklesia podcast">>|
|^ <$checkbox field='104939' checked=1></$checkbox>|<<ref "dagboek">>|
|^ <$checkbox field='104954' checked=1></$checkbox>|<<soc "~KoffieZoom">>|

|^08:20|Die Kiza Magendane schrijft mooi over zijn jeugd in Congo en in de vluchtelingenkampen van Tanzania|
|^08:21|Nu roeien|
|^10:21|Nu even dagboek|
<tblauw>woensdag 2022, later vandaag regen, 4 - 7°</tblauw> 

|customTable|k
|^ <$checkbox field='64512' checked=1></$checkbox>|<<stu "Muziek">>|
|^ <$checkbox field='64539' checked=1></$checkbox>|<<lez "Apprentice">>|
|^ <$checkbox field='64606' checked=1></$checkbox>|<<adv "Review">>|

|^06:46|Tafel dekken en ontbijten. Daarna aankleden|
|^08:18|Tafel afruimen en aankleden. Daarna Review, Muziek, Apprentice|
|^09:00|OK, nu Review, dat is makkelijk. Gewoon 10 blz lezen.|
|^09:40|Even koffie. Daarna Muziek.|
|^09:49|Muziek:|
|^10:44|Nu naar Mercia en Franca|
|^10:54|Even Caroline antwoorden|
<tblauw>maandag 2021, °</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|mail over onderwijsprijs|
|^<$checkbox field='b' checked=1></$checkbox>|Verder met SVAN|
|^<$checkbox field='c' checked=1></$checkbox>|Roeien|
|^<$checkbox field='d' checked=1></$checkbox>|Boodschappen|

|^10:25|Al geroeid, nu boodschappen|
|^11:44|OK, nu even aan het werk. Eerst even 10 dagboekfragmenten uit WeNote en 10 uit Workflowy|
|^15:04|Nu een nap|
|^16:03|Nu mail over onderwijsprijs beantwoorden.|
|^16:08|Het is laat maar toch even vijf doelen stellen|

|^<$checkbox field='b' checked=1></$checkbox>|Verder met SVAN|
|^<$checkbox field='e' checked=1></$checkbox>|Film met Anthony Hopkins opzoeken|
|^<$checkbox field='f' checked=1></$checkbox>|Iets doen aan Creativiteit|
|^<$checkbox field='g' checked=1></$checkbox>|Iets doen aan Heijne|
|^<$checkbox field='h' checked=1></$checkbox>|Planningskaarten bijwerken|

|^16:11|Het gemakkelijkste: De film met Hopkins opzoeken. Kan in vijf minuten|
|^16:13|The Father: vanaf 26 augustus in de Filmhallen: [[The Father|https://www.filmhallen.nl/film/the-father/]]|
|^16:15|Nu Verder met SVAN in 10 minuten. Wat gaan we doen? |
|^16:20|Zie [[Bestuur: SVAN opheffen]]. Nu eerst jaarstukken rondmaken, dan verslag vergadering|
|^16:23|Nog de jaarstukken rondmaken. Wat zegt Sharief: |
<<< 
- je hebt de terugstorting nu als Diverse kosten verwerkt. Echter, omdat het om een terugstortng gaat van ontvangen gelden moeten deze bovenin als negatieve opbrengsten worden verantwoord (volgens mij bij ontvangsten van Prosan?);<br>
- bij de balans heb je aangegeven dat het de situatie per 10 juni 2021 betreft, dat is goed; <br>
- bij de staat van baten en lasten dient hetzelfde te gebeuren bij de kop van de kolom van 2021 dat het over de periode gaat: "01-01-2021 t/m 10-06-2021). 
<<<

|^16:28|OK, die twee aanpassingen aanbrengen. Kan dat hier?|
|^17:08|OK, dat is klaar. Morgen verder. Nu iets doen aan Creativiteit. Paar bladzijden Dresden.|
|^17:30|Nu eten en naar de film.|
<tblauw>vrijdag 2021, zon, 5°</tblauw> 
""" 

<$list filter="[!has[draft.of]tag[#dagtaak]datum[0319]]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>{{Klussen: Fonts embedden||cl}}
{{Klussen: Beddenspecialist||cl}}<br>
10:51 Nu naar de Beddenpecialist
18:14 Vandaag aan Bakewell gewerkt, dagboekfragmenten ingevoerd, op Mercia gepast, nog een keer aan de fonts gewerkt. 
18:19 Nu lezen Al het Blauw
<tblauw>woensdag 2021, steeds meer buien, 13 - 15°</tblauw>
 

|^ ✔|^10:00|Verslag Comenius hbo|
|^|^|Verslag Comenius wo|
|^|^|Verslag Machinekamer|
|^|^|Albert en Jan|
|^ ✔|^08:00|Kinderen halen|
|^ ✔|^08:15|Oppassen op Ada en Els|
|^ ✔|^|Studeren: Spengler 2|
|^&#x2714;|^20:00|Ekklesia Leesclub over Spengler|
|^&#x2714;|^22:11|Bestuur: Ekklesia bestuursvergadering voorbereiden|
|^|^23:32|En nu naar bed!|
<tblauw>vrijdag 2021, wisselend bewolkt, 13°</tblauw>

|^12:15|Nu app  naar Martin! Daarna Lezing over muziek!|
|^13:50|Nu niet meer klungelen met Streams|
<tblauw>dinsdag 2021, druil in Egmond, 17°</tblauw>

Vijf groene klussen

| <$checkbox field='a' checked=1></$checkbox>|Plank in schuurtje opruimen|
| <$checkbox field='b' checked=1></$checkbox>|Vakantiedagboek|
| <$checkbox field='c' checked=1></$checkbox>|Mails opruimen|
| <$checkbox field='d' checked=1></$checkbox>|10 blz Kruispunt|
| <$checkbox field='e' checked=1></$checkbox>|Tegentij|

|^10:37|We beginnen met het opruimen van het schuurtje, tot 11.30. Afvalpunt?|
|^13:03|Nu werken aan vakantiedagboek.|
<tblauw>zondag 2021, onweer, 24°</tblauw>

|^07:37|Vandaag naar Bologna|
|^07:59|Prima douche, nu aankleden|
|^08:27|Nu ontbijten, om 10 uur de trein naar Bologna|
















<tblauw>Goede Vrijdag 2021, wolken en koude noordenwind, 8°</tblauw>"""<br>
{{0402 Klussen: USO||cl}} 
{{0402 Bestuur: Mails Alexander||cl}}
{{0402 Klussen: Cas||cl}}
{{0402 Klussen: Boodschappen||cl}}
{{0402 Klussen: Bonbons kopen||cl}}
{{0402 Studeren: Turfs||cl}}
{{0402 Klussen: Koken||cl}} 

13:00 Probleem opgelost 
13:06 Nu lunchen en boodschappen doen. 
16:12 Dat was Blauw, nu Alexander.
17:29 Nu nog USO
17:44 Beginnen met Turfs
19:10 Gekookt.
<tgroen>woensdag, wolken, regen maar ook zon, 20 - 24°</tgroen>

"""
07:20 Mark te Wierik Inleiding
<tblauw>donderdag 2021, buien, ook een zonnetje, 4°</tblauw> 

|customTable|k
|^ <$checkbox field='125031' checked=1></$checkbox>|<<soc "Oppassen op Els en Ada">>|
|^ <$checkbox field='125100' checked=1></$checkbox>|<<soc "Eten bij Gerrie">>|
|^ <$checkbox field='225856' checked=1></$checkbox>|<<bes "Overleg Bestuur en Team">>|

|^20:10|Weer thuis. Spullen klaarzetten.|
|^22:15|We gaan nog even lezen.|
|^22:27|Of toch wel?|
|^22:31|Succes!|
|^22:34|Gelukt!|
<tblauw>zondag 2022, wolken en regen, 10°</tblauw> 

|customTable|k
|^ <$checkbox field='80854' checked=1></$checkbox>|<<soc "nieuwe huis van Sara en Toon bekijken">>|

|^08:10|Nu roeien. Daarna aankleden en ontbijten|
<tblauw>vrijdag 2021, geleidelijk meer zon, 21°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen met Harry|
|^<$checkbox field='b' checked=1></$checkbox>|Eten bij Cathrien|
|^<$checkbox field='c' checked=1></$checkbox>|Review afronden|
|^<$checkbox field='d' checked=1></$checkbox>|Werken aan Assignment 1|
|^<$checkbox field='e' checked=1></$checkbox>|Roeien|

|^06:40|Werken aan Assignment 1|
<tblauw>woensdag 2021, weer een prachtige dag, 21 - 28°</tblauw><p>

|^✔|^07:00|Naar Mercia en Franca|
|^✔|^10:00|Overleg Mirjam en Alex|
|^✔|^|Oppassen op Mercia en Franca|
<tblauw>maandag, regen, 5°</tblauw><p>

"""
14:47 Nu aan de slag met COBEX
test
<tblauw>zondag 2021, eerst zon, later meer wolken, 12°</tblauw>


|^|^|egmond agenda|

|^|^07:31|Opstaan en ontbijten|
|^ ✔|^09:00|Sportief: lopen|
|^ ✔|^ 11:00|Sociaal|
|^|^13:29 |Studeren: Sacks|
<tblauw>zaterdag 2021, eerst wat zon, later regen, 17°</tblauw>

|^07:46|Zo dadelijk roeien|
|^14:03|Franca en Mercia een middagje hier. Nu even woensdag 15 september doen.|
|^14:19|Netflix: Forever Rich, Neverland, big Little lies|
<tblauw>donderdag 2021, van het oosten opklarend, 18 - 22°</tblauw>

|^07:46|Nu roeien|
|^09:30|Nu stofzuigen|
|^13:04|OK, nu Sui en de reviews. Ook de stoel plakken!|
|^13:16|Nu Sui. Wie hebben dit jaar een beurs gekregen?|
|^13:42|Ik doe twee hbo-aanvragen uit 2020: 709 Schuier en 712 Visscher-Voerman|
|^14:03|OK, gelukt.  Nu de tekst van Ghoudan|
|^14:50|Gedoe met files, maar het is gelukt.|
|^14:53|Nu dan de reviews afmaken. De punten ervoor zetten en een tekst maken.|
|^22:38|Nu nog even lezen en dagboek|
"""1. 1920: Naar Berlijn. In Wenen door de crisis weinig werk, daarom naar Berlijn. Reportages, essays, recensies. Hoge status, stamgast in het Romanisches Café. 
2. 1922: Huwelijk met Friedl. In de synagoge in Wenen. Wonen in Berlijn, eerst bij vrienden, later eigen woning
3. 1923: Roth besluit om alleen nog in hotels te wonen. Gerespecteerd en goedbetaald journalist. Frankfurter Zeitung. Roth leeft op grote voet
4. 1924: Romans Hotel Savoy en Die Rebellion. Veel reisreportages. Friedlkan niet tegen het onstandvastige hotelleven.
5. 1925: Buitenlandredacteur in Parijs voor Frankfurter Zeitung. In de zomer met Friedl naar Zuid-Frankrijk. Twee romans: April. Die Geschichte einer Liebe en Der blinde Spiegel. Ein kleiner Roman.
In het postconciliaire tijdperken hing voor toptheologen als Ratzinger geloof samen met gebouwen en rituelen, niet met theologische ideeën die ze niet wilden begrijpen. Geloof was voor hen een mysterie waar je niet over kunt en moet nadenken. Maar het //aggiornamento// kwam te laat en velen kon inhoudelijke vernieuwing niets schelen. Geloof als familiegevoel. Je zag bij de progressieven en wereldverbeteraars de verenging van geloof tot moraal. ''Ze namen van het Tweede Vaticaans Concilie alleen de ideeën over die ze aanstonden, niet de Heilige Drievuldigheid. Wat je hoorde: "Geloof is niet alleen de leer, maar ook het handelen". Moraal verving het geloof.'' Daarna raakte de moraal op de achtergrond in de vrijheid-blijheid periode aan het eind van de vorige eeuw. Nu is de moraal weer terug. 

''De progressieven zeiden ook: De kerk is geen gebouw maar een gemeenschap van gelovigen die het goede doen. God komt liever in schuren dan in kathedralen.'' Kerken hebben mij altijd geraakt. Als student ging ik dagelijks, elke ochtend, even naar een jezuïetenkapel om te bidden. Die geur van heiligheid. De kapel moest wel leeg blijven. Goed dat die kapel een gebouw was, dat mij met rust liet. Een kerkgebouw laat meer vrjheid dan gelijk welke leer. De kapel is intussen afgebroken. Gebreken maken de geliefde tot wie hij of zij is. Misschien is de kerk wel op haar sterkst als ze gewoon kerkgebouw durft te zijn. De Colombiaanse auteur Nicolás Gómez Dávila (1913-1994) schreef: “Het is niet belangrijk dat mensen geloven dat God bestaat. Het is belangrijk dat hij bestaat.” ''De kerk als gebouw raakt de harten van de mensen beter dan de vernieuwde theologie na Vaticanum II. Daarom moeten kerken elke dag open zijn. De kerk moet een kerk blijven, niet zozeer voor de gelovigen als wel voor de samenleving. ''


Als je de Attitude van een astronaut hebt ga je van de aarde houden (Wubbo Ockels op zijn sterfbed). Astronauten krijgen liefde voor de aarde, een verlangen om onze planeet te beschermen. Blijvende bewustzijnsverandering. Dat is wat ik wil! Afstand brengt nabijheid. 
Hulp komt van anderen. Zelf zijn we het probleem niet de oplossing. Van self-help naar self-obsessed. Maslow begon er zelf aan te twijfelen in de maanden voor zijn dood in 1970. Carl Rogers (unconditional positive regard): less self-esteem, more self-discipline, please. Een epidemie van narcisme. Vroeger hielpen mensen elkaar. Psychoanalyse sluit je op in jezelf. De samenleving, de anderen, zijn de bron van je ellende. Een gevangene kan zichzelf niet vrijlaten. Leiders hebben adviseurs nodig. Kijk naar Thatcher, William Whitelaw.<p>
Verhaal over Viktor Frankl, //Man's Search for Meaning//. Zijn eerste beslissing: laat de nazi's niet mijn situatie bepalen. Hij bleef zichzelf niet zien als slachtoffer, als Jood, maar als wetenschapper, als psychotherapeut, in een experiment om te bepalen wat de grenzen van de menselijkheid zijn. Hij hield zijn gevoel van vrijheid intact, zijn eerste overwinning op de nazi's. Volgende beslissing: mensen opzoeken die die wil om te leven leken op te geven. Op zoek gaan naar een missie die op hen wachtte om vervuld te worden. Iemand die op je wacht. Nieuwe vorm van therapie: Logotherapie, psychologische heling op basis van het zoeken naar een bestemming. De essentie van een missie:  een oproep van buiten jezelf. Vraag niet wat wij van het leven willen, vraag wat het leven van ons wil. Het verschil tussen ambitie en roeping. De mens is altijd gericht op iets buiten zichzelf: een zaak om te dienen of een persoon om lief te hebben. Je bereikt deze transcendentie door jezelf te vergeten. Iris Murdoch: <p>
//I am looking out of my window in an anxious and resentful frame of mind, oblivious of my surroundings, brooding perhaps on some damage done to my prestige. Then suddenly I observe a hovering kestrel. In a moment, everything is altered. The brooding self with its hurt vanity has disappeared. There is nothing now but kestrel. And when I return to the thinking of the other matter it seems less important.// <p>
Het Ik valt stil, we zijn niet het centrum van het universum. Dit is volgens Murdoch echt Plato: het ware, het goede en het mooie zien als iets dat objectief daar is, niet door onszelf gemaakt. <p>
Het onderscheid tussen Ik en Mij, subject en object. Ik die mijn gevoelens voelt, subjectief. Maar ik kan ook buiten mezelf gaan staan en mijn gevoelens bekijken: Mij. Tweede orde evaluaties. We kunnen onszelf beschouwen: moet ik dit doen? Dat maakt ons tot morele wezens, in onderscheid van de dieren. <p>
Voorbeeld van Joodse dokter die gedeeltelijk verlamde soldaten weer uit bed en in de rolstoel krijgt. Sport als nieuw doel in hun leven. Basis voor de Paralympics. Guttman zag als outsider de mogelijkheden. <p>
De kwaliteit van onze relaties geeft ons, meer dan iets anders een gevoel van betekenis en vervulling. Liefde als de beste verlossing van eenzaamheid. Het goede nastreven is een kwestie van unselfing, de wereld zien zoals hij is, niet zoals we hem voelen of vrezen te zijn. <tgeel>Dat lijkt me onmogelijk. Een nieuwe ethische fenomenologie?</tgeel> Moraliteit is un-selfhelp, is relaties leggen met anderen. Reageren op hun behoeften, luisteren, niet erop staan dat ze naar jou luisteren. En dan zul je zelf op een dieptepunt de uitgestrekte hand van een ander ervaren, de hand van God. 
<tblauw>dinsdag 2021, wolken en ☀️, 15°</tblauw>

 
|^<$checkbox field='v00' checked='ja' unchecked='nee'></$checkbox>|^07:13 |[[Sportief: Roeien]]|
|^<$checkbox field='v01' checked='ja' unchecked='nee'></$checkbox>|^08:15|Klussen: Boodschappen|
|^|^08:50|Ontbijt|
|&#x2714;|^09:30|Klussen: Facedo|
|^✔|^10:30|Klussen: Vijg naar beneden|
|^&#x2714;|^11:30|Bestuur: Overleg met Vink over MV|
|^&#x2714;|^11:56 |[[Docent: Camus]]|
|^|^13:04 |Boek uit, nu lunchen|
|^&#x2714;|^13:27 |[[Bestuur: Overleg LT]]|
|^&#x2714;|^15:00|[[Sportief: Lopen]]|
|^✔|^18:43 |Hoe nu verder met Camus. We hadden vier stellingen bedacht:|
|^|^|1. God is je lot|
|^|^|2. Iets met hoop, geen hoop|
|^|^|3. De pest, dat is het leven|
|^|^|4. Je kunt altijd kiezen|
|^|^|Wat we nu moeten doen is elke stelling verder onderbouwen vanuit passages in het boek. Misschien ook nog een beetje eromheen lezen. |
|^ ✔|^22:00|Bestuur: Machinekamer|

<tblauw>vrijdag 2021, wolken, misschien iets lichter, 18°</tblauw>

|^08:15|Nu lopen|
|^12:34|nu heemstra, per twee hoofdstukken een streepje|
|^15:50|Welke vijf zaken gaan we nu doen.<br>1. Put openmaken en waterstand controleren<br>2. Mail over verkiezing Anne tot Secretaris<br>3. Vijf dagboekfragmenten<br>4. Planning reorganiseren en Egmond prio's noteren<br>5. VU mails opruimen|
|^15:56|Nu tot 16:30 put openmaken, waterstand controleren en put dichtmaken|
|^16:55|Dat was de put en het opruimen van de hoopjes en de slang. Nu mail over verkiezing Anne. |
|^17:04|Nu vijf dagboekfragmenten|
|^20:45|Planning reorganiseren en Egmond prio's|
|^22:44|Planning gereorganiseerd|
<tblauw>maandag 2021, wolken maar nu ook licht, geleidelijk meer zon en droog, 6°</tblauw> 

|customTable|k
|^ <$checkbox field='103724' checked=1></$checkbox>|<<adv "scriptieprijs">>|
|^ <$checkbox field='103740' checked=1></$checkbox>|<<adv "COBEX">>|
|^ <$checkbox field='103801' checked=1></$checkbox>|<<soc "kerstkaarten">>|
|^ <$checkbox field='105021' checked=1></$checkbox>|<<adv "Mail Ton Klein">>|
|^ <$checkbox field='105036' checked=1></$checkbox>|<<adv "Mail Sanne Huibregts">>|

|^10:38|Even naar de scriptieprijs kijken|
|^10:49|OK, nu even Fernand|
|^10:57|Nu mail Ton en Eef, en Sanne Huibregts|
|^11:04|Nu nog een koffie en de kerstkaarten en oefeningen|
|^11:18|Nu werken aan de kerstkaart. Eerst drie foto's van bomen in het Vliegenbos|
|^11:36|Even een schets maken op de tablet|
|^12:43|OK, iets gemaakt. Eerst maar eens zien wat Anne er van vindt.|
|^12:59|Nu even een doosje scannen, dan Magendane en lunchen|
|^14:53|Even dat probleem van die mailtjes aanpakken.|
|^15:14|Ik kom hier echt niet uit. Heb ook geen zin om hier tijd aan te besteden. Voorlopig maar even zo laten...|
<tblauw>donderdag 2022, bewolkt en winterse buien, 5°</tblauw> 

|customTable|k
|^ <$checkbox field='74113' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='74152' checked=1></$checkbox>|<<bes "overleg HOF+SELA">>|
|^ <$checkbox field='101719' checked=1></$checkbox>|<<bes "notitie overleg HOF en SELA">>|
|^ <$checkbox field='101805' checked=1></$checkbox>|<<klu "koelkast afvoeren">>|
|^ <$checkbox field='101821' checked=1></$checkbox>|<<stu "muziek">>|
|^ <$checkbox field='101832' checked=1></$checkbox>|<<klu "Financiën">>|
|^ <$checkbox field='101857' checked=1></$checkbox>|<<klu "bureau opruimen">>|
|^ <$checkbox field='101918' checked=1></$checkbox>|<<klu "abonnement Anne">>|
|^ <$checkbox field='101943' checked=1></$checkbox>|<<lez "Apprentice">>|
|^ <$checkbox field='102005' checked=1></$checkbox>|<<adv "review">>|

|^07:42|Nu roeien|
|^09:02|Nu ontbijten|
|^09:47|Even mails en overleg voorbereiden|
|^10:15|Verdere plannen vandaag: abonnement Anne, muziek, Apprentice, bureau opruimen, koelkast afvoeren, review, iets doen aan Financiën|
|^12:08|Nu notitie HOF&SELA. Wat komt daarin: overleg etc. aanleiding: keesk kok. afspraken 2020. wens om hof en ekklesia dicht bij elkaar te houden. er lopen nu afspraken. alex, uitgeleid, geplande opnames van het werk van Antoine en Tom. we spreken af: bestuur intentie samenwerken|
|^12:36|OK, nu doen. |
|^13:41|Koelkastje staat beneden in de berging, past niet in de auto. Nu mails van Riekeld in notitie zetten.|
|^13:59|Nu agenda in orde maken en bestanden versturen.|
|^14:22|OK klaar. Nu nap en lezen: tot 110|
<tblauw>donderdag, een enkele bui en minder warm,24°</tblauw><p>

"""
07:11 Eerste pomodoro: eva kyndt

Innovative value of the three submitted publications [60%]; 
Valuable participation and contribution in research projects in the field of Learning and Instruction [20%]; 
Quality and innovative value of the PhD [10%]; 
Overall contribution in the field of Learning and Instruction [10%].
08:04 Helemaal gelukt! Nu strand (?) en aankleden.
<tblauw>zondag 2021, weer een prachtige dag, 20 - 27°</tblauw><p>
<tblauw>zaterdag 2021, zon, wolken en regen, 5°</tblauw> 
""" 

<$list filter="[!has[draft.of]tag[#dagtaak]search:datum[0320]]"><$checkbox field=status checked="klaar" unchecked="bezig"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br></$list> 
17:43 nu lezen in Al het blauwe

<tblauw>donderdag 2021, op dit moment zon, 14 - 17°</tblauw>


|^✔|^08:01 |Els en Ada ophalen|
|^✔|^08:30|Op Els en Ada passen|
|^✔|^13:00|Verslag Comenius WO interviews|
|^✔|^11:00|Sportief: fietsen met Els en Ada|
|^✔|^18:00|Sociaal: Eten bij Gerrie|
|^✔|^21:00|Sociaal: Margriet en Ewald|
<tblauw>zaterdag 2021, bewolkt, motregen, 12°</tblauw>

| <$checkbox field='115907' checked=1></$checkbox>|<<klu "Boodschappen">>|
| <$checkbox field='120222' checked=1></$checkbox>|<<lez "Kranten">>|
| <$checkbox field='120234' checked=1></$checkbox>|<<klu "Achterlicht Anne">>|
| <$checkbox field='120403' checked=1></$checkbox>|<<lez "Crossroads">>|

|^07:39|Tien blz. Crossroads|
|^11:58|OK, voor elkaar! Nu niets meer doen aan TiddlyWiki! Nu boodschappen|
|^13:16|Nu kranten en nap|
|^16:03|Nu nap en Crossroads|
|^18:03|Nu verder met Crossroads|

<tblauw>woensdag 2021, buien, 17°</tblauw>

| <$checkbox field='a' checked=1></$checkbox>|Roeien|
| <$checkbox field='b' checked=1></$checkbox>|Tiddlers printen|
| <$checkbox field='c' checked=1></$checkbox>|Bezoek Paulien vd Poel|
| <$checkbox field='d' checked=1></$checkbox>|Boodschappen|
| <$checkbox field='e' checked=1></$checkbox>|Siebe|

|^19:13|Enorm gepruts om tiddlers geprint te krijgen, maar gelukt.|
|^22:54|Het is tijd om naar bed te gaan. Morgen vroeg op om Els en Ada te halen.|
<tblauw>maandag 2021, weer een zonnige dag, 23°</tblauw>

Hopelijk lukt het om vandaag in Vicenza aan te komen. We gaan straks met de landlady maar de garage. Dan is het spannend. Kunnen ze de banden vandaag vervangen. We hebben wel geboft met de landlady en de twee oudjes. Die ook nog heel verdienstelijk kunnen koken.

Vicenza is 140 km hiervandaan, 1½ uur rijden. 

Verder hoop ik met Sherriff op 60% te komen. Dat is wel hoog gegrepen. Tenslotte hoop ik met de dagboekaantekeningen verder te komen: eerst maar het schrijfwerk van zondag en

|^17:02|Intussen al weer de hele middag in Vicenza. Met de auto ging het vanochtend heel vlot. Om acht uur met de garage gebeld. De banden bleken beschikbaar, alle vier moesten vervangen. Om kwart over tien geef een Mercedes van de garage voor om ons naar de garage te brengen. Betaald en auto meegenomen met vier nieuwe banden. Om 11 reden we weg bij Albergo Bruna. Om half 1 arriveerden we hier in Vicenza. Livia was nog op school maar om half 2 konden we terecht. Nu even rustig bij de Limonaia lezen en schrijven.|

















<<ximg "/Foto's/201610 Anne en Jos op het balkon.jpeg">>
<<ximg "/Foto's/201612 Mercia op Tweede Kerstdag, eerste uitstapje.png">>

<<ximg "/DD/Thuis/201701 Mercia bij Anne over de schouder.jpeg">>
<<ximg "/DD/Vriend en Familie/20170103 Celine Meulman.jpg">>


<<ximg  "/DD/Thuis/20170126 Anne en Mercia.jpg">>
<<ximg  "/Foto's/20170209 Mercia.jpg">>




Rocking the child weinberg
Het celloconcert van Mieczysław Weinberg is heel erg mooi!!
Erfpacht
Al doende

The chair netflix
Pattex PL300

<tblauw>woensdag 2021, opklaringen en opnieuw koude lucht uit het noorden, 11°</tblauw>

|^&#x2714;|^06:12 |[[Docent: Camus]]|
|^&#x2714;|^09:15|Bestuur: Noord4Us lift, kabels vervangen|
|^|^09:42 |Verder met Camus. Eerst even tanden poetsen.|
|^&#x2714;|^10:00 |Nu powerpoint aanmaken.|
|^&#x2714;|^10:08 |Nu de tweede preek van Paneloux nogmaals lezen. Wacht even, nu snap ik het even niet meer. God is ons lot is de eerste stelling waarin de werdegang van Paneloux aan de orde komt. Ik denk dat ik die nu wel kan opschrijven. We gaan van Camus aantekeningen maken. |
|^&#x2714;|^17:48 |OK, de voorbereidingen voor vanavond zijn klaar! Hopelijk lukt het om het programma een beetje volgens plan af te werken. Nu even ontspannen|
|^|^19:30|Voorbereiden|
|^✔|^20:00|Gespreksavond|
 
<tblauw>zaterdag 2021, heiig en zonnig, 20 - 25°</tblauw>

|^12:40|Vijf zaken plannen.<br>1. Kranten lezen.<br>2. Beyond<br>3. Mails opruimen<br>4. Helpen met koken<br>5. Boek Schippers|
|^12:49|Nu eerst kranten|
<tblauw>dinsdag 2021, eerst mist, later zon, 4°</tblauw> 

|customTable|k
|^ <$checkbox field='72908' checked=1></$checkbox>|<<soc "kerstkaarten">>|
|^ <$checkbox field='72942' checked=1></$checkbox>|<<adv "reviewen">>|
|^ <$checkbox field='111817' checked=1></$checkbox>|<<klu "mv buren">>|
|^ <$checkbox field='111830' checked=1></$checkbox>|<<klu "Boodschappen">>|
|^ <$checkbox field='111908' checked=1></$checkbox>|<<klu "fietsband vervangen">>|

|^11:20|nu band vervangen en boodschappen|
|^16:57|Komend kwartier: Tolstoy en Advent Carol Service. Daarna dia´s|
|^17:27|Nu een kwartier dia's, daarna review|
|^18:52|Nu afwas, daarna review|
|^19:36|Nu tot 20 uur review|
<tblauw>vrijdag 2022, wolken en zon, ook buien, 6°</tblauw> 

|customTable|k

|^20:38|Even naar Anne's abo kijken;|
<tblauw>vrijdag</tblauw><p>

"""
<tblauw>woensdag, weer een prachtige dag, 24 - 32°</tblauw><p>

"""
09:48 Dit is ook een manier om bij je ademhaling te blijven. Nu even de oefeningen, de ademhaling, het bonnetje van de HEMA en naar de HEMA.
09:54 Oefeningen
12:05 Oefeningen. Dus notities on the fly in google keep. 
12:21 Nu even de linkjes voor de basiscursus.
Module 1. Perspectives on Learning and Instruction: http://bit.ly/2rCa44X
Module 2. Learning and Transfer: http://bit.ly/2sPtHtz
Module 3. Knowledge and Memory: http://bit.ly/2tN38CN
Module 4. Metacognition and Self-Regulation: http://bit.ly/2sV3yu2
Module 5: Learning and Instruction: http://bit.ly/2sP9WlU
Module 6: Motivation and Engagement: http://bit.ly/2rQxXK4
Module 7: Learning as a Social Process: http://bit.ly/2tsl0DA
Module 8: Multimedia Learning: http://bit.ly/2tssVAU

Epilogue: 3:12
1.1 06:01
1.2 17:16
1.3 22:44
1.4 20:08
1.5 06:08

2.1 02:21
2.2 14:26
2.3 12:41
2.4 20:06
2.5 08:49
2.6 04:51

3.1 01:33
3.2 22:35
3.3 12:22
3.4 22:42
3.5 13:46

4.1 02:14
4.2 16:38
4.3 18:13
4.4 17:59
4.5 05:29

5.1 02:50
5.2 15:20
5.3 22:05
5.4 11:13
5.5 08:57

6.1 02:48
6.2 38:15
6.3 25:56
6.4 25:04
6.5 24:49

7.1 03:15
7.2 39:51
7.3 23:51
7.4 47:52
7.5 17:52

8.1 06:10
8.2 37.01
8.3 54:59
8.4 12:30
8.5 41:40

16:41 Wat ga ik het komende uur doen?
- Feedback naar Eric ok
- Feedback naar VluchtNoord ok
- bureau opruimen ok
- snoeren
- route
16:42 Dat lijkt me voldoende. Eerst feedback naar Eric. Hoe pakken we dat aan. Formulier Paul bekijken. Aantekeningen Paul bekijken. Doorsturen met commentaar. Tot 17 uur. 
17:21 De route: 
21:36 Nu de snoeren en naar bed. 
<tblauw>zondag 2021, wolken, 5°</tblauw> <br>
""" 
<$list filter="[!has[draft.of]search:datum[0321]]"><$checkbox tiddler={{!!title}} index="0321" checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>{{Cultuur: Kinderopera||cl}}<br>
21:24 Nog even 10 dagboekfragmenten
21:44 Nu Al het Blauw
<tblauw>vrijdag 2021, buien, wat zon en veel wind, 14 - 16°</tblauw>

|^✔|^07:30|Roeien|
|^✔|^10:45|Klussen: TimeStamp in TiddlyWiki|
|^<$checkbox field="a" checked=1></$checkbox>|^11:03|Klussen: Afval wegbrengen|
|^<$checkbox field="b" checked=1></$checkbox>|^11:05|Mail Albert en Jan|
|^<$checkbox field="0" checked=1></$checkbox>|^11:11|Tas inpakken|
|^✔|^11:44|Ekklesia betalen|
|^✔|^12:00|Naar Deventer|
|^|^15:41|Sacks|
<tblauw>zondag 2021, zonnige perioden, 11°</tblauw>

|customTable|k
|^ <$checkbox field='94625' checked=1></$checkbox>|<<bes "[[Toespraak Hans Werner]] voorbereiden">>|
|^ <$checkbox field='94328' checked=1></$checkbox>|<<bes "ALV Ekklesia voorbereiden">>|
|^ <$checkbox field='173545' checked=1></$checkbox>|<<bes "Ekklesia ALV">>|

|^09:49|Nu ALV voorbereiden|
|^10:09|OK, klaar|
|^22:00|Indrukwekkende documentaire over de gesloten jeugdzorg op IDFA, Jason. Die gesloten jeugdzorg moet onmiddellijk gesloten worden. Nu even dagboekaantekeningen.|
<tblauw>donderdag 2021, wind en buien, 11°</tblauw>

| <$checkbox field='a' checked=1></$checkbox>|<<soc "Els en Ada">>|
| <$checkbox field='b' checked=1></$checkbox>|<<klu "Els en Ada halen">>|
| <$checkbox field='c' checked=1></$checkbox>|<<bst "SVAN">>|
| <$checkbox field='d' checked=1></$checkbox>|<<klu "checkbox aanpassen">>|
| <$checkbox field='e' checked=1></$checkbox>|<<soc "Bij Gerrie eten">>|
| <$checkbox field='f' checked=1></$checkbox>|<<muz "Piano spelen">>|
| <$checkbox field='g' checked=1></$checkbox>|<<lez "Kruispunt">>|

|^09:03|Els en Ada opgehaald|
|^11:25|Nu even een paar blz. lezen|
<tblauw>dinsdag 2021, belooft een zonnige dag te worden, 21°</tblauw>

Naar Venezia!

|^17:26|Terug naar huis. Mooie tocht door Venezia gemaakt. De toeristische trekpleisters waren een druk, maar verder ook veel rustige stukken. Gezellig geluncht. Nu lekker afgepeigerd in de trein naar Vicenza|
|^22:50|Weer twee afleveringen van Downton Abbey verder. Geen grote rampen gebeurd.|
Gezien op dinsdag 26 januari.
Anarchistisch droomeiland komt wat braafjes over
https://www.trouw.nl/a-b134cbff
Gezien op vrijdag 29 januari op NetFlix

Wat verbergt de grond van het landgoed?
https://www.trouw.nl/a-bba51fb2
Gezien op tv op 5 februari 2021

USA/D 1995. Van Bryan Singer. Met oa Kevin Spacey, Chazz Palminteri, Stephen Baldwin, Gabriel Byrne en Kevin Pollak. Uitstekend geacteerd misdaadverhaal waarin vijf criminelen elkaar in een cel ontmoeten en, voordat ze onschuldig worden vrijgelaten, besluiten te gaan samenwerken. Leider is de charismatische Keaton (Byrne). Gaandeweg komen ze in contact met de geheimzinnige meestermisdadiger Keyser Soze. De film, naar een met een Oscar bekroond, ingenieus script van Christopher McQuarrie, betekende de doorbraak voor acteur Spacey. Die kreeg ook een Oscar, voor zijn rol als de manke ‘Verbal’ Kint, die in een raamvertelling de hele geschiedenis uit de doeken doet aan politieman ­Kujan (Palminteri).
Gezien thuis op 6 februari 2021

https://www.lumiere.be/nl/movies/les-uns-et-les-autres/

https://www.rottentomatoes.com/m/les_uns_et_les_autres
Gezien op NetFlix op 9 feb 2021
Recensione: L'ultimo Paradiso, film Netflix con Riccardo Scamarcio • Universal Movies
https://www.universalmovies.it/recensione-lultimo-paradiso-riccardo-scamarcio/
Thuis gezien, geestige kostuumfilm van Milos Forman met een 29-jarige Colin Firth in de hoofdrol.
Thuis gezien op 18 maart 2021

https://www.parool.nl/kunst-media/hope-gap-eerlijk-beeld-van-een-scheiding-maar-echt-pijn-doet-het-niet~b23fd7abf/
Thuis gezien op 27 maart 2021. Indrukwekkende film over de Birma spoorweg. Mooie rol van Colin Firth.
http://digitalekrant.trouw.nl/trouw/1215/article/1327914/36/3/render/?token=546727da80b8e702a06be029d16091d1&vl_app_id=be.persgroep.red.mobile.android.trn&vl_app_version=5.0.3&vl_platform=android
Gezien in Egmond op 17 april 2021: film uit het programma Movies that Matter:
The man who sold his skin.

https://www.cineart.nl/films/the-man-who-sold-his-skin
https://www.vprogids.nl/cinema/films/film~13280927~de-beentjes-van-sint-hildegard~.html
Gezien in de Boerhaar op 4 mei 2021.

Thuis gezien via Picl op 15 mei 2021. Aardige film, een zeventje.

https://cinemagazine.nl/la-prima-cosa-bella-2010-recensie/
Gezien in Egmond op een van de eerste lenteavonden van het jaar.

https://www.vprogids.nl/cinema/films/film~8863949~the-angels-share~.html
Gezien op Canvas. Eerste Dogme 95 film.

https://www.vprogids.nl/cinema/lees/artikelen/specials/2015/De-doorbraakfilm-van-Thomas-Vinterberg.html

Gezien in Hyena. Film met veel Oscars over nomaden in de VS.
zie Nomadland schetst een iets te romantisch portret van het Amerika zonder sociaal vangnet ★★★★☆
https://www.volkskrant.nl/a-b9e47866

Nomadland, genomineerd voor zes oscars, is een diep ontroerende roadmovie 
https://www.trouw.nl/a-b2608128
Gezien op 7 augustus 2021 in FC Hyena. Heel erg mooi.

[[Trouw|https://www.topics.nl/supernova-verdient-een-prijs-voor-zijn-stiltes-a16171539trouw/36622fe92dc4b3e90923be274c06f00bdc4bed95eee166e9d8fc1a5a77656ac8/?context=zoek/?query=Supernova&referrerUserId=1765e1725727411c8d93a9441c20e103]]

Twee geliefden die hun angsten verbergen, tot het niet langer gaat ★★★☆☆
https://www.volkskrant.nl/a-b64aafc4

[[De Volkskrant|https://www.topics.nl/twee-geliefden-die-hun-angsten-verbergen-tot-het-niet-langer-gaat-a16257268vk/33b0a33fca985da1cfaeaffc376ad806acef42f9f522dfe18d32c66d53823ea3/?context=zoek/?query=Liefdeskoppel&referrerUserId=1765e1725727411c8d93a9441c20e103]]

Gezien thuis op 29 aug. Aardig stukje in VPRO-gids.

Puzzelen met Pedro
Pedro Almodóvars La mala educación is zowel een aanklacht tegen het katholicisme als een ode aan de cinema.

La mala educación

Npo 2 Extra, 20.30-22.10 uur

Kindermisbruik, moord, verslaving, zelfhaat – het zijn heftige thema’s die de Spaanse cineast Pedro Almodó­var aansnijdt in La mala educación uit 2004. Volgens schrijver en Almodóvar-fan Raoel de Jong heeft dat echter geen loodzware film opgeleverd. ‘Voor mij gaat de film over hoe je je leven in een opera verandert,’ zegt De Jong in een nagesprek bij de filmvertoning vanavond op NPO 2 Extra. ‘Over hoe je een mooi verhaal van je leven kunt maken, ook al gebeuren er soms verschrikkelijke dingen.’

De grauwe werkelijkheid omtoveren in kleurrijk melodrama, dat is Almodóvar inderdaad wel toevertrouwd. In La mala educación doet hij dit op twee niveaus. Allereerst als regisseur: naar eigen zeggen stopte hij de film vol autobiografisch mate-riaal. Met tussenpozen werkte hij tien jaar lang aan het script, om pas na het Oscarsucces van Todo sobre mi madre (1999) en Habla con ella (2002) de moed te vinden de film te maken. Zoals hij in interviews zei: “Dit verhaal moest echt uit mijn systeem.”’

Daarnaast speelt hij op een metaniveau met de werkelijkheid: de personages in de film maken zelf ook een film over hun jeugdherinneringen. Hoofdpersonen Ignacio en Enrique leren elkaar als kinderen kennen op een streng katholieke kostschool in de jaren zestig. Na een aanvaring met een pedofiele priester raken de jongens van elkaar gescheiden. Jaren later werkt Enrique (Fele Martinez) als undergroundcineast wanneer hij wordt benaderd door Ignacio (Gael Garcia Bernal), die inmiddels rondkomt als acteur en dragqueen. Ignacio stelt voor om samen een film te maken over het incident, al is het maar om wraak te nemen op die priester. Almodóvar toont vervolgens scènes uit de film-in-een-film en laat de grenzen tussen fictie en werkelijkheid steeds verder vervagen, zodat de kijker flink aan het puzzelen wordt gezet.

La mala educación laat zich vertalen als ‘slecht onderwijs’, en de film kan dan ook worden opgevat als een aanklacht tegen het katholicisme. Toch was La buena educación ook best een geschikte titel geweest: Almodóvar heeft vaak gezegd dat hij in de bioscoop zijn belangrijkste levenslessen heeft geleerd en in deze film brengt hij meer dan ooit een ode aan de cinema. Niet alleen met die film-in-een-film, maar ook door lustig te citeren uit andere films. De openingscredits zijn puur Hitchcock, de plot is een mix van noir-klassiekers als Double Indemnity , Leave Her to Heaven en Vertigo , er klinkt muziek uit Breakfast at Tiffany’s , en ga zo maar door.

En zo krijgt dit sombere verhaal inderdaad alsnog iets opbeurends. Al is dat zeker ook te danken aan Almodóvars milde blik. In een interview met The New York Times zei hij destijds: ‘Als scenarist probeer ik in al mijn films begrip op te brengen voor alle personages. Ik zoek altijd naar een zekere verlossing voor ze – een erg katholieke neiging natuurlijk. In deze film ben ik zelfs gesteld op de foute priester.’

Rick de Gier

<tblauw>donderdag 2021, wolken en veel zon, 10°</tblauw>


|^&#x2714;|^13:25 |Vandaag oppassen op Els en Ada. Allebei een beetje snotterig. Ada krijgt soms in de slaap een hoestbui en wordt daar wakker van. Sneu. Nu slapen beiden.|

<tblauw>zondag 2021, nog warm maar onweer op komst°</tblauw>

|^08:14|Nu eerst even roeien|
|^10:54|Heel vervelend is dat je hier continu moet saven, du moment dat je naar een ander window overstapt is al het niet gesavede weg. |
|^16:39|Het lijkt gelukt te zijn. Tiddlywiki in een Gitlab repository. Alleen het saven is nog even onduidelijk.|
|^16:46|We komen steeds dichter in de buurt.|
|^16:52|Dit werkt! Waar je om moet denken is dat er nu helemaal niet meer automatisch gesaved wordt. Dus echt na elke actie saven.|
|^16:57|Ben er nog niet helemaal gerust op. Nog steeds foutmeldingen.|
|^17:04|Nog steeds problemen met het saven.|
|^17:14|Het lijkt te lukken op de Surface en op de Lenovo, maar niet op de telefoon|
|^17:17|Het is duidelijk dat het saven en beetje tijd kost. Is dat het?|
|^17:30|Nu zijn ze alledrie identiek|
|^17:33|Even nagaan of Texpand voor de vertraging zorgt. Dat lijkt niet het geval. |
|^17:36|Ik heb nu de target branch for saving uitgezet. Dat lijkt geen probleem te vormen.|
|^17:38|Ik geloof dat dat de oplossing is!|
|^17:50|OK, even terug naar de stylus. Oeps, dat gaat niet echt goed. Opinieuw opstarten?|
|^17:57|Nou ja, we moeten het hiermee doen. We hebben al 40% van het geheugen opgebruikt. dat is minder.|
|^17:59|Nu even de ekklesia betalen, tot 16:15.|
|^18:05|OK, dat is snel gelukt. Nu nagaan of we de SVAN rekening kunnen opheffen.|
|^18:52|Nu even afwassen en mail aan Joke Alberts afmaken.|
|^19:22|OK, klaar!|
<tblauw>woensdag 2021, zon en sluierwolken, 2°</tblauw> 

|customTable|k
|^ <$checkbox field='83134' checked=1></$checkbox>|<<klu "boosterprik">>|
|^ <$checkbox field='83947' checked=1></$checkbox>|<<bes "stukje nieuwsbrief">>|
|^ <$checkbox field='150247' checked=1></$checkbox>|<<klu "Linux upgraden">>|
|^ <$checkbox field='150322' checked=1></$checkbox>|<<lez "10 blz Tolstoi">>|
|^ <$checkbox field='150340' checked=1></$checkbox>|<<adv "reviewen">>|
|^ <$checkbox field='150411' checked=1></$checkbox>|<<klu "doosje dia's">>|
|^ <$checkbox field='150442' checked=1></$checkbox>|<<spo "Rondje Marken">>|

|^08:32|Boosterprik gehaald, nu even wachten.|
|^15:02|Zelfde stuurloze gevoel als gisteren. Nu even lijstje maken. |
|^15:06|Nu even linux upgraden met kerstmuziek. Daarna stukje weekbrief|
|^15:24|Netjes, nu stukje nieuwsbrief. Nog even de mails nalopen.|
|^15:35|Geen weekbrief meer. Appje naar LT. Nu 10 blz. Tolstoi. Daarna reviewen.|
<tblauw>zaterdag 2022, grijs, 7°</tblauw> 

|customTable|k

|^14:14|Vandaag gaan Sara en Toon verhuizen naar het Sumatraplantsoen. Spannend. Tempo zat er vanochtend al goed in. Berend helpt mee. Twee Letse verhuizers, één boomlange kerel, doen het zware werk. Vanmiddag om een uur of half vijf even een kijkje nemen. |
|^14:18|Stel dat je een beperkt aantal taken zou willen monitoren, in de zin van plannen hoeveel keer per week, welke zouden dat dan moeten zijn: muziek, review, piano, lezen. Zoiets, om mee te beginnen? En hoe zou het er dan uit moeten zien de komende week:|

|!week 4 |!agenda |!muziek |!review |!piano |!lezen |
|^zondag 23|koffiezoom, Sui|Juslin||spelen|20 blz|
|^maandag 24|God en wij, Toon jarig, Sui|Juslin|reviewen|||
|^dinsdag 25|VEA vergadering|Juslin||spelen|20 blz|
|^woensdag 26||Juslin|reviewen|spelen|20 blz|
|^donderdag 27|Els en Ada||||10 blz|
|^vrijdag 28|koor|Juslin|reviewen||10 blz|
|^zaterdag 29|||||20 blz|

|^14:31|Helemaal niet gek. Vandaag 20 blz lezen moet wel lukken. Nu 10 en nap|
|^19:30|Nog even 10 blz lezen.|
<tblauw>donderdag, zonnige dag met wat wolken, 23°</tblauw>

|^09:25|Nu even vijf dagboekkaartjes|
|^10:19|Ja, daar ben je toch wel een uur mee bezig. Vreemd, alle aantekeningen van dinsdag en gisteren verdwenen. Je kunt toch moeilijk elke dag een lokale backup gaan maken. Nu even opnieuw de indeling van de podcast maken, tot 10:45|
|^10:46|Gelukt! Wat nu. Even invullen welke liedjes we hadden uitgekozen|
|^11:04|OK, nog een lied uitzoeken, na de eerste overweging. Nu even psalm 73 kopiëren|
|^11:11|OK. Nu de ingrediënten voor de eerste overweging: Stelling 2 over de absurde werkelijkheid|
<tblauw>dinsdag 2021, °</tblauw>
<tblauw>maandag 2021, wolken, 8°</tblauw> <br>
""" 
//Eerst//
<$list filter="[!has[draft.of]status[prio]search:datum[0322]sort[tocnr]]"><$checkbox tiddler={{!!title}} index="0322" checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
//Daarna//
<$list filter="[!has[draft.of]tag[#dagtaak]!status[prio]search:datum[0322]sort[tocnr]]"><$checkbox tiddler={{!!title}} index="0322" checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
07:35 Even een beginnetje met Turfs
08:44 Ontbijten, app naar Beer
zoekmechanisme herstellen 
13:50 Intussen lange zoom met Mirjam en Alex. En gebeld met Beer. Nu even tot blz.100 van Alles is blauw.
16:45 Nu even de stukken voor de WKO machinekamer doornemen. 
19:03 Wat moet nog: tblauw, geel, tags niet afbeelden, inhoudsopgave nalopen. 
20:19 OK, allemaal gedaan. Calendar moet nog worden aangepast. Nu notitie Mirjam. Mail Hans Werner. 
21:28 Nog even calendar. 
<tblauw>zaterdag 2021, buien, harde wind, later misschien iets droger, 13°</tblauw>


|^✔|^07:32|Klussen: checkmark|
|^✔|^07:44|Sacks|
|^✔|^10:23|Nog een keer checkmark|
|^|^10:37|Nu Drie artikelen uit de krant lezen|
|^✔|^10:40|Goslinga|
|^✔|^10:48|10 geboden Carel ter Linden: God is wat ons mensen heilig zou moeten zijn, onaantastbaar, onmisbaar voor ons leven. Zoiets als een wet. We maken hem eerst zelf, maar dan komt hij boven ons te staan. |
|^|^|https://www.mylum.tv/nl/films-lumiere|
|^✔|^11:54|Mooi essay van Joke Hermsen over vrijheid|
|^✔|^11:56|Nu Sacks proberen uit te lezen|
|^✔|^13:33|Mercia en Els|
|^|^14:33|Sacks|
|^|^19:16|Kinderen naar bed, verder met Sacks, nog 12 bladzijden|
|^|^19:19 |Nog 11|
|^|^19:23 |Nog 10|
|^|^19:26 |Nog 8|
|^|^19:32 |Nog 7|
|^|^20:30 |Nog 6|
|^|^23:21 |Nog 5|
|^|^23:23 |Nog 3|
|^|^23:30 |Nog 2|
|^|^23:32 |Klaar!|
<tblauw>maandag 2021, vrij zonnig, 5 - 9°</tblauw>

|customTable|k
| <$checkbox field='120234' checked=1></$checkbox>|<<klu "Achterlicht Anne">>|
|^ <$checkbox field='63215' checked=1></$checkbox>|<<adv "COBEX voorbereiden">>|
|^ <$checkbox field='63250' checked=1></$checkbox>|<<bes "Jaargesprek Alex">>|
|^ <$checkbox field='63321' checked=1></$checkbox>|<<bes "Afspraak bestuursvergadering Ekklesia">>|
|^ <$checkbox field='63407' checked=1></$checkbox>|<<bes "Afspraak Hans Werner">>|

|^06:29|Mooie foto's van Beer & Siets uit de VS.|
|^06:55|Nu roeien|
|^09:01|Dit is echt de ideale omgeving om de vinger aan de pols te houden. Nu COBEX voorbereiden. Stukken downloaden.|
|^10:05|Lukt niet echt met dat ~PublicSidebar. Hoewel het er goed uitziet. Hoe krijgen we die sidebar tabs weg?|
|^10:42|Gelukt! Nu klaar en met COBEX aan de slag. Downloaden in Pcloud.|
|^11:34|Tweede dossier: Belfor|
|^15:56|Nu even een nap|
|^16:45|Overleg met Comenius over Leadership ronde. Advies aan Sui zou mij wel eens de kop kunnen kosten. We horen er deze week meer van.|
|^17:19|Nu het derde dossier afmaken. Bezwaren in beroepsschrift op een rijtje.|
|^17:46|Nu derde dossier: Wong|
|^23:11|Dat was het jaargesprek met Alex. 1&frac12; uur, wel te lang maar een goed gesprek.|
<tblauw>vrijdag 2021, buien maar ook zon, 13°</tblauw>

| <$checkbox field='a' checked=1></$checkbox>|<<spo "Roeien">>|
| <$checkbox field='b' checked=1></$checkbox>|<<adv "Review">>|
| <$checkbox field='c' checked=1></$checkbox>|<<soc "App naar Kees">>|
| <$checkbox field='d' checked=1></$checkbox>|<<klu "Band Anne plakken">>|
| <$checkbox field='e' checked=1></$checkbox>|<<lez "Kruispunt">>|
| <$checkbox field='f' checked=1></$checkbox>|<<lez "Mulder en Keizer">>|
| <$checkbox field='g' checked=1></$checkbox>|<<bst "Tegentij">>|
| <$checkbox field='h' checked=1></$checkbox>|<<klu "Boodschappen">>|
| <$checkbox field='i' checked=1></$checkbox>|<<klu "Koken">>|
| <$checkbox field='j' checked=1></$checkbox>|<<muz "Koor">>|

|^10:17|Dit systeem werkt als een zonnetje. Hier bij blijven en van genieten. |
|^10:43|Van alle dingen die hierboven staan wil ik genieten, als tegenwicht tegen de spanning.|
|^12:38|Band geplakt. Nu lunch en review|
<tblauw>woensdag 2021, bewolkt, 22°</tblauw>

Vandaag geen grote plannen. Koffie drinken in Vicenza, misschien een rondje lopen, lezen en schrijven.

|^19:43|Allemaal gedaan. Nu lezen, naar 70%|
|^23:01|Even de reis morgen checken, dan kijken of we de 70% kunnen halen|
Mooie film naar een boek van Elena Ferrante. Olivia Coleman in de hoofdrol.

Trouw:

"""Olivia Colman triomfeert in pakkend psychologisch drama The Lost Daughter
The Lost Daughter
Regie: Maggie Gyllenhaal
Met Olivia Colman, Dakota Johnson, Jessie Buckley, Peter Sarsgaard, Ed Harris en Paul Mescal
★★★★
Belinda van de Graaf  16 december 2021, 14:48

De Amerikaanse actrice Maggie Gyllenhaal las De Verborgen Dochter (2006) van de Italiaanse bestsellerauteur Elena Ferrante. Ze herkende zich in het verhaal van de moeder die geen geijkte moeder is, en vroeg Ferrante of het mogelijk was om de rechten te krijgen voor een verfilming. Ferrante, die tot op de dag van vandaag anoniem is, bleef dat ook voor Gyllenhaal. Ze had wel contact, maar nooit persoonlijk, precies zoals het regisseur Saverio Costanzo verging bij de verfilming van Ferrante’s De Geniale Vriendin.

Een gedurfde keuze om als regisseur mee te debuteren is The Lost Daughter zeker. De film neemt ons mee in het hoofd van een vrouw van middelbare leeftijd, een succesvolle academica. Leda arriveert voor een werkvakantie op een zonovergoten Grieks eiland. Ze is helemaal happy met haar kamer aan zee. Maar je voelt ook meteen een thrillerachtige spanning. 

Een vrouw alleen mag blijkbaar ongevraagd worden geholpen
Er is de beheerder van het appartement (Ed Harris) die per se haar koffer wil dragen en er later in het café op staat haar maaltijd te betalen. En er is de jongeman van de strandtent (Paul Mescal, van Normal People-faam) die haar helpt de stretcher onder de parasol te zetten. Een vrouw alleen mag blijkbaar ongevraagd worden geholpen en aangesproken.

Leda’s eigen blik valt op een jonge moeder en haar dochtertje, verderop op het strand. Je ziet Leda als gehypnotiseerd kijken naar de moeder, gespeeld door Dakota Johnson als een prachtige, bijna droomachtige verschijning. Leda, opnieuw een imponerende rol van Olivia Colman (niemand die zo gelukzalig glimlacht) schiet even vol. Ze was zelf ook zo’n jonge moeder.

Herinneringen komen boven borrelen. We zijn met een jongere Leda (vertolkt door Jessie Buckley) opeens terug in de tijd dat haar man veel op reis was voor zijn werk en zij haar baan als vertaalster moest zien te combineren met de opvoeding van hun twee dochtertjes. Die verdeling was doodnormaal.

Ze wil een goede moeder zijn
Zonder te veel te verklappen, zien we in flashbacks hoe Leda naar een ontsnapping begint te verlangen. Ze wil een goede moeder zijn. Tegelijkertijd ervaart ze het hebben van kinderen als een verpletterende verantwoordelijkheid. In het boek schrijft Ferrante over een ‘wurgende band’. En zo laveert Gyllenhaal tussen heden en verleden, waarbij Leda’s herkauwen in het heden vooral dient om het pijnlijke verleden te lijf te gaan.

Het gevaar is wel dat Gyllenhaal met alle flashbacks te veel probeert te verklaren. Het mooie aan het boek is juist dat er allerlei ambivalente gevoelens zijn. Gelukkig komen die in Gyllenhaals psychologische drama uiteindelijk ook wel bovendrijven, maar het kan geen kwaad om Ferrante’s roman (er is voor de gelegenheid een nieuwe filmuitgave verschenen) er nog eens bij te pakken
Mooie grimmige satire op periode Trump.

Trouw:

"""Komedies die te graag willen, zijn zelden grappig. En de politieke satire Don’t Look Up wil héél graag. Dat is jammer, omdat de kritiek die de film op politiek en media heeft, eigenlijk bloedserieus moet worden genomen.

Of zit het toch anders? Is het helemaal niet de bedoeling dat deze film grappig is? Is het de bedoeling dat de lucht er steeds uitloopt en het ritme en de komische timing er steeds naast zitten? Is dit eigenlijk een vlijmscherpe analyse, een standrechtelijke executie van de chaos en onkunde op het Witte Huis onder Trump? Een man die de hele tijd grappen probeert te maken maar nooit grappig is? Is de film daarom steeds net niet grappig?

Een komeet zal alle leven op aarde vernietigen
Eerst een schets van het verhaal. Leonardo DiCaprio en Jennifer Lawrence spelen twee astronomen die ontdekken dat een komeet van een kilometer of 10 doorsnee over zes maanden zal inslaan en alle leven op aarde zal vernietigen.

Eerst kloppen ze aan bij het Witte Huis (Meryl Streep speelt president, Jonah Hill haar zoon en naaste adviseur), maar daar zijn de dames en heren vooral bezig met verkiezingen en media-imago. Niet zo dramatisch doen over die komeet, zegt de wetenschappelijk adviseur van de president tegen de twee astronomen, die de onkunde met open mond gadeslaan.


Leonardi DiCaprio in 'Don’t Look Up'. ©rv
Vervolgens loopt de boel steeds verder uit de hand. Zelfs live op tv dringt de boodschap niet door, omdat de talkshowpresentatoren alles als een shownieuwtje behandelen. De boodschap is sowieso wel erg pessimistisch, krijgen de astronomen na de uitzending te horen als hun impact op sociale media wordt geanalyseerd. Je zit er zelf ook met open mond bij, omdat je aanvoelt dat dit misschien akelig dicht bij de werkelijkheid komt: het effect van de boodschap lijkt belangrijker dan de boodschap zelf.

Gepolijste, gelikte grappen
Uiteindelijk is het de vraag of dat ongemakkelijke steeds-net-niet-komisch de bedoeling is. Juist omdat de film een nare bijsmaak geeft: verwissel de inslaande komeet met de coronapandemie en de film wordt een aanklacht tegen de aanpak van het virus onder Trump. Zo chaotisch voelden die vier jaar. Als je er zo over denkt, zijn het juiste de gepolijste, gelikte grappen die de plank zouden misslaan als McKay er een gelikte komedie van  had gemaakt.

Maar er moet een knoop worden doorgehakt en dan is het eindoordeel toch dat Don’t Look Up een mislukte film is. De toon is te onrustig – dan weer overheerst de lol, dan weer het drama van een incompetent landsbestuur – en de grappen zijn te wisselend van kwaliteit. De sterrencast en het gevoel voor humor van McKay (hij is ook producent van hitserie Succession en de scherpe komedie Booksmart) lopen elkaar steeds net mis.
Erg mooie zwart wit film over een romance door uiteindelijk de koude oorlog niet overleeft.

Trouw:

"""
Bitterzoete liefdesfilm Cold War toont het drama van het Oostblok
Cold War
Regie: Pawel Pawlikowski.
Met Joanna Kulig en Tomas Kot. 
★★★★☆
Belinda van de Graaf  6 december 2018, 14:08

Ze ontmoeten elkaar in 1949 op het Poolse platteland. Wiktor is een componist uit de grote stad die audities houdt voor een op te richten folkensemble. Hij maakt als een soort muzikale etnograaf geluidsopnamen van boerenmeisjes die uit volle borst Poolse volksliederen zingen. Zijn oog valt op een jonge vrouw. Ze heet Zula. Ze is blond en bloedmooi en eigenwijzer dan de anderen. Hij valt als een blok voor haar en tussen de twee ontspint zich een heftig liefdesverhaal.

De Poolse regisseur Pawel Pawlikowski volgt de geliefden over een periode van vijftien jaar, waarin de muzikale en politieke geschiedenis stevig doorklinkt. Hij geeft een inkijkje in het leven achter het IJzeren Gordijn waar de folkgroep, geïnspireerd op het beroemde Mazowsze Ensemble, onder streng toezicht staat van apparatsjiks. In lijn met het stalinistische regime worden odes aan Stalin gezongen. Het is prachtig gedraaid, bijna documentair, al zijn er later ook momenten waarop melodrama en mooifilmerij elkaar raken.

Het zijn twee rusteloze karakters die je meesleuren door de tijd, maar waar je ook moeilijk vat op krijgt

Jazzmuziek, waar Wiktor zo van houdt, is verboden in Polen. Ook merkt hij dat hij wordt bespioneerd. Als het gezelschap in 1952 Oost-Berlijn aandoet, spreken de geliefden af te vluchten naar het westen. Maar Zula, inmiddels de ster van het ensemble, komt niet opdagen en Wiktor vlucht alleen. Niet dat ze elkaar vergeten. Ze blijven elkaar stiekem ontmoeten – nu eens in Parijs, waar Wiktor zich als jazzpianist heeft genesteld, dan weer in Split, waar Zula optreedt. 

Zijn eigen ouders
Pawlikowski filmt het verhaal van de twee gelieven die niet met en niet zonder elkaar kunnen in de stijl van zijn bejubelde Oscarwinnaar ‘Ida’: in een intiem, vierkant kader en in oogstrelend zwart-wit. Hij kreeg er eerder dit jaar in Cannes de prijs voor de beste regie voor. Ook voert ‘Cold War’ met vijf nominaties (waaronder Beste Europese Film) de ranglijst aan van de European Film Awards.

Begrijpelijk wel, Pawlikowski is een meesterlijk verteller die feit en fictie soepeltjes in elkaar laat overvloeien. Hij baseerde de film losjes op het verhaal van zijn eigen ouders, een arts en een lerares uit Warschau die ook Wiktor en Zula heetten en eenzelfde soort ingewikkelde knipperlichtrelatie onderhielden. Van hun verhaal maakte hij een pijnlijke, bitterzoete liefdesfilm waarin het drama van het Oostblok verweven zit. 

Cold War laat zien wat het met een vluchteling doet om ver van huis te zijn en niet meer terug te kunnen. Wiktor is weliswaar vrij in Parijs, maar ook stateloos. Het lijkt alsof er steeds meer van zijn identiteit afbrokkelt. Joanna Kulig geeft als Zula juist vol gas. Ze is dwars en stuurs en speelt met overgave de femme fatale, terwijl ze ook last heeft van een verstikkend minderwaardigheidsgevoel. Het zijn twee rusteloze karakters die je meesleuren door de tijd, maar waar je ook moeilijk vat op krijgt. Daardoor blijft het verhaal van de grote onmogelijke liefde emotioneel gezien ook een beetje op afstand.

|^|^|[[Klussen: nieuwe tuigje voor de buggy bestellen]]|
|^✔|^07:21 |[[Sportief: Roeien]]|
|^|^10:07|Nu even wat doen. Mail Frans Prins beantwoorden.|
|^&#x2714;|^10:15|Docent: Mail Frans Prins|
|^|^10:16 |Even nagaan of we een lijstje "klaar" kunnen maken. Mooie muziek van Channa Malkin.|
|^|^10:47 |Dat ronddwalen is zeker niet waardig. Daar nu mee stoppen. Koffie zetten.|
|^&#x2714;|^13:18|Klussen: Nu boodschappen|
|^✔|^13:58|[[Lezen: Radetzkymars]]: Hoofdstuk IX|
|^&#x2714;|^15:28 |Klussen: afspraak vaccinatie verzetten|
|^&#x2714;|^15:30|Klussen: Afspraak bij cardioloog: 085 303 8620|
|^|^16:11 |Nog niet af maar nu even werken aan opheffing SVAN en aan Financiën|
|^&#x2714;|^17:00|Klussen: Frans Hulsman bellen: 0616487075|
|^&#x2714;|^18:00|[[Bestuur: SVAN opheffen]]|
|^&#x2714;|^18:15|[[Klussen: Financiën]]|
<tblauw>maandag 2021, steeds meer zonnige perioden, 20 - 23°</tblauw>

|^07:19|Nu roeien|
|^08:05|Nu aankleden, ontbijten, naar Egmond|
|^11:10|We gaan geen Texpand activeren. Het toetsenbord doet het nu goed en dat proberen we zo te houden. Nu even de instellingen hier in orde maken. |
|^11:14|Deze structuur moet voldoende zijn. Nu de bestuursvergadering voorbereiden. <br>Stukken verzamelen<br>Zoom opzetten|
|^11:58|Alles staat klaar. Toetsenbord werkt weer helemaal perfect!|
|^12:53|Dat was de bestuursvergadering. Geen bijzonderheden, 24 oktober uitgesteld. Nu stukken voor Cobex downloaden.|
|^14:25|Vragen bij [[zaak Lefrandt]]|
|^21:12|Scoringsvoorschrift verstuurd! Nu de andere twee zaken. Eerst de [[zaak Doomernik]], dan de [[zaak Ahllache]]|
|^22:19|OK, klaar. Morgen klaarzitten om 9:00 uur!|
<tblauw>donderdag 2021, bewolkt, kans op ijzel, temperatuur stijgt naar 5°</tblauw> 

|customTable|k
|^ <$checkbox field='75938' checked=1></$checkbox>|<<spo "roeien">>|
|^ <$checkbox field='100620' checked=1></$checkbox>|<<adv "reviewen">>|
|^ <$checkbox field='100636' checked=1></$checkbox>|<<bes "Paul Kraan">>|
|^ <$checkbox field='101033' checked=1></$checkbox>|<<doc "voorstel ICO cursus">>|
|^ <$checkbox field='161456' checked=1></$checkbox>|<<lez "Huiselijk Geluk uitlezen">>|
|^ <$checkbox field='161517' checked=1></$checkbox>|<<soc "Kerstkaarten versturen">>|
|^ <$checkbox field='161532' checked=1></$checkbox>|<<klu "Dia's scannen">>|
|^ <$checkbox field='161552' checked=1></$checkbox>|<<klu "Ger halen en brengen">>|
|^ <$checkbox field='161604' checked=1></$checkbox>|<<soc "Ger eten">>|

|^07:59|Nu roeien|
|^09:32|Nu tafel afruimen, scheren en reviewen|
|^10:05|Nu even kerstmuziek, Honegger, en reviewen tot half 11|
|^12:15|Interview met Ignatieff gelezen in NRC. Boek voorgesteld aan God en Wij. Nu even 10 blz. lezen|
|^16:16|Nu kerstkaarten aan Hubers, Joke, Seph, rest bestuur, Marian|
<tblauw>zondag 2022, grijs, 7°</tblauw> 

|customTable|k
|^ <$checkbox field='64445' checked=1></$checkbox>|<<soc "KoffieZoom">>|
|^ <$checkbox field='64458' checked=1></$checkbox>|<<adv "Sui">>|
|^ <$checkbox field='64509' checked=1></$checkbox>|<<stu "Juslin">>|
|^ <$checkbox field='64527' checked=1></$checkbox>|<<muz "piano">>|
|^ <$checkbox field='64544' checked=1></$checkbox>|<<lez "20 blz Apprentice">>|

|^06:46|Nu even 5 blz Apprentice, dan roeien|
|^10:33|Even Juslin voor deze week in kaart brengen|

|!week |!hoofdstuk |
|zondag|H4: 5; H5: 5|
|maandag|H5: 10|
|dinsdag|H5: 5; H6: 5|
|woensdag|H6: 10|
|vrijdag|H6: 5; H7: 5 (nog 11)|

|^10:46|OK, dit proberen. Nu even naar Sui kijken:|
<tblauw>vrijdag 2021, wolken, later zon, 18 - 23°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Camus: overweging 1 outline|
|^<$checkbox field='b' checked=1></$checkbox>|Camus: overweging 2 outline|
|^<$checkbox field='c' checked=1></$checkbox>|Camus: overweging 3 outline|
|^<$checkbox field='d' checked=1></$checkbox>|Financiën: geld overmaken|
|^<$checkbox field='e' checked=1></$checkbox>|SVAN|

|^08:18|Nu aankleden en ontbijten|
|^09:55|Nu even het geld overmaken, 10 min. Daarna Camus, overweging 1|
|^10:01|OK, nu Camus overweging 1. Hoe pakken we dit aan. Proberen top down te werken. <br>1. Drie hoofdpunten noteren, 10 min. <br>2. Vijf zinnen per hoofdpunt, 25 min.<br>3. Eerste hoofdpunt uitschrijven, 20 min.<br>4. Tweede hoofdpunt uitschrijven, 20 min.<br>5. Derde hoofdpunt uitschrijven, 20 min.<br>6. Losse einden oplossen, 30 min. <br>Dat is in totaal 2 uur en 5 minuten. Eens kijken wat we hiervan terecht brengen.|
|^10:06|Drie hoofdpunten noteren.|
|^10:17|Dat waren dus drie hoofdpunten per overweging. Iets langer dan gepland maar zeker geen drie keer 10 minuten. Nu Vijf hoofdzinnen per hoofdpunt, dat gaat wel 30 minuten kosten.|
|^11:11|Het gaat heel anders dan gepland. Ik ben mijn college over Camus van een half uur aan het uitschrijven, na eerst de aantekeningen die ik over de mythe van Sisyphus had gemaakt op te zoeken. Iets bleek in Trello te staan, waar ik toen alles in opschreef. Nog steeds wel een handig systeem. Ik wil toch terug naar mijn oorspronkelijke plan. De outline van overweging 1 voltooien. Dus vijf zinnen per hoofdpunt. De hoofdpunten zijn: |
|^14:26|OK, klaar voor dit moment. Nu nog even de liedjes spelen en de teksten in een word document aan elkaar plakken. |
<tblauw>woensdag 2021, °</tblauw>
<tblauw>dinsdag 2021, zon en wolken, 11°</tblauw> <br>
""" 
<$set name="today" value={{!!tocnr}}>
//Eerst//<br>
<$list filter="[!has[draft.of]status[prio]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
<br>
//Daarna//<br>
<$list filter="[!has[draft.of]tag[#dagtaak]!status[prio]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
</$set>{{Bestuur: commentaar stuk Mirjam||cl}}<p>
"""
07:25 Roeien
09:51 Even testen hoe je werkt met velden
15:13 Nu nog even het dynamische text field
16:57 Nu koken
21:23 Nu de stukken van Mirjam. Eerst de notitie.
22:01 Nu de begeleidende brief
22:16 Nu nog even Turfs. Hier op het scherm
23:11 En nu naar bed.
<tblauw>zondag 2021, Eerste  Pinksterdag in Diepenveen, minder buien en wind, 13 - 16°</tblauw>


|^|^06:24|[[Even werken aan Sacks]]|
|^|^07:48|Lekker opgeschoten met Sacks, nu aankleden en ontbijten|
|^|^09:37|Nog [[Even werken aan Sacks]]|
|^|^19:00|Stukje lopen|
|^|^21:17|Sacks laatste hoofdstuk|
 
<tblauw>dinsdag 2021, bewolkt, later kans op zon, 6 - 11°</tblauw> 

|customTable|k
|^ <$checkbox field='63321' checked=1></$checkbox>|<<bes "Afspraak bestuursvergadering Ekklesia">>|
|^ <$checkbox field='63407' checked=1></$checkbox>|<<bes "Afspraak Hans Werner">>|
|^ <$checkbox field='123559' checked=1></$checkbox>|<<adv "COBEX">>|
|^ <$checkbox field='82320' checked=1></$checkbox>|<<bes "Afspraak Huub Oosterhuis">>|
|^ <$checkbox field='82344' checked=1></$checkbox>|<<bes "Bestuur Warm Welkom">>|
|^ <$checkbox field='82458' checked=1></$checkbox>|<<doc "Lezing Muziek">>|

|^04:59|Nog steeds heel netjes, deze lay-out|
|^12:36|Dat was de COBEX. Nu even lunchen. Misschien vanmiddag naar Ada en Els|
|^13:38|Nu 😴|
|^16:25|Nu werken aan [[Lezing Muziek]]|

<tblauw>2021, °</tblauw>
<tblauw>donderdag 2021, weer een zonnige dag, 22°</tblauw>

!!! Twintigste vakantiedag

Vandaag weer naar Venetië, en nu met de boot naar Burano. Spannend! Hoop dat de reis lukt. 

|08:30|lopen naar station Vicenza|
|09:00 |trein naar Venetië|
|09:50 |lopen naar Fondamente Nove "A"|
|10:40 |lijn 12 naar Burano|
|11:19 |aankomst|

|^07:42|Nu ontbijten|
|^21:18|Nu verslag vandaag, tot 21:45. Daarna lezen tot 80%|
|^21:41|Nu lezen naar 80%|
<tblauw>zaterdag 2021, ⛅, koud, 10°</tblauw>

|^|^|Mails Harry|
|^|^|Mail Elize|
|^|^|Ekklesia betalen|

|^✔|^07:15 |[[Sportief: Roeien]]|
|^|^||
|^|^|Geef mij een ander hart, mijn God, maak mij nieuw, maak mij standvastig.<br>Keer U niet af, verstoot mij niet,<br>neem nooit uw heilige geest van mij weg.|
|^✔|^09:00|Klussen: Naar Egmond|
|^✔|^09:00|Sociaal: Mercia logeren|
|^✔|^15:00|Sportief: Lopen|
|^|^||
<tblauw>dinsdag 2021, mooie dag, >20°</tblauw>

|^10:27|COBEX sessies|
|^15:05|Nu een nap. Daarna VU en boodschappen|
|^20:32|Even lezen. |
|^23:10|Prachtige aflevering gezien van Normal People|
<tblauw>vrijdag 2021, grijs, nat, grijs, 5°</tblauw> 

|customTable|k
|^ <$checkbox field='161459' checked=1></$checkbox>|<<klu "boodschappen">>|
|^ <$checkbox field='161516' checked=1></$checkbox>|<<klu "gourmetstel naar afvalpunt">>|
|^ <$checkbox field='161551' checked=1></$checkbox>|<<klu "gourmetstel ophalen">>|

|^13:58|Nu gourmetstel halen. Dat kan ik.|
|^16:18|Nu iets doen dat ik kan. Kranten lezen: |
<tblauw>maandag 2022, grijs, 7°</tblauw> 

|customTable|k
|^ <$checkbox field='84625' checked=1></$checkbox>|<<bes "Ekklesia betalen">>|
|^ <$checkbox field='84648' checked=1></$checkbox>|<<adv "Sui">>|
|^ <$checkbox field='84701' checked=1></$checkbox>|<<stu "Muziek">>|
|^ <$checkbox field='84744' checked=1></$checkbox>|<<soc "God en wij">>|
|^ <$checkbox field='84807' checked=1></$checkbox>|<<muz "piano">>|
|^ <$checkbox field='84837' checked=1></$checkbox>|<<adv "review">>|

|^10:06|Even ekklesia betalen|
|^10:22|Nu Sui, een uur. Opmerkingen noteren, gewoon een lijst.|
|^12:08|Toch een flinke klus. Nu even piano spelen. Zo moeilijk is dat niet.|
|^13:32|Nu God en wij. Hoofdstuk over Cicero nog een keer lezen met aantekeningen op papier. |
<tblauw>zaterdag 2021, nevelig, net geen zon, later onweer, 22 - 27°</tblauw><p>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='b' checked=1></$checkbox>|Boodschappen|
|^<$checkbox field='c' checked=1></$checkbox>|Overweging 1 bewerken|
|^<$checkbox field='d' checked=1></$checkbox>|Overweging 2 bewerken|
|^<$checkbox field='e' checked=1></$checkbox>|Overweging 3 bewerken|

|^11:40|Nu op papier overweging 1 verbeteren, tot 12:15|
|^12:34|Nu verder met overweging 1, tot 13 uur?|
|^12:55|Blokkade, nu verder.|
<tblauw>donderdag 2021, °</tblauw>
<tblauw>woensdag 2021, zon en wolken, 11°</tblauw> <br>
""" 
<$set name="today" value={{!!tocnr}}>
<$list filter="[!has[draft.of]status[prio]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
{{Adviseur: Verslag Comenius checken||cl}}<br>
{{Bestuur: commentaar stuk Mirjam||cl}}


<br><br><$list filter="[!has[draft.of]tag[#dagtaak]!status[prio]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>
{{Klussen: hogedrukreiniger huren||cl}}
</$set>

10:40 OK, nu ekklesia betalen. Daarna verslag comenius
11:20 Nu echt ekklesia betalen. 
11:27 Verslag Comenius checken.
11:58 OK, nu lopen. Vanmiddag verder.
15:23 Dat updaten blijft een pain in the ass. Na nap en gesprek met Mirjam nu Bakewell: Merleau-Ponty.
22:09 Nu nog even verder met appje naar Tjeerd en Al het Blauw
<tblauw>maandag 2021, buien gevolgd door regen, 14°</tblauw>

|^✔|^07:25|Sacks|
|^✔|^10:00|Lopen met de kinderen|
|^✔|^14:20|Huis schoonmaken|
|^✔|^16:20|[[Even werken aan Joseph Roth]]|
|^✔|^21:52|Weer thuis, nog even de foto's in een mapje stoppen|
|^|^23:38|Nog even de nieuwe indeling van de biografie van Roth|
 
<tblauw>woensdag 2021, bewolkt, kans op een bui, 6 - 9°</tblauw> 

|customTable|k
|^ <$checkbox field='82729' checked=1></$checkbox>|<<klu "Medicijnen ophalen">>|
|^ <$checkbox field='82801' checked=1></$checkbox>|<<soc "Oppassen op Mercia en Franca">>|
|^ <$checkbox field='82837' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='103728' checked=1></$checkbox>|<<bes "Jaargesprek Alex">>|
|^ <$checkbox field='182842' checked=1></$checkbox>|<<muz "Koorrepetitie">>|

|^08:28|Aankleden|
|^09:05|Wat wil ik tot half 11 gedaan hebben.<br>{{Jaargesprek Alex||cl}}<br>{{Lezing Muziek||cl}}<br>{{Drie dagboekfragmenten||cl}}|
|^09:08|Nu eerst een cantate van Bach en de dagboekfragmenten.|
|^10:38|Nu nog even Lezing Muziek. Wat is de volgende stap?|
|^18:27|Nu even eten. Vanavond koorrepetitie|
<tblauw>zondag 2021, stralende ochtend, 12 - 15°</tblauw>
<tblauw>vrijdag 2021, laatste zonnige dag in Vicenza, 24°</tblauw>

!!! Vakantiedag

Vandaag de laatste dag in Vicenza. Kleine dingen. Nog een kaart versturen naar Beer en Siets. Geld pinnen om hier te betalen, € 350. Inpakken. Misschien nog een wandeling. 

|^08:24|Nu ontbijten|
|^15:57|Hoe is het met de besmettingen? Gaat goed: 1700, onder de 500 ziekenhuisopnames|
|^15:59|Hoe komen we van de TableOfContents tab af?|
|^16:02|Gelukt, zie [[hier|https://tiddlywiki.com/static/Adding%2520a%2520table%2520of%2520contents%2520to%2520the%2520sidebar.html]]|
|^16:04|Nu even 10% lezen|
|^19:48|OK, Sherriff uit. Prachtig!|
|^22:13|Klaar met deze dag. Niet gewandeld maar wel het boek The Fortnight in September uitgelezen. Nu nog even een paar aantekeningen.|
<tblauw>zondag 2021, wolken in Egmond, nu nog 7°</tblauw>

|^✔|^09:00|Ontbeten met Mercia, die nu weer verder werkt aan haar boek over Annie M.G. Schmidt|
|^✔|^11:00|Sociaal: KoffieZoom|
|^|^20:58|Even gedaan doen|
|^✔|^21:27 |Lezen: Kranten|
|^✔|^22:27 |Bestuur: Ekklesia betalen|
|^✔|^22:31 |Bestuur: Mail Elize|
|^✔|^22:45|Sociaal: Mails Harry|
|^✔|^23:00|Lezen: Radetzkymars|
|^✔|^23:30|Reflectie: Therapeutische Oefeningen invoeren|
<tblauw>woensdag 2021, zonnige dag, 18 - 23°</tblauw>

|^07:41|Nu eerst roeien.|
|^12:02|Even naar erfpacht kijken|
|^22:41|Nog even een dagboekaantekening|
<tblauw>zaterdag Eerste Kerstdag 2021, zonnig, 2°</tblauw> 

|customTable|k
|^ <$checkbox field='113702' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='113729' checked=1></$checkbox>|<<soc "Berend en Sietske ontbijten">>|
|^ <$checkbox field='113747' checked=1></$checkbox>|<<soc "Toon en Sara en Ada en Els gourmetten">>|
|^ <$checkbox field='114001' checked=1></$checkbox>|<<ref "Kerstpodcast">>|



<tblauw>dinsdag 2022, bewolkt en droog, 2 - 6°</tblauw> 

|customTable|k
|^ <$checkbox field='100919' checked=1></$checkbox>|<<bes "VEA voorbereiden">>|
|^ <$checkbox field='101044' checked=1></$checkbox>|<<bes "VEA B&LT">>|
|^ <$checkbox field='101150' checked=1></$checkbox>|<<stu "Muziek">>|
|^ <$checkbox field='101230' checked=1></$checkbox>|<<adv "Review">>|
|^ <$checkbox field='101318' checked=1></$checkbox>|<<stu "Muziek">>|
|^ <$checkbox field='101331' checked=1></$checkbox>|<<lez "Apprentice">>|
|^ <$checkbox field='101342' checked=1></$checkbox>|<<muz "Piano">>|

|^08:01|nu aankleden en ontbijten, roep de machinist, de trein gaat vertrekken.|
|^10:14|Nu even VEA voorbereiden: stukken klaarzetten, agenda printen en tijdsaanduidingen toevoegen, Riekeld uitnodigen|
|^11:22|OK, toch een uur mee bezig geweest. Even relaxen.|
|^14:18|OK, daar zijn we weer: piano, lezen, muziek, review. Eerst piano.|
|^15:50|Intussen gelezen en piano gespeeld. Nu Juslin.|
<tblauw>zondag 2021, warm maar onweer op komst, 23 - 25°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='b' checked=1></$checkbox>|Lopen door het Vliegenbos|

|^13:43|Cathrien zit met het gezin in Egmond, wij dus in Amsterdam. Olympische Spelen zijn begonnen in Tokyo, lege stadions vanwege de corona. |
|^13:44|Nu even werken aan podcast. Teksten invoegen.|
|^17:09|Nu 10% lezen in Hotel Savoy, tot 18 uur, daarna Argus|
|^17:50|OK, nu vier artikelen in Argus, tot 18:30, daarna Het Parool|
<tblauw>vrijdag 2021, bewolkt, 15°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen|
|^<$checkbox field='b' checked=1></$checkbox>|kap achterkant schoonmaken|
|^<$checkbox field='c' checked=1></$checkbox>|review l&i: ms uitlezen|
|^<$checkbox field='d' checked=1></$checkbox>|kap achterkant verven|
|^<$checkbox field='e' checked=1></$checkbox>|sacks: h22|
|^<$checkbox field='f' checked=1></$checkbox>|contact caroline elbers|

|^12:34|Sacks: h22|
|^12:42|verven|
|^14:35|is klaar. Nu nap en Sacks|
|^16:44|Nu Sacks|
<tblauw> wolken, een bui, 12°</tblauw> <br>

"""<$set name="today" value={{!!tocnr}}>
<$list filter="[!has[draft.of]status[prio]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list>{{Bestuur: Bellen met Hans Werner||cl}}<br>
{{Sociaal: Materiaal voor Jochem||cl}}

<br><br><$list filter="[!has[draft.of]tag[#dagtaak]!status[prio]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>
06:46 aankleden, ontbijten, Els en Ada halen.
09:32 Nu even kijken of we materiaal voor Jochem kunnen vinden. Living Labs. Bestand van 2020 bekijken.



<tblauw>dinsdag 2021, 's ochtends droog, 13°</tblauw>

|✔^|^09:00|Roeien|
|✔^|^11:04|[[Even werken aan Joseph Roth]]|
|✔^|^14:00|Boodschappen|
|✔^|^14:44|Verder met Roth|
|✔^|^17:00|Ger halen|
|✔^|^18:00|Ger eten|
|^|^21:45|Lezen over Roth's Joden op Drift|
<tblauw>donderdag 2021, regen, 6 - 9°</tblauw> 

|customTable|k
|^ <$checkbox field='81506' checked=1></$checkbox>|<<bes "Jaargesprek Alex">>|
|^ <$checkbox field='81556' checked=1></$checkbox>|<<bes "SWOT Warm Welkom">>|
|^ <$checkbox field='81639' checked=1></$checkbox>|<<bes "Hans Werner">>|
|^ <$checkbox field='81731' checked=1></$checkbox>|<<bes "Vergadering Ekklesiabestuur">>|
|^ <$checkbox field='81904' checked=1></$checkbox>|<<doc "[[Lezing Muziek]]">>|

|^08:18|Nu opstaan|
|^10:17|Wat zijn de concrete haalbare doelen van vanochtend?<br>{{Jaargesprek Alex||cl}}<br>{{Boodschappen||cl}}<br>{{Vergadering Ekklesia regelen||cl}}<br>{{Lezing Muziek||cl}}|
|^10:20|Dan nu verder met Jaargesprek Alex. Kan dat hier? Twee schermen?|
|^10:22|Gewoon switchen. Document openen.|
|^10:24|Rol bestuur.|
|^10:31|Maandbrief.|
|^10:41|Thoravertaling.|
|^10:54|Leerhuizen.|
|^11:07|Toekomst en afronding: naar Bettine.|
|^11:40|Gelukt maar wel gedoe. Je moet het te verzenden bestand echt in de Documents van Lenovo zetten. Attachen vanuit PCloud lijkt hier niet goed te werken. |
|^11:41|Nu vergadering regelen: app naar Mirjam, mail naar bestuur+LT|
<tblauw>maandag 2021, °</tblauw>

In Egmond.

|^19:45|Hoger niveau: even lezen|
<tblauw>zaterdag 2021, zeer aangenaam weer in Malterdingen, 23°</tblauw>

Vandaag een reisdag. Vanochtend om 7:30 vertrokken, nu ook 17 uur aangekomen in Malterdingen. Reis verliep zonder problemen, wel een graag traject voor de Gotthard tunnel. Maar eenmaal daar doorheen ging het goed. We zien nu in Landhaus Keller, Hotel de Charme, in Malterdingen. 
<tblauw>maandag 2021, zonnig en 's ochtends zeer koud, 10°</tblauw>



|^|^08:09 |Ontbijten|
|^✔|^09:09|Sportief: Lopen|
|^✔|^10:30|Klussen: Boodschappen|
|^✔|^12:00|Klussen: Laatste keer (voorlopig) TW|
|^✔|^14:30|Klussen: Vlonder schrobben|
|^✔|^17:00|Bestuur: Hessel vragen|
|^|^|Lezen: Radetzkymars H XI|
|^✔|^20:00|Adviseur: Oberon|
<tblauw>donderdag 2021, wolken, later zon, 18 - 21°</tblauw>

|^07:10|Ontbijten, Els en Ada halen|
|^12:25|Intussen half 1. Ada slaapt nog. Vanochtend waren Cathrien en Franca even op de koffie, heel gezellig. |
|^14:28|Misschien even naar buiten, als het droog blijft.|
|^22:33|Dat was de dag, nu een goede nacht maken.|
<tblauw>zondag 2021, zonnig en koude wind, 1°</tblauw> 

|customTable|k
|^ <$checkbox field='113926' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='113934' checked=1></$checkbox>|<<klu "Boodschappen">>|
|^ <$checkbox field='114537' checked=1></$checkbox>|<<bes "Ekklesia betalen">>|
|^ <$checkbox field='121704' checked=1></$checkbox>|<<soc "maaltijd naar Cathrien brengen">>|
|^ <$checkbox field='121732' checked=1></$checkbox>|<<spo "lopen">>|
|^ <$checkbox field='154750' checked=1></$checkbox>|<<ref "dagboek">>|

|^11:46|Nu Ekklesia betalen, daarna doosje dia's|
<tblauw>{{!!weekdag}} {{!!jaar}}, grijs, 3 - 7°</tblauw> 

|customTable|k
|^ <$checkbox field='100634' checked=1></$checkbox>|<<klu "was ophangen">>|
|^ <$checkbox field='100705' checked=1></$checkbox>|<<stu "Muziek: H5">>|
|^ <$checkbox field='100720' checked=1></$checkbox>|<<stu "Muziek: H6">>|
|^ <$checkbox field='100748' checked=1></$checkbox>|<<bes "Stukje Nieuwsbrief">>|
|^ <$checkbox field='100832' checked=1></$checkbox>|<<lez "Apprentice">>|
|^ <$checkbox field='100848' checked=1></$checkbox>|<<muz "Piano">>|
|^ <$checkbox field='100900' checked=1></$checkbox>|<<adv "Review">>|
|^ <$checkbox field='101408' checked=1></$checkbox>|<<klu "boodschappen">>|
|^ <$checkbox field='194014' checked=1></$checkbox>|<<klu "Ger naar OLVG en terugbrengen">>|
|^ <$checkbox field='225838' checked=1></$checkbox>|<<stu "Tekst op Tafel">>|

|^10:09|Nu even H5 Juslin afmaken|
|^10:39|Treintje: H5 ervoor, aantekeningen ervoor, lezen|
|^19:31|Stukje Nieuwsbrief|

Afgelopen dinsdagavond vergaderden liturgisch team en bestuur, per zoom, hopelijk voor het laatst op deze manier. We waren blij om Jaap Visser als nieuw en fris bestuurslid te kunnen verwelkomen. Naast kleine zaken besteedden we aandacht aan de hervatting van de diensten en andere activiteiten. We zijn natuurlijk reuzeblij dat we weer bij elkaar kunnen komen, na een positief advies van ons eigen OMT in de persoon van Riekeld Scheper. We keren terug naar het regime dat we in het afgelopen najaar kozen: toegangspas, afstand, mondkapjes bij verplaatsing, klein koor, brood en wijn rondgedeeld door de voorgangers. De groepen en leerhuizen kiezen zelf hun vorm: fysiek of via zoom. Een volgend belangrijk discussiepunt was de toekomst van de ekklesia. Sommigen/velen maken zich zorgen over de levensvatbaarheid van de ekklesia, gegeven veroudering, vermindering van de belangstelling, mogelijk blijvend afhaken van bezoekers na corona. Bestuur en team staan op het standpunt dat doorgaan de beste keuze is, de schouders eronder, de uitdagingen identificeren en tegemoet treden. Maar de vraag is hoe dit leeft onder de bezoekers van de ekklesia. We spreken of om een goed voorbereide Dag van Overleg te organiseren, een zaterdag in maart of april. Dan gaan we met elkaar in gesprek over vragen als: waartoe zijn we als ekklesia op aarde, hoe willen we diensten blijven vormgeven, hoe werken we aan gemeentevorming en onderling pastoraat, hoe maken we onze maatschappelijke betrokkenheid concreet? Naast dit overleg willen we ook te rade gaan bij enkele goede bekenden, die zich een beetje in de periferie van de ekklesia bevinden en goed van buiten naar binnen kunnen kijken. Mirjam Rigterink en Bettine Siertsema gaan deze overleggen voorbereiden.
<tblauw>maandag 2021, zon en onweer, 23 - 25°</tblauw><p>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='b' checked=1></$checkbox>|Rooster MV schoonmaken|
|^<$checkbox field='c' checked=1></$checkbox>|Dagboekfragmenten 1988|
|^<$checkbox field='d' checked=1></$checkbox>|Concact Burg ivm WKO|

|^15:49|Nu dagboekfragmenten en nap|
|^23:54|Na overleg met Mirjam Rigterink weer terug bij af. De tweede keer dat een tekst van mij in de Ekklesia het loodje legt. Duidelijk is dat er iets mis is met de schrijver. Een dergelijke kritiek ben ik niet gewend. Mijn beeld van wat de Ekklesia is, van wat het geloof is, klopt duidelijk niet. Ik ga de tekst bijwerken en alle directe vragen en aansporingen eruit halen. Gewoon erg een soort college van maken. De psalm laat ik er wel in, anders blijft er helemaal niets over van het verhaal. Sisyphus gaat eruit, Reve gaat eruit, de kritiek op de eerste plek van Paneloux wordt aangescherpt, zodat de boodschap duidelijker wordt. Het lot wordt herschreven. En nooit met ingaan op een uitnodiging om een podcast te maken! Weer eens een Icarusje!|
<tblauw>zaterdag 2021, bewolkt, zonnetje, onweer, 21°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen, zwemmen, planken|
|^<$checkbox field='b' checked=1></$checkbox>|Boodschappen|
|^<$checkbox field='c' checked=1></$checkbox>|L&I review schrijven en versturen|
|^<$checkbox field='d' checked=1></$checkbox>|Onderstuk achterkant|
|^<$checkbox field='e' checked=1></$checkbox>|Kranten lezen|
|^<$checkbox field='f' checked=1></$checkbox>|Sacks: h22|
|^<$checkbox field='g' checked=1></$checkbox>|Sacks: h23|

|^10:47|Nu achterkant verven|
|^13:17|Nu douchen en review afmaken|
<tblauw> vrijdag 2021, wolken en zon, 14°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{Klussen: Contact met Boels||cl}}
{{Klussen: Zoom voor Mirjam||cl}}
{{Klussen: PM Concept2 bestellen||cl}}

08:29 Deen
10:20 Even de autokey aanpassen. 
10:21 Boodschappen gedaan, even noteren. Papier klaarleggen. CD richard. Richard bedanken. Boels bellen
12:05 Nu Turfs hoofdstuk 2 afmaken. 
14:37 Gelopen en wijn gekocht. Nu nap en hoofdstuk Blauw.
17:00 Nu Blauw. 
17:17 Nu even de giften op een rijtje: lijsten downloaden.
19:32 Nu piano spelen.
<tblauw>woensdag, buien, buïige regen, regen, 13°</tblauw><p>

|^|^09:11|Even de passwords noteren|
|^|^09:15|Even een begin maken met COBEX. <br>Eerst de bestanden opbergen|
|^|^09:53|Dossier Nguyen|
<tblauw>vrijdag 2021, bewolkt en regen, 4 - 7°</tblauw> 

|customTable|k
|^ <$checkbox field='81556' checked=1></$checkbox>|<<bes "SWOT Warm Welkom">>|
|^ <$checkbox field='81904' checked=1></$checkbox>|<<doc "[[Lezing Muziek]]">>|
|^ <$checkbox field='91430' checked=1></$checkbox>|<<lez "Ethiopië">>|
|^ <$checkbox field='91455' checked=1></$checkbox>|<<lez "Portugal">>|
|^ <$checkbox field='91512' checked=1></$checkbox>|<<klu "Enquête RIVM">>|
|^ <$checkbox field='91544' checked=1></$checkbox>|<<bes "Beleidspunten Ekklesia 2022">>|
|^ <$checkbox field='93108' checked=1></$checkbox>|<<klu "Koplamp Fiets">>|
|^ <$checkbox field='93123' checked=1></$checkbox>|<<muz "Koor voorbereiden">>|
|^ <$checkbox field='93152' checked=1></$checkbox>|<<muz "Koorrepetitie">>|


|^09:13|Ik weet het even niet precies. |
|^09:23|Nu dan 15 minuten Portugal, daarna 15 min Ethiopië|
|^09:48|Nu dan Ethiopië|
|^10:10|Een cynische maar misschien wel juiste analyse van de situatie in [[Ethiopië|https://www.dailymaverick.co.za/article/2021-11-22-four-scenarios-and-the-funerals-ethiopian-powder-keg-is-ready-to-explode-in-tragic-ways/]]|
|^10:13|Beleidspunten Ekklesia 2022. Hoe gaan we dit aanpakken. Een [[lijstje]] maken|
|^10:46|Even koffie en dan versturen.|
|^10:55|Nu versturen. |
|^11:20|OK gedaan! Nu even koor voorbereiden.|
|^11:47|[[Mail naar Marcel Levi]]: m.levi@parool.nl. Is er al veel geschreven over coronaziekenhuizen?|
|^16:18|Nu enquête RIVM|
|^16:49|Nu koplamp fiets. Schroevendraaier, batterijtjes. Ook de banden oppompen.|
|^17:13|OK, nu nog even aan koor werken.|
<tblauw>dinsdag 2021, bewolkt in Egmond maar meestal droog, 13 - 15°</tblauw>

|^08:07|Omhoog, opstaan. Huisje schoonmaken en afsluiten voor de winter.|
|^15:31|Coronacijfers schieten omhoog, net als in juli. Maar nu geen maatregelen die tegenwicht kunnen bieden. Wat is beter: hier of op papier of Noteshelf? Ik weet het niet, zoals ik in het algemeen bijna niets weet. Kan nu wel even lezen, tot 16 uur|
|^17:24|Ik moet waarschijnlijk eten halen, maar ik weet niet waar en wat. |
|^17:27|Eigenlijk is cellomuziek altijd goed, nu het celloconcert in a van Schumann. |
<tblauw>zondag 2021, wolken en regen, hier in Malterdingen, 22°</tblauw>

|^06:19|Opstaan!|
|^15:40|Weer veilig in Amsterdam, 3850 km gereden|
<tblauw>dinsdag 2021, zonnig, 15°</tblauw>



|^ ✔|^11:00|Klussen: Hulsman bellen over accu's|
|^ ✔|^12:00|Bestuur: Marieke bellen|
|^ ✔|^|Sociaal: Saar & Toon|
|^ ✔|^|Bestuur: Caroline bellen|
|^ ✔|^|Lezen: Radetzkymars H XII|
|^ ✔|^12:30|Klussen: Haakje tuindeuren|
|^ ✔|^20:30|Cultuur: Film: Beentjes van Sint Hildegard|
<tblauw>vrijdag 2021, nu nog zonnig, 18 - 20°</tblauw>

|^07:35|Nu roeien|
|^09:33|Eigenlijk|
|^09:41|Eigenlijk niets. Wat ik ga doen: COBEX voorbereiden. Hans Werner bellen. Verhaal zoeken. Review doen.|
|^09:42|Nu eerst COBEX voorbereiden.|
|^13:01|COBEX voorbereid. Nu lunch|
|^18:36|Nu eten bij Bar Boeket|
<tblauw>maandag 2021, regen, 6°</tblauw> 

|customTable|k
|^ <$checkbox field='82810' checked=1></$checkbox>|<<stu "Consolation">>|
|^ <$checkbox field='82904' checked=1></$checkbox>|<<lez "De Kom">>|
|^ <$checkbox field='103736' checked=1></$checkbox>|<<klu "dia's scannen">>|

|^10:37|Nu even een paar doosjes scannen.|
<tblauw>{{!!weekdag}} {{!!jaar}}, °</tblauw> 

|customTable|k
|^ <$checkbox field='144900' checked=1></$checkbox>|<<soc "Ada en Els">>|
|^ <$checkbox field='144917' checked=1></$checkbox>|<<soc "Eten bij Gerrie">>|

|^14:48|Hij doet het nog.|
<tblauw>dinsdag 2021, lokaal pittige buien, 22°</tblauw><p>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='b' checked=1></$checkbox>|Cathrien: fiets|
|^<$checkbox field='c' checked=1></$checkbox>|Kees van Leeuwen bellen|
|^<$checkbox field='d' checked=1></$checkbox>|Monitoring WKO|
|^<$checkbox field='e' checked=1></$checkbox>|Naar Zwolle|
|^<$checkbox field='f' checked=1></$checkbox>|Fundatie|
|^<$checkbox field='g' checked=1></$checkbox>|Wim en Annette|

|^07:24|Vandaag proberen van quick notes gebruik te maken. En geen Icarus!|
|^07:45|Nu roeien|
|^10:10|Intussen al weer een hoop WKO-gedoe. Nu tanden poetsen.|
|^10:29|Nu in 90 min die vermaledijde podcast tekst afronden. Met koffie|
|^10:44|Aan de slag|
|^00:05|Bezoek aan Fundatie en aan Wim en Annette|
<tblauw>zondag 2021, zonnig en warm, maar onweer op komst, 25 - 28°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Lopen, zwemmen, planken|
|^<$checkbox field='b' checked=1></$checkbox>|Zijkant schoonmaken|
|^<$checkbox field='c' checked=1></$checkbox>|Zijkant verven|
|^<$checkbox field='d' checked=1></$checkbox>|Sacks: h23|
|^<$checkbox field='e' checked=1></$checkbox>|Gesprek met Kees Hooge over Wimmenum|

|^12:46|Even koffie en dan verder schoonmaken|
|^21:01|Nu hoofdstuk 23 afmaken|
|^21:02|Helaas onweer in aantocht. Grondwater begint juist zo lekker te dalen|
<tblauw>pittige buien, 7°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{Hogedrukreiniger halen||cl}}
{{Balkon Berend schoonmaken||cl}}
{{Naar Egmond||cl}}
{{Vlonder schoonmaken||cl}}    

08:10 Hoe maken van deze dag een dag van energiewinst?
- mooie muziek waar we van genieten
- geen tiddlywikivragen, geen verslaving
- middagdutje
- papier
<tblauw>donderdag 2021, het wordt eindelijk beter, 13 - 15°</tblauw>


|^<$checkbox field="f" checked=1></$checkbox>|Roeien|
|^<$checkbox field="a" checked=1></$checkbox>|Cobex: Lukken|
|^<$checkbox field="b" checked=1></$checkbox>|Cobex: Rahimy|
|^<$checkbox field="i" checked=1></$checkbox>|Cobex: Nguyen|
|^<$checkbox field="c" checked=1></$checkbox>|N4U: verslag|
|^<$checkbox field="d" checked=1></$checkbox>|Roth: Levensloop opnemen|
|^<$checkbox field="e" checked=1></$checkbox>|Comenius: declaraties|
|^<$checkbox field="g" checked=1></$checkbox>|Cobex zittingen|
|^<$checkbox field="h" checked=1></$checkbox>|Albert en Jan|


|^10:08|Nu even aan de slag met de Cobex. Nog twee zaken voorbereiden: Lukken en Rahimy. Eerst Lukken.|
|^11:01|Dat heeft te lang geduurd. Nu Rahimy|
|^11:57|Klaar, dat heeft veel te lang geduurd!|
|^11:58|Nu opstelling maken.|


<tblauw>zaterdag 2021, plaatselijk regen of (natte) sneeuw, 3 - 5°</tblauw> 

|customTable|k
|^ <$checkbox field='101116' checked=1></$checkbox>|<<klu "[[Cadeaus en gedichten]]">>|
|^ <$checkbox field='101148' checked=1></$checkbox>|<<bes "Mirjam bellen">>|
|^ <$checkbox field='101202' checked=1></$checkbox>|<<klu "Boodschappen">>|
|^ <$checkbox field='101219' checked=1></$checkbox>|<<klu "Berend & Sara">>|
|^ <$checkbox field='101237' checked=1></$checkbox>|<<soc "Nieuwe afspraak Casa B">>|
|^ <$checkbox field='142319' checked=1></$checkbox>|<<bes "Zoomlink bestuursvergadering">>|
|^ <$checkbox field='142342' checked=1></$checkbox>|<<muz "Muziek klaarleggen voor Advent Carol Service">>|
|^ <$checkbox field='142408' checked=1></$checkbox>|<<lez "Kranten">>|

|^10:11|Appje naar CaSaBe|
|^14:22|Nu even zoomlink naar bestuur en Roel en Riekeld. Daarna nap en muziek klaarleggen voor de Advent Carol Service morgen.|
|^16:30|Nu de kranten.|
<tblauw>woensdag 2021, grijs maar niet koud, 15 - 17 °</tblauw>

|^14:31|Oppassen op Franca en Mercia. Even een nap.|
<tblauw>maandag 2021, °</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|SVAN opheffen|
|^<$checkbox field='b' checked=1></$checkbox>|waterstand doorgeven|
|^<$checkbox field='c' checked=1></$checkbox>|Ekklesia betalen|
|^<$checkbox field='d' checked=1></$checkbox>|Begin met multomap|

|^18:20|Nu eten|
|^20:53|foto's, per dag: foto's in map, foto naar dagboek.|
|^20:56|eerste dag: zaterdag 4 september. Google Photos|
<tblauw>woensdag 2021, zonnig, 15°</tblauw>

 
|^✔|^|Klussen: tuigje buggy bestellen|
|^|^08:30|Ontbijten|
|^✔|^10:30|Sociaal: op Mercia en Franca passen|
|^✔|^12:00|Klussen: Mails op 0|
|^✔|^15:30|Klusssn: Nieuwe accu's|
|^ ✔|^16:30|Klussen: Naar Amsterdam|
|^ ✔|^18:00|Sociaal: Eten bij Ger|
<tblauw>zaterdag 2021, wolken, misschien ook eat zon, 18°</tblauw>

|^04:56|Moeilijke start.|
<tblauw>dinsdag 2021, regen, later lichter, 9°</tblauw> 

|customTable|k
|^ <$checkbox field='170237' checked=1></$checkbox>|<<spo "roeien">>|
|^ <$checkbox field='170251' checked=1></$checkbox>|<<stu "Ignatieff: Cicero">>|
|^ <$checkbox field='172643' checked=1></$checkbox>|<<adv "[[Review Gender Equity in Computing]]">>|

|^17:01|Nu bij Richard. Vanmiddag Benny Burgers in Enschede opgezocht.|
|^17:32|Half uur gewerkt aan review.|
<tblauw>{{!!weekdag}} {{!!jaar}}, vanochtend zon, vanavond regen, 8°</tblauw> 

|customTable|k
|^ <$checkbox field='93938' checked=1></$checkbox>|<<stu "Muziek H6">>|
|^ <$checkbox field='93951' checked=1></$checkbox>|<<stu "Muziek H7">>|
|^ <$checkbox field='94018' checked=1></$checkbox>|<<muz "piano">>|
|^ <$checkbox field='94028' checked=1></$checkbox>|<<muz "Koor">>|
|^ <$checkbox field='94038' checked=1></$checkbox>|<<adv "Review">>|
|^ <$checkbox field='94154' checked=1></$checkbox>|<<lez "10 blz">>|
|^ <$checkbox field='94218' checked=1></$checkbox>|<<spo "roeien">>|

|^09:36|Dagkaarten bestendig gemaakt, kunnen elk volgend jaar opnieuw gebruikt worden.|
|^15:46|Boodschappen|
<tblauw>woensdag 2021, veel buien en weinig zon, 22°</tblauw><p>

|^<$checkbox field='a' checked=1></$checkbox>|Stofzuigen|
|^<$checkbox field='b' checked=1></$checkbox>|Moppen|

|^13:52|Nap|
<tblauw>maandag 2021, drukkend warm en buien, 22 - 28°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|10 blz Edurev|
|^<$checkbox field='b' checked=1></$checkbox>|Cobex voorbereiden|
|^<$checkbox field='c' checked=1></$checkbox>|vijf assignments|
|^<$checkbox field='d' checked=1></$checkbox>|Lopen, zwemmen, planken|
|^<$checkbox field='e' checked=1></$checkbox>|Naar Amsterdam|

|^06:34|Review kiezen|
|^06:41|Vijf blz lezen|
|^07:02|Nog een keer 5 blz|
|^17:13|Nieuwe toetsen bord van de tablet doet het uitstekend. Enige probleem is dat sommige applicaties niet goed werken in de productivity mode. Maar dat probleem wordt hopelijk spoedig opgelost. Uur verloren vanmiddag omdat de accu weer leeg was. Weer het lampje achterin! Nagaan of we de zekering eruit kunnen halen.|
|^17:28|Nu beginnen met voorbereiding COBEX. Hoe pakken we dit aan|
<tblauw>droog, misschien zon, 13°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{a||c}} 
08:52 Geroeid, nu aankleden, 
18:47 Nu even de administratie van vandaag.
19:19 afwass en thee
<tblauw>vrijdag 2021, zonnige perioden, 17 - 19°</tblauw>

|^<$checkbox field="a" checked=1></$checkbox>|Roeien|
|^<$checkbox field="b" checked=1></$checkbox>|Tweede prik halen|
|^<$checkbox field="c" checked=1></$checkbox>|verslag Noord4Us checken|
|^<$checkbox field="d" checked=1></$checkbox>|Roth: levensloop opnemen|
|^<$checkbox field="e" checked=1></$checkbox>|Trouw lezen|
|^<$checkbox field="f" checked=1></$checkbox>|Naar Egmond|
|^<$checkbox field="g" checked=1></$checkbox>|Gras maaien|

|^06:39|Nu roeien|
|^10:08|Dat was de tweede prik. Nu even een begin maken met het opnemen van de levensloop van Roth. Eerst moeten we OBS Studio goed ingesteld krijgen. Waar had ik dat opgeschreven? Niet hier helaas. Ergens in de telefoon?|


 
<tblauw>zondag 2021, winterse neerslag, 3 - 7°</tblauw> 

|customTable|k
|^ <$checkbox field='92528' checked=1></$checkbox>|<<lez "Kranten">>|
|^ <$checkbox field='92542' checked=1></$checkbox>|<<muz "Voorbereiden koor">>|
|^ <$checkbox field='92600' checked=1></$checkbox>|<<muz "Advent Carol Service">>|
|^ <$checkbox field='92634' checked=1></$checkbox>|<<lez "Crossroads">>|
|^ <$checkbox field='92651' checked=1></$checkbox>|<<ref "Ekklesia">>|
|^ <$checkbox field='92706' checked=1></$checkbox>|<<ref "Dagboek">>|

|^14:00|Lopen morgen?|
|^14:16|Nu even Trouw en NRC|
<tblauw>dinsdag 2021, wolken en zon, 18°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|10:00 Raymond|

|^07:17|Even nieuws en krant|
|^12:07|Nu even vier stukken uit de Argus|
|^16:13|Aarg, computers... Nu COBEX voorbereiden. Bestanden downloaden en opslaan.|
|^22:43|Even kijken of het saven nu goed gaat.|
|^22:48|Lijkt geluk!|
<tblauw>donderdag 2021, regen, 13°</tblauw><br>

|^|^|Uitloopje Egmond|
|^|^|bericht naar alex en mirjam|
|^&#x2714;|^07:00|Sportief: Roeien|
|^&#x2714;|^10:00|Bestuur: ALV voorbereiden|
|^&#x2714;|^10:47|Adviseur: Comenius HBO interviews voorbereiden|
|^|^13:11|Lunchen|
|^✔|^14:10|Adviseur: Nu Smit afmaken, tot 14:30|
|^✔|^14:35 |Adviseur: Nu Piersma, tot 15 uur|
|^✔|^15:00|Adviseur: Nu Rawal|
|^✔|^16:00|Klussen: Pop!_OS|
|^✔|^18:30|Bestuur: ALV voorbereiden|
|^✔|^19:30|Bestuur: ALV|
<tblauw>zondag 2021, hopelijk opnieuw wolken en zon, 18°</tblauw>

|^00:11|Overnachten in Diepenveen, morgen tweede dag van Van Remmen feest.|
|^15:55|Weer terug in Amsterdam!|

<$button>
<$action-setfield $tiddler="$:/state/tab/sidebar--595412856" $value="$:/core/ui/SideBar/Tools"/>
<$action-popup $state="$:/state/popup/more-2053862905" $coords="(0,20,0,0)"/>
Click me!
</$button>
<tblauw>donderdag 2021, vanochtend buien, vanmiddag zon, >20°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|planning|
|^<$checkbox field='b' checked=1></$checkbox>|Ada en Els halen|
|^<$checkbox field='c' checked=1></$checkbox>|Oppassen op Ada en Els|

|^14:13|Nu nap, wegens migraine klachten schermtijd beperken|
<tblauw>dinsdag 2021, heel veel grijs, 21°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|COBEX|
|^<$checkbox field='b' checked=1></$checkbox>|Band plakken|
|^<$checkbox field='c' checked=1></$checkbox>|Eten bij Hubers|
|^<$checkbox field='d' checked=1></$checkbox>|Sacks: zoomlink aanmaken|
|^<$checkbox field='e' checked=1></$checkbox>|Sacks: Aantekeningen doorlopen en overzicht maken|
|^<$checkbox field='f' checked=1></$checkbox>|Review: 10 blz|
|^<$checkbox field='g' checked=1></$checkbox>|Scoringsvoorschrift|

|^08:32|Ontbijt, COBEX voorbereiden|
|^10:04|Even nagaan hoe je in Tiddlywiki een tiddler opent|
|^10:17|Dat gaat met de ~ActionWidget `<$action-navigate $to=<<now "x MMM">>/>`|
|^12:49|OK, Aanpassing aan Productivity Mode waardoor apps toch fullscreen gezet kunnen worden. |
|^12:50|Nu lunch en band plakken en rusten.|
|^14:50|Nu band plakken.|
<tblauw>maandag 2021, later zon, 13-15°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{Klussen: hogedrukreiniger terugbrengen||cl}} 
{{Klussen: Naar Egmond||cl}}
{{Klussen: Vloer schoonmaken||cl}}
{{Klussen: Auto wassen||cl}} 
{{Klussen: kranen smeren||cl}}
{{Adviseur: Verslag Comenius checken||cl}}

11:23 In Egmond. Al diverse klussen gedaan. Nu koffie.
14:19 vloer gemopt, nu even lopen.
14:28 nu lopen, daarna zoom en abonnement
20:29 Dit gaat eigenlijk heel goed op de tablet!
20:49 Moet vanavond nog naar twee mails van Alexander kijken.  En even wat dagboekaantekeningen maken. En even wat dagboekfragmenten over zetten. Vanf Joplin, is dat hier?
20:53 Dat gaat nie
<tblauw>zaterdag 2021, nog bewolkt hier in Egmond, 15°</tblauw>


|^&#x2714;|^12:22|Al langs het strand gelopen|
|^|^12:22|Nu verder met Sacks: Oeuvre. Eerst dat stuk uit de New Statesman lezen.|
|^|^13:08|Drama: je vindt steeds opnieuw nieuwe artikelen. Hoe lossen we dit op? Ik denk dat we het beste de prezi kunnen vullen met statements en achterliggende verhalen. Daar nu een half uur aan werken.|
|^|^15:17|Dat was het Oeuvre van Roth. Dan nu de Radetzkymars|
<tblauw>maandag 2021, zon in De Lage Vuursche, 4 - 9°</tblauw> 

|customTable|k
|^ <$checkbox field='165348' checked=1></$checkbox>|<<spo "Lopen in Lage Vuursche">>|
|^ <$checkbox field='165416' checked=1></$checkbox>|<<bes "Reactie Mirjam datum jaargesprek">>|
|^ <$checkbox field='165444' checked=1></$checkbox>|<<doc "Lezing Muziek: deel B Samama uitlezen">>|
|^ <$checkbox field='165546' checked=1></$checkbox>|<<lez "10 blz Crossroads">>|
|^ <$checkbox field='165636' checked=1></$checkbox>|<<ref "Dagboek">>|

|^10:52|Lekker wandelen in De Lage Vuursche|
|^15:22|Mooie wandeling! Nu nap|
|^16:53|Nu even drie zaken plannen|
|^17:00|Nu even dagboek, tot 17:15. Daarna reactie Mirjam|
|^17:19|Reactie Mirjam: niet op 6 dec, wel 7, 8, 10, 14, 15|
|^18:03|Leo Samama|
<tblauw> woensdag 2021, eerst regen, later ook zon, 15°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>| 19:00 Klein leven|

|^06:58|Aankleden, ontbijten, naar Mercia en Franca|
|^09:31|Nu Cobex. Tweede zaak. |
|^10:11|Nu zaak Molenaar|
|^11:40|Mercia halen|
|^23:59|Klein leven, dat was pittig|
<tblauw>Stille Zaterdag 2021, wolken en zon, noordenwind, 9°</tblauw>"""<br> 
{{Klussen: bureau opruimen||cl}}
{{0403 Sportief: Roeien||cl}} 
{{0403 Naar Egmond||cl}} 
{{0403 Lezen in Blauw||cl}} 
{{0403 Koken||cl}} 
{{0403 Sportief: Lopen||cl}} 

08:24 Geroeid, nu aankleden en ontbijten
17:31 Gelezen in Blauw, nu koken
<tblauw>dinsdag 2021, wolken en buitje, 21°</tblauw>

|^18:02|Vandaag een mooie tocht naar Doesburg gemaakt. Eerst fietsen naar Dieren, daarna met de bus naar Doesburg. Daar rondgelopen en teruggelopen naar Dieren via een dode zijarm van de IJssel. Met het pontje overgestoken en met de fiets weer n|
<tblauw>vrijdag 2021, bewolkt, 4 - 5°</tblauw> 

|customTable|k
|^ <$checkbox field='63404' checked=1></$checkbox>|<<klu "stofzuigen">>|
|^ <$checkbox field='63422' checked=1></$checkbox>|<<klu "moppen">>|
|^ <$checkbox field='63441' checked=1></$checkbox>|<<bes "Financiën Ekklesia">>|
|^ <$checkbox field='63503' checked=1></$checkbox>|<<bes "Overleg Stan">>|
|^ <$checkbox field='63525' checked=1></$checkbox>|<<soc "Oppassen Ada en Els">>|
|^ <$checkbox field='63902' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='63932' checked=1></$checkbox>|<<ref "Dagboek">>|

|^09:45|Nu mails Stan nalopen.|
|^10:41|Dat is klaar. Nu stofzuigen en kachel schoonmaken|
<tgeel></tgeel><tblauw>maandag 2022, droog en soms zijn, 11°</tblauw> 

|customTable|k
|^ <$checkbox field='140835' checked=1></$checkbox>|<<klu "stofzuigen">>|
|^ <$checkbox field='140847' checked=1></$checkbox>|<<klu "moppen">>|
|^ <$checkbox field='140859' checked=1></$checkbox>|<<soc "eten bij Jochem en Cathrien">>|
|^ <$checkbox field='141057' checked=1></$checkbox>|<<lez "10% De Kom">>|

|^14:09|Angst kan hier worden bestreden met planning en bijhouden wat er gebeurt. Al gezogen en gemopt. Nu nap en 10% [[De Kom]]. |
|^19:50|Eten bij Jochem en Cathrien|
<tblauw>zaterdag 2021, eerst zon, later wolken, 22 - 26°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Review weg|
|^<$checkbox field='b' checked=1></$checkbox>|Naar Mieke|
|^<$checkbox field='c' checked=1></$checkbox>|Beyond|
|^<$checkbox field='d' checked=1></$checkbox>|Dagboek|
|^<$checkbox field='e' checked=1></$checkbox>|Boodschappen|
|^<$checkbox field='f' checked=1></$checkbox>|Band plakken|
|^<$checkbox field='g' checked=1></$checkbox>|Draadje Ewald|
|^<$checkbox field='h' checked=1></$checkbox>|Verslag Tegentij|

|^07:12|Nu review uitlezen|
|^11:46|Nu Verslag Tegentij: Word openen. |
|^12:31|Dat is gelukt. Nu Review afmaken. In Tablet mode. Tekst en aantekeningen. Tekst uitlezen. Aantekeningen maken. Beoordeling maken. Beoordeling versturen. |
<tblauw>donderdag 2021, mooi weer maar drukkend, >20°</tblauw>

|^✔|^07:30|Els en Ada halen|
|^✔|^08:00|Oppassen op Els en Ada|
|^✔|^18:00|Eten met Ewald en Margriet|
|^✔|^20:00|In de tuin werken|

<tblauw>maandag 2021, vanmiddag buien, 11 - 14°</tblauw>
 

|^|^07:28|Aankleden en ontbijten|
|^ ✔|^09:09|Lopen|
|^ ✔|^12:00|Lunch bij Richard|
|^&#x2714;|^16:49 |Nu pomo lezen: Radetzkymars H XIV|
|^&#x2714;|^17:18 |2e pomodoro: Sacks|
|^|^17:47 |Wat kunnen we doen aan SVAN: rekening checken, mail Kees opzoeken, verslag bestuursvergadering maken.|
|^&#x2714;|^17:48 |3e pomodoro: Bestuur: SVAN|
<tblauw>zondag 2021, eerst veel regen, later droger, 15°</tblauw>

|^14:25|Vier stukken Argus|
|^16:25|Nu even woensdag 15 september afmaken. Vijf foto's inplakken.|
"""1926: Roth in Duitsland. Friedl blijft alleen achter in Parijs en krijgt angstaanvallen. Eind van het jaar naar Sovjet-Unie.
1927: Teleurstelling over Russische Revolutie. Kennismaking met Stefan Zweig. Juden auf Wanderschaft, Flucht Ohne Ende. Gezondheid Friedl gaat achteruit. In juni samen in Parijs in Hotel Helvetia. In de zomer naar Marseille en Grenoble. Correspondentie met Stefan Zweig en Hendrik de Man. In 1928 ruzie met Frankfurter Zeitung ever geld. Verblijf in dure hotels in Frankfurt en Berlijn. In oktober reportages over Italië.  Kritische passages over Mussolini worden gecensureerd. Roth is woedend. Friedl wordt opgenomen in psychiatrisch ziekenhuis in Berlijn. Eerste bezoek aan Stefan en Friderike Zweig in Salzburg. 
3. 1930: Zweig helpt Roth om goede zorg voor Friedl te vinden. Stephan Zweig geeft geld en spoort Roth aan om minder te drinken. Reisreportages uit Italië. Roman Job verschijnt en wordt succes. Roth beschrijft Friedl's psychose, gediagnosticeerd als schizofrenie in Job (dochter Mirjam). Roth heeft schulden en is ziek. Zweig neemt hem mee naar Antibes om te werken aan Radetzkymarsch. Relatie met Andrea Manga Bell, journalist en grafisch kunstenaar, dochter van Cubaanse pianist, moeder van twee kinderen. De relatie duurt tot 1936 en eindigt door financiële problemen en drankgebruik van Roth.
4. 1932: Eerste aflevering Radetzkymarsch in Frankfurter Zeitung. Bestseller. Roth verblijft achtereenvolgens in Parijs, Frankfurt am Main, Ascona, Berlijn en Leipzig. Kerst en nieuw viert hij in Hamburg met de familie van Andrea Manga Bell.
5. 1933: Hitler tot kanselier benoemd. Roth naar Parijs. Roth's romans worden verboden. Roth zoekt nieuwe uitgevers buiten Duitsland en komt terecht bij Querido en Allert de Lange in Amsterdam. Friedl wordt opgenomen in een psychiatrische kliniek in Wenen. 
Waar mensen bijeen komen onstaat institutionalisering. Geldt ook voor de eerste christengemeenten, en voor de kerk van vandaag. Je kunt tegenover het instituut drie verschillende houdingen aannemen.

1. De eerste is optimistisch. Uiteindelijk komt het goed. Danneels: De kerk heeft een zelfreinigende bloedsomloop. Dissidenten worden organisch weggezuiverd. Klopt inderdaad als het gaat om Boff en Drewermann. Buiten het centrum van de kerk konden ze meer zeggen maar werd er minder naar ze geluisterd. Maar een instituut dat zich ontdoet van lastposten verzwakt ook zichzelf. De overblijvers zijn niet de moedigsten. Ook geen nieuwe geëngageerde priesterkandidaten meer. Vooral wie van rituelen hielden werd door het priesterschap aangetrokken. Wie van een debat hield wist dat de kerk daar niet van wile horen. Wie van actiegericht geloof hield was al eerder afgehaakt. Danneel had ongelijk. Vooral omdat het instituut zichzelf belangrijker achtte dan de mensen die het in bescherming hoorde te nemen. 

2. De tweede weg is eerder fatalistisch. De kerk is afhankelijk van mensen die per definitie onvolmaakt zijn. Paulus moest klaplopers waarschuwen: wie niet werkt zal niet eten. Ook de eerste christenen waren normale mensen. Liever streven naar goedheid, met alle hypocrisie van dien, dan elk nobel doel opgeven en kiezen voor barbarij. Hypocrisie is een eerbetoon van de ondeugd aan de deugd (Rochefoucauld). Ik zal nooit mijn geloof verliezen wegens het wangedrag of de misdrijven van priesters, bisschoppen en pausen. Kerkleiders zijn geen deugdzame mensen. Zie Het Laatste Oordel van Jeroen Bosch. 

<<ximg "/Historie/laatsteoordeel_bosch_grt.jpg">>

Plaats de kerk niet nodeloos op een voetstuk. Dit lijkt een conservatief standpunt. Zie Edmund Burke: Society is the partnership of the dead, the living and the unborn. Christelijk want wij verwachten de opstanding der doden. Beter dan pretentieus activisme.<p>

Derde opvatting: in het falen van het instituut zit juist de kracht, de humus, om zelf de christelijke boodschap beter in de praktijk te brengen. De verrotting als humus. Michel de Certeau, Franse jezuïet (1925 - 1986). De kerk gaat dood. De heeft gevolgen voor hoe moderne mensen de wereld begrijpen. Misschien terug naar de mystiek. Eckhart: de waarheid behoort tot de orde van het onkenbare. De kerk heeft geen eerbied voor het mysterie, ze gebruikt het. Het excessve, de uitspatting, de verrotting als doortocht naar de zuiverheid (Edith Piaf, Non je ne regrette rien). L'altérité, het anders zijn. De theologische daad: vanaf nul beginnen, in beweging komen en naar de ander/Ander verlangen. Veel voorbeelden van verrotting. Bijvoorbeeld seksueel misbruik. Zie de verrotting als humus voor een sterker geloof. Dit is niet de kerk die we willen. Geloof en  kerk vallen niet samen. Volmaaktheid is niet van deze wereld. Natuurlijk gebeurt er in de kerk ook veel goeds, meestal in stilte. De stilte als bondgenoot van de deugd. 


Latour vindt het gedweep met de blauwe knikker onzin. Uitzoomen om niet te hoeven inzoomen. We zijn niet daar maar hier. Waarom lopen we vast? Vervreemding. VR. Earth gazing als therapie. Overweldiging is een voorwaarde voor het overzichtseffect. Moeilijk om in de stad te bereiken. Misschien door naar de sterrenhemel te staren.
Vertrouwen bewerkstellig je niet via FaceTime, fysiek contact is nodig. Daarom reuzen CEO's de halve wereld over. <tgroen>Dit was duidelijk voor de corona crisis.</tgroen>

Zo ook in het onderwijs. Je moet aan de voeten van een groot geleerde kunnen zitten om echt iets van hem te leren.

Sociale media speelden een significante rol in de beweging van Wij naar Ik. Moraliteit wordt geboren wanneer ik mij op jou richt, niet op mijzelf. Wanneer ik ontdekt dat jij ook emoties hebt. Dat kan alleen maar van aangezicht tot aangezicht, zij aan zij. Wat je wint in de ontmoeting verlies je in het digitale contact.

Buber: de ander als object, ervaring, ik-het, tegenover de ander als subject, ik-gij, ontmoeting. Liefde vormt het hart van het morele en spirituele leven. Levinas: in de ontmoeting met de ander ontstaat de morele verplichting. Om echt mens te zijn hebben we de directe ontmoeting met de ander nodig. Zo leren we als Wij te denken, dat kan niet elektronisch.
<tblauw>vrijdag 2021, wolken en een beetje zon, 9 - 11°</tblauw><br>

|^ ✔|^08:31|Adviseur: Comenius voorbereiden|
|^ ✔|^09:30|Adviseur: HBO interviews|
|^ ✔|^13:00|Adviseur: HBO interviews|
|^ ✔|^15:30|Klussen: Cardio|
|^ ✔|^19:09|Bestuur: app naar Rick|
|^ ✔|^19:30|Sociaal: bellen met Sam|
<tgeel></tgeel><tblauw>maandag 2021, nu nog grijs, later zon, 20 - 23°</tblauw>

|^07:53|Nu ontbijten, om 9 uur naar de heidag van het ekklesia-bestuur|
|^08:22|Nu ontbijten|
|^21:08|Zijbutton Nieuwe Kaart aangemaakt|
|^22:56|Nu naar bed|
<tblauw>donderdag 2021, wolken, 10°</tblauw> 

|customTable|k

|^21:07|vandaag op Ada en Els gepast. Nog even lezen in Consolation|
|^23:30|Goed, als het dan angst is, waardoor ik word geleid, dan wordt het tijd om eens te onderzoeken wat voor angst het is, en hoe ermee om te gaan. Angst voor morgen, voor de dood, voor het vacuüm, voor een dag oppassen op de kleinkinderen, voor mogelijke ziekte of ongeval van Anne, angst voor de hartklep, voor andere ziektes en aftakeling, de oude dag. Ik lig wel voor op neef Benny en op zwager Richard, maar toch. Kunnen we de angst voor morgen indammen? Misschien wat wapenfeiten noteren. Als we die binnenhalen, dan zal dat toch voldoening geven.|

|^ <$checkbox field='233539' checked=1></$checkbox>|<<soc "bezoek aan Afra">>|
|^ <$checkbox field='233605' checked=1></$checkbox>|<<klu "boodschappen">>|
|^ <$checkbox field='233621' checked=1></$checkbox>|<<doc "appje naar Sebastiaan">>|
|^ <$checkbox field='233641' checked=1></$checkbox>|<<soc "kaarten versturen">>|
|^ <$checkbox field='233724' checked=1></$checkbox>|<<adv "aan review werken">>|
|^ <$checkbox field='233746' checked=1></$checkbox>|<<klu "stofzuigen">>|
|^ <$checkbox field='233800' checked=1></$checkbox>|<<klu "moppen">>|
|^ <$checkbox field='233814' checked=1></$checkbox>|<<stu "lezen in Ignatieff">>|

|^23:38|Acht zinvolle activiteiten. Dat moet de leegte toch aardig wegnemen.|
<tblauw>{{!!weekdag}} {{!!jaar}}, ochtend droog en zonnetje, 10°</tblauw> 

|customTable|k
|^ <$checkbox field='135849' checked=1></$checkbox>|<<ref "dienst">>|
|^ <$checkbox field='135901' checked=1></$checkbox>|<<stu "Muziek H6">>|
|^ <$checkbox field='140002' checked=1></$checkbox>|<<muz "piano">>|
|^ <$checkbox field='140022' checked=1></$checkbox>|<<lez "20 blz">>|

| !wk_5|!agenda |!muziek |!review |!piano |!lezen |
|^ zo_30|dienst| x || x |20|
|^ ma_31|COBEX voorbereiden| x | x | x |20|
|^ di 1|COBEX| x | x | x |20|
|^ wo 2|Mercia en Franca||||10|
|^ do 3|| x | x | x |10|
|^ vr 4|koor| x | x ||10|
|^ za 5|Sebastiaan, boodschappen|| x | x |20|
<tblauw>vrijdag, 's ochtends zon, 's middags regen, 22°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Naar Baarle-Nassau|
|^<$checkbox field='b' checked=1></$checkbox>|Uitvaart moeder Veronique|
|^<$checkbox field='c' checked=1></$checkbox>|Mail Harry|
|^<$checkbox field='d' checked=1></$checkbox>|Mail Onderwijsprijs|
|^<$checkbox field='e' checked=1></$checkbox>|Podcast uitprinten|

|^18:47|Nu afwassen tot 17:15, daarna Parool en NRC|
|^19:17|Nu de kranten en thee, tot 20 uur|
|^19:18|Eerst even de podcast uitprinten|
|^19:39|<<ximg width:% "/Cultuur/1627666720205.jpg">>|
|^23:08|Nog even bedenken waarover ik morgen iets wil opschrijven:<br>1. Oppassen op de kinderen in Egmond<br>2. Wandelen in Rheden<br>3. Podcast|
<tblauw>woensdag, 2021, koel en bewolkt, 16°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Ekklesiabestuur voorbereiden|
|^<$checkbox field='b' checked=1></$checkbox>|Ekklesiabestuur|
|^<$checkbox field='c' checked=1></$checkbox>|God en wij voorbereiden|
|^<$checkbox field='d' checked=1></$checkbox>|God en wij|
|^<$checkbox field='e' checked=1></$checkbox>|Review afronden|
|^<$checkbox field='f' checked=1></$checkbox>|Grok ~TiddlyWiki|
|^<$checkbox field='g' checked=1></$checkbox>|Roeien|
|^<$checkbox field='h' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='i' checked=1></$checkbox>|Bureau opruimen|

|^07:00|Nu roeien|
|^09:03|Nu afruimen, was ophangen en Ekklesiabestuur voorbereiden|
|^10:12|Stukje over huisje 122 bekeken en teruggestuurd. Nu stukken Ekklesiabestuur klaar, koffie en inloggen|
|^12:30|OK, Nu bureau opruimen. Vijf stukken van bureau.|
|^13:47|Nu even een nap met Sacks|
|^15:36|Nu een half uur Sacks, dan medicijnen ophalen|
<tblauw>dinsdag 2021, zon en warm, 15-23°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{Klussen: mails Alexander||cl}}
{{Egmond: in de tuin werken||cl}}
{{Klussen: TiddlyWiki - autosave bij start||cl}}
{{Sociaal: Zoom met de kinderen||cl}}
{{Adviseur: Verslag Comenius checken||cl}}

11:31 Mails Alexander gedaan. Gewerkt aan TiddlyWiki: autosave aan bij start. Gewerkt aan verslag Comenius.  Nu eerst in de tuin.
19:20 Intussen thuis. Dagaantekeningen worden niet opgeslagen. Nou ja, in vredesnaam. ik weet niet waar dat door komt. Het beste is om telkens als er iets is ingetypt drie keer achter elkaar te saven. Dat zal zeker vaak vergeten worden, maar de kans wordt iets groter dat er iets wordt opgeslagen. Nu eten en verder met Comenius.
22:12 Nu Comenius afmaken.
22:59 We schieten op, nog drie.
23:07 Nog twee.
23:13 De laatste.
23:20 OK, nu versturen. 
23:26 Nu nog even in het dagboek schrijven.
<tblauw>zondag 2021, nu toch echt wel zon in Egmond, 18°</tblauw>

|^✔|^08:30|Lopenlangs het strand|
|^✔|^10:00|Reflectie: podcast|
|^✔|^11:00|Sociaal: Koffielink|
|^✔|^12:00|Roth: Oeuvre|
|^✔|^13:23|Roth: Radetzkymars|
|^✔|^19:32|Rondje lopen|
|^✔|^21:00|Cultuur: Film Angels' Share|
|^✔|^22:30|dagboek|
|^|^|Franca|
|^|^|Regenton|
<tblauw>dinsdag 2021, regen en wind, 6 - 9°</tblauw> 

|customTable|k
|^ <$checkbox field='101047' checked=1></$checkbox>|<<klu "Berend en Sietske van Schiphol halen">>|
|^ <$checkbox field='101108' checked=1></$checkbox>|<<bes "Promotie voorbereiden">>|
|^ <$checkbox field='101233' checked=1></$checkbox>|<<doc "Lezing Muziek: nieuw hoofdstuk Samama lezen">>|
|^ <$checkbox field='101324' checked=1></$checkbox>|<<lez "10 blz Crossroads">>|

|^10:13|Nu promotie voorbereiden: Samenvatting Karkdijk lezen.|
|^11:07|Nu Bijbeltekst. Stukje uit Job over hoe de wereld eruit ziet? Of anders Psalm 19?|
|^11:10|Job 38, kunnen we dat printen? Wat gaat het worden?|
|^11:27|Hoe zit het met het protocol? En de gegevens?|
|^11:57|OK, alles klaar. Wel morgen de tablet opgeladen en mee!|
|^11:58|Nu even vergadering vanavond voorbereiden. Alles klaarzetten in Noteshelf en doorlezen. |
<tblauw>donderdag 2021, droog, stevige wind,14°</tblauw>

|^07:56|Nu roeien|
|^08:27|Nu aankleden|
|^15:30|Nu even 5 dagen doen in het vakantieverslag. Even kijken hoe dat hier gaat. |
|^16:17|We beginnen met zondag 12 septemer: nog één foto toevoegen.|
|^17:04|Verder met dinsdag 14 september|
|^18:13|Nog een poging om dinsdag 14 september af te maken. Welke foto's?|
|^18:46|Gelukt! Dus: eerst de foto's downloaden en de titels met fotonamen opschrijven. Dan via de pcloud website de foto's uploaden en hernoemen. Dan de foto's in het verhaal opnemen.|
|^23:49|Gezellige avond met Ewald en Margriet|
<tblauw>dinsdag 2021, zonnige start, daarna wolken, 20 - 23°</tblauw>

|^07:30|Nu eerst roeien|
|^08:56|Ontbijten|
|^08:59|Weer een probleem opgelost in mijn zeer mooie TiddlyWiki systeem|
|^09:34|Nog even kijken naar het openen van een kaart|
|^10:06|Gelukt! Nu tanden poetsen en auto wassen|
|^10:57|Even de planning bijwerken|
|^11:34|Nu verder met review. Artikel ervoor zetten. Aantekeningen via de telefoon|
|^14:28|Nu lunch en nap, 15:30 verder.|
|^16:34|Intussen weer verder. In de vakantie De Dood van Ivan Ilyich herlezen|
|^23:48|Een nieuw personal access token gegenereerd voor deze wiki. Denk erom dat de scope van het PAT "repo" is. En mail het token naar jezelf, dan is het opgeslagen.|
<tblauw>vrijdag 2021, warmste Oudejaarsdag sinds begin van de metingen, 14°</tblauw> 

|customTable|k

|^14:54|Nu eerst een 😴. Niet fit.|
<tblauw>zaterdag 2021, wolken, buien, later aan de kust zon, 20°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Roeien|
|^<$checkbox field='f' checked=1></$checkbox>|Podcast: intro Camus|
|^<$checkbox field='b' checked=1></$checkbox>|Podcast: fragmenten|
|^<$checkbox field='c' checked=1></$checkbox>|Podcast: uitleg|
|^<$checkbox field='d' checked=1></$checkbox>|Naar Egmond|
|^<$checkbox field='e' checked=1></$checkbox>|Oppassen op Mercia en Franca|
|^<$checkbox field='g' checked=1></$checkbox>|Wandelen in Rheden|

|^09:59|Al geroeid. Nu intro Camus in 30 min. Daarna fragmenten opnemen|
|^10:29|Nu de introductie invoeren.|
|^20:34|Nu proberen om drie wandelingen in Rheden op te sporen. Eerst de wandeling Rhederoord Middachten, tot 20:50|
|^20:53|OK, de wandeling is gedownload. Het adres: https://www.frankwandelt.nl/gelderland/landgoedwandeling-middachten-rhederoord-vanuit-rheden|
|^20:54|Nu iets rond Doesburg?|
|^21:01|Hoe kom je met de bus van De Steeg naar Doesburg?|
|^21:09|Vanaf het Brantsenpark in 8 min met lijn 43 naar Station Dieren. Vanaf daar in 9 min met lijn 26 naar Doesburg|
|^21:10|Teruglopen, hoe lang? 12 km van Doesburg naar Dieren, 7 km van Dieren naar Rhederoord|
|^21:13|Rondje in Doesburg: Stadswandelboekje Hanzestad Doesburg<br><br>Een stadswandeling door de Hanzestad Doesburg is een bijzondere ervaring. De historische rijkdom van de stad is af te lezen aan de prachtige gevels en het ongeschonden middeleeuwse stratenpatroon. De stad kent meer dan 150 monumenten en beeldbepalende panden. <br><br>Wilt u zelfstandig een wandeling maken door Hanzestad Doesburg? Bij VVV Doesburg is voor slechts € 3,25 een handig stadswandelboekje verkrijgbaar. In het boekje treft u een routebeschrijving en interessante informatie over alle bijzondere plekken in de stad. Met behulp  van dit boekje kunt u geheel zelfstandig een stadwandeling maken langs alle historische hoogtepunten van Doesburg.|
<tblauw>woensdag 2021, uitzonderlijk warm, zonnig, 20-24°</tblauw>
"""<$set name="today" value={{!!tocnr}}>
<br><br><$list filter="[!has[draft.of]tag[#dagtaak]search:datum{!!tocnr}sort[tocnr]]"><$checkbox tiddler={{!!title}} index=<<today>> checked="selected" unchecked="" default=""> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br>
</$list></$set>{{Coronatest||cl}}
{{Sociaal: overleg over leesclub Ekklesia||cl}}
{{Klussen: kachel schoonmaken||cl}}

12:30 Koffie zetten
15:35 Nu aan de slag. Proberen de giften op een rijtje te krijgen, een stuk Bakewell.
16:28 Een uur gerommel met TiddlyWiki. Nu even een half uur werken aan de giften. 
17:53 OK, giften doorgegeven aan Henk. Nu nog even Blakewell.
<tblauw>maandag 2021, zon en aangenaam, 19°</tblauw>

|^✔|^09:59|Naar Alkmaar voor een coronatest voor Anne|
|^✔|^11:05|Ook al weer klaar. Nu koffie en verslag checken. |
|^✔|^|Overleg met Mirjam|
|^✔|^|Lopen langs het strand|
|^✔|^|Overleg Bart-Jan|
|^✔|^|Tekst Huub naar Mirjam|
|^✔|^|Haakjes ophangen|
<tblauw>Eerste Paasdag 2021, vanmiddag ook wat zon, 9°</tblauw>"""<br>
{{0404 Terug naar Amsterdam||cl}}
{{0404 Sociaal: Kinderking||cl}}
{{0404 Sociaal: Bezoek S&T||cl}} 
{{0404 Klussen: TW Stroll||cl}} 
{{0404 Lezen: Blauw||cl}} 
{{0404 Reflectie: paaswebcast||cl}} 

13:53 Zou dit werken?
15:27 Het werkt nog steeds. Nu lezen in Blauw.
15:54 Automatisch een link aanmaken?
19:27 Vanavond nog twee vinkjes verdienen.

{{0404 Studeren: Turfs||cl}} 
{{0404 Reflectie: dagboekfragmenten||cl}} 
<tblauw>woensdag 2021, 's ochtends zon, 's middags lokaal een bui, 20 - 22°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Fietsroutes|

|^07:41|Even kijken hoe ver het fietsen is naar Velp|
<tblauw>zaterdag 2021, mist, daarna regen, 5°</tblauw> 

|customTable|k
|^ <$checkbox field='114732' checked=1></$checkbox>|<<klu "boodschappen">>|
|^ <$checkbox field='114746' checked=1></$checkbox>|<<klu "lanpjes">>|
|^ <$checkbox field='114835' checked=1></$checkbox>|<<adv "uitspraak COBEX">>|
|^ <$checkbox field='114858' checked=1></$checkbox>|<<bes "ALV verslag">>|
|^ <$checkbox field='114916' checked=1></$checkbox>|<<soc "[[Sinterklaas 2021]]">>|

|^15:35|Nu dan de Sinterklaasgedichten. Even een lijstje  maken.|
<tblauw>dinsdag 2022, buien, later droog, 8 - 5°</tblauw> 

|customTable|k
|^ <$checkbox field='195000' checked=1></$checkbox>|<<bes "[[Nieuwjaarswens Weekbrief]]">>|
|^ <$checkbox field='203313' checked=1></$checkbox>|<<adv "stuk Sieb lezen">>|
|^ <$checkbox field='203328' checked=1></$checkbox>|<<adv "[[review afmaken]]">>|

|^11:46|Nu even een stukje voor de weekbrief. Kunnen we het stukje van Hans Werner van vorig jaar nog terughalen?|
|^11:56|Kon in januari 2020 geenn stukje vinden. Dan maar zelf iets verzinnen|
|^13:21|Nu review afmaken|
|^22:28|Review klaar. Hebben we een stuk van Siebe?|

<tblauw>zondag 2021, zon, ook enkele buien, 18 - 20°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Review afmaken|
|^<$checkbox field='b' checked=1></$checkbox>|Zoom Kinderkring|
|^<$checkbox field='c' checked=1></$checkbox>|Band plakken|
|^<$checkbox field='d' checked=1></$checkbox>|Review 738 lezen|

|^06:20|Nu review afmaken. Teksten activeren. Tekst verder doorlopen in tablet mode. Beoordeling in punten. Beoordeling uitschrijven. Beoordeling versturen.|
|^07:50|OK, dat is klaar! Nu eigenlijk meteen een begin maken met het derde review. Teksten activeren.|
|^08:22|Nu aankleden. 11 uur Zoom Kinderkring!|
|^11:08|Kinderkring loopt. Band geplakt, boor in kofferbak. Nog twee artikelen Argus en dan review lezen|
|^12:05|verder met 738|
|^12:25|Nu naar Egmond|
|^21:19|OK, Review verstuurd! Morgenvroeg verder met assignments. Nu Bas Heijne lezen.|
<tblauw>vrijdag 2021, warme zomerdag, 22 - 26°</tblauw>

|^|^07:17|Dit is een prima systeem, ik vind dit goed genoeg om mee te werken|
|^|^07:19|Even dagboek|
|^✔|^09:00|Lopen met Harry|
|^✔|^12:00|Kettinkje voor Anne halen|
|^✔|^13:00|Boodschappen|
|^|^17:29|Nu iets doen aan SVAN: werken aan verslag 2021.<br> Zijn de gegevens van 2021 gedownload? Rekening Courant? Ja tot en met 16 mei. Nu opnieuw downloaden.|
|^|^17:34|Dat is klaar. Nu een spreadsheet aanmaken. |
|^|^17:58|Dat is klaar. Nu twee stukken maken: Mail van Van Dijk en overzicht rc en overzicht spaarrekening|
 
<tblauw>dinsdag 2021, regen, 10°</tblauw>


|^ ✔|^07:00|Lezen: Radetzkymars|
|^ ✔|^07:30|Lezen: Radetzkymars|
|^&#x2714;|^09:30|Studeren: Sacks|
|^&#x2714;|^10:00|Studeren: Sacks|
|^ ✔|^11:00|Deventer bezoeken|
|^ ✔|^15:00|Sociaal: Marjolein|
|^ ✔|^16:00|Lezen: Radetzkymars|
|^ ✔|^16:30|Lezen: Radetzkymars|
|^ ✔|^17:30|Sociaal: Ton en Veronique|
|^ ✔|^21:00|Cultuur: Film Bankier van het verzet|
<tblauw>maandag 2021, droge momenten, 15°</tblauw>

|^21:52|Nog even 16 en 17 september doen.|
<tblauw>zaterdag 2021, eerst wolken maar verder veel zon onderweg, 22°</tblauw>

Vandaag gereisd van Amsterdam naar Luzern. Goed gegaan, om kwart over zeven vertrokken en om zes uur hier aangekomen.
"""1934: Gezondheid achteruit, geldzorgen, Zweig helpt. Staatsgreep in Oostenrijk, Dolfuss vermoord. Roth steunt Otto von Habsburg. Boeken verschijnen bij Allert de Lange
1935 - 1937: Amsterdam, Oostende, Brussel. Jaarwisseling in Lviv.
1938. Voorbereidingen om via een staatsgreep de Habsburgers weer in het zadel te helpen, maar Anschluss op 18 maart. Romans Die Kapuzinergruft en DIe Legende vom heiligen Trinker
1939:  In mei bericht over zelfmoord van vriend in New York. Roth stort in, naar het ziekenhuis, geen alcohol, delirium, longontsteking. Op 24 mei overlijdt Roth.
1940: Op 15 juli wordt Friedl vergast in psychiatrische kliniek.
Indrukwekkend moment: op vrijdag 27 maart, de zegen urbi et orbi van de paus op het legen Sint Pietersplein. De eenzame man in de regen. De Mens, in exisitentiële zin. Ook voor ongelovigen kan de pauselijke zegen iet betekenen. De existentiële verbondenheid met ieder mens. Het geloof is geen voorwaarde om te worden geholpen. Zonder ongeloof geen echt geloof. Ook ongeloof kan prachtig zijn, mooi, trots, sereen, waarbij de sterfelijkheid van de mens met stoïcijnse waardigheid wordt gedragen. Rahner: goedwillende mensen zijn crypto-christenen. De kerk als ultieme pleisterplaats voor all vormen van geloof en ongeloof. In ruil daarvoor verlangt ze niets. Dus ook niet dat het individu gelooft. De kerk heeft andere culturen en religies aangevallen en uitgeroeid. Maar soms ook niet. Denk aan de San Clemente in Rome met onder de binnenplaats de resten van een oud Mithras-heiligdom. [Misschien ook de Kathedraal van Syracuse met de de Dorische zuilen in de zijgevel]<p>

<<ximg width:50% "/Historie/1024px-SiracusaCathedral-pjt3.jpg">><p>

De San Clemente heeft het Mithras-heiligdom opgeslokt maar ook bescherming geboden en gekoesterd. Zo biedt de kerk vertroosting aan mensen van wie het geloof ieen dipje zit of die helemaal niet meer geloven. Gun de mensen toch een zeker ongeloof. Onzekerheid is het lot van ieder mens. Ik sta positief tegenover de twijfel en het niet zeker weten van dingen. Ook in de wetenschaap is steeds minder plaats voor open gesprek, steeds meer overheerst het grote gelijk. Wat ik mis is liefde voor de twijfel en het opgeschorte oordeel. De kerk moet gastvrijer zijn dan de wetenschap. Wie gedoopt is blijft voor eeuwig en altijd lid van de katholieke kerk. Persoonlijk geloof is daarbij onbelangrijk. <geel>Ook kardinalen die van hun geloof vallen moeten gewoon blijven functioneren, om de gelovigen niet te ontgoochelen. </geel> Eens gedoopt, altijd gedoopt. Ongeloof is geen ramp. Zie Thérèse van Lisieux die haar gevecht met God aanvaardde en begreep als een uitdrukking van solidariteit met niet-gelovigen. Toch werd ze heilig verklaard. <p>

Wat zou geloof zijn zonder ongeloof? Niets. Conventie. Vanzelfsprekendheid. Zonder geloof geen ongeloof. Zonder ongeloof geen geloof. 

"""Ja, God is wèl
goed voor ons,
voor een mens
die is gelouterd. 

Bijna was ik
uitgegleden,
het scheelde niets
of ik was gevallen;
ik was afgunstig
op zo'n blaaskaak,
ik zag zijn vrede
zonder God. 

Voor hem geen zorgen:
puike gezondheid,
het leed der mensen
kent hij niet,
hij wordt niet geplaagd
als ieder ander;
hoogmoed is zijn
zegelring,
machtswellust
zit hem als gegeten. 

Zijn ogen puilen
uit zijn vet,
zijn hart loopt over
van gemeenheid,
spot, cynisme,
dreigementen,
grote mond
tegen de hemel,
tong die heel de
aarde bederft.
Natuurlijk krijgt hij
de massa mee.
Ze slurpen zijn woorden
als water op:
'Wat heeft God
met ons te maken
als die tenminste
nog bestaat.'
Zo gaat hij lustig
zijn goddeloze gang,
maakt het best,
krijgt het steeds beter. 

Waarom heb ik
in U geloofd,
heb ik mijn handen
schoon gehouden?
Iedere dag is
een straf voor mij,
elke morgen
word ik geslagen.

Vaak genoeg dacht ik:
doe als die anderen.
Maar dan zou ik
breken met U,
en het geloof van mijn
vader verloochenen.
Zo werd ik heen
en weer geslingerd,
gekweld, wanhopig
en zonder uitzicht. 

Totdat ik rust vond
in uw mysterie
en leerde zien
vanuit uw toekomst:
heel hun bestaan
is op drijfzand gebouwd,
het valt in puin,
ze worden in een
oogwenk vernietigd -
een boze droom
zo vaagt Gij hen weg
uit de wereld der mensen. 

Ik was verbitterd
en opstandig,
ik was gewond
tot in mijn ziel.

Ik was als een redeloos
dier bij U. 

Bij U, ik ben
altijd bij U.
Gij houdt mij vast,
uw hand in mijn hand.
Alles zult Gij
ten goede leiden,
Gij voert mij mee
in uw raadsbesluit.
Wat is de hemel
voor mij zonder U,
wat moet ik op aarde
als Gij niet bestaat?
Al wordt mijn lichaam
ook afgebroken,
al sterft mijn hart,
Gij zijt mijn Rots,
mijn God, de toekomst
die op mij wacht. 

Ver weg van U
is het geen leven,
U ontrouw zijn
is niemand zijn. 

Bij U, mijn hoogste
goed, mijn God,
bij U ben ik
geborgen.
Het belang van nachtelijke duisternis. Meer licht vanwege het gespuis. "Je weet niet waar je woont". Wie navigeert er nog op de sterren? Elke generatie groeit op met minder sterren. Lichtvervuiling. 

<tblauw>Tweede Paasdag 2021, boos weer, 6°</tblauw>"""<br> 
{{0405 Klussen: Omvormer||cl}} 
{{0405 Muziek: Piano spelen||cl}}
{{0405 Sportief: Roeien||cl}} 
{{0405 Sociaal: Brunchen bij Cathrien||cl}}
{{0405 Klussen: was ophangen||cl}} 
{{Lezen: Al het Blauw||cl}} 
{{Studeren: God en wij||cl}}
{{Docent: Camus||cl}} 
{{Cultuur: Happy Old Year||cl}} 

<tblauw>donderdag 2021, °</tblauw>

|^20:09|Eten bij Geert en Nathalie|
|^22:38|Nu nog even dagboek, dan nog bij blz. lezen in Hotel Savoy|
<tblauw>zondag 2021, regen, 5°</tblauw> 

|customTable|k
|^ <$checkbox field='114916' checked=1></$checkbox>|<<soc "[[Sinterklaas 2021]]">>|

|^06:05|Nu Anne|
|^06:15|Nu Berend|
<tblauw>woensdag 2022, buien, 6°</tblauw> 

|customTable|k
|^ <$checkbox field='155419' checked=1></$checkbox>|<<soc "Mercia en Franca logeren">>|
|^ <$checkbox field='155440' checked=1></$checkbox>|<<lez "10% De Kom">>|
|^ <$checkbox field='155506' checked=1></$checkbox>|<<adv "[[Scriptie Siebe]]">>|

|^15:55|Scriptie Siebe|
<tblauw>maandag 2021, regen, 20°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Beyond: opdracht 1.1|
|^<$checkbox field='b' checked=1></$checkbox>|Wandelen|
|^<$checkbox field='c' checked=1></$checkbox>|Gaatjes boren|
|^<$checkbox field='d' checked=1></$checkbox>|Lopen en zwemmen|

|^07:10|Nu begin met Beyond opdracht 1.1|
|^20:30|Nu wel heel moe. Toch nog even een poging doen om een paar opdrachten 1.1 te beoordelen. Misschien wel allemaal! |

<tblauw>zaterdag 2021, grijs, 16°</tblauw>

|^✔|^|Planken|
|^✔|^|Stofzuigen|
|^✔|^|Moppen|
|^✔|^|Naar Ouddorp en terug|
|^✔|^|Leesclub over Radetzkymars van Joseph Roth|
 
<tblauw>woensdag 2021, bewolkt, buien, sinds even de zon, 10°</tblauw>
 

|^|^07:55 |Aankleden en Ontbijten|
|^&#x2714;|^10:00|Sportief: Lopen|
|^&#x2714;|^11:00|Cultuur: Allen tegen Allen|
|^&#x2714;|^12:00|Opruimen en naar Amsterdam|
|^ ✔|^17:00|Klussen: Boodschappen|
|^ ✔|^17:30|Klussen: Bevrijdingssoep koken|
<tblauw>dinsdag 2021, vanochtend droog, vanmiddag regen, 17°</tblauw>

|^08:05|Opstaan!|
|^09:43|Nu de draad met Creativiteit oppakken|
|^16:19|Verder met USO voorstellen. Veel!|
|^18:04|Nu vergadering klaarzetten: tafel leeg, zoom, Bettine bellen, stoelen voor Hans, Seph, Mirjam, Alex, Marga, Jos, Stan, koekjes, |
|^23:03|10 kandidaten|
"""
Yolum '+ nuttige bijdrage vanuit computer sciences aan project McGonigle
Oosterbaan '+ nuttige bijdrage vanuit culturele antropologie aan project McGonigle
Campman '+ nuttige bijdrage aan SENSE project. Rol nog niet geheel duidelijk.
Llamas '+ nuttige bijdrage aan SENSE project.
Muzyamba '+ nuttige bijdrage aan SENSE project.
Wright '+ nuttige bijdrage aan SENSE project.
Van Royen-Kerkhof '+ potentieel nuttige bijdrage aan SENSE project. Ze geeft dat zelf niet aan. Als net benoemde directeur van de medical school zal ze niet veel tijd over hebben.
Langelaar ? Onduidelijk bij welk consortium de belangstelling van de kandiddaat, ethische dilemma's van diergeneeskundigen via kunst aan de orde stellen, terecht kan.
Silvertand ? In cocreatie met studenten duurzaamheid in het farmacie curriculum aan de orde stellen, waar sluit dat bij aan?
Nijenhuis + prachtig cv, zou goed bij SENSE passen
Bauw - geen informatie over cv en kwaliteiten kandidaat.
Krijgsheld + nuttige bijdrage aan EELOC project
Browne - te weinig info
Ballantyne - goed gekwalificeerde kandidaat maar "idee" community based research onvoldoende uitgewerkt
Weckhuysen + uitgewerkt implementieplan voor verbreding Da Vinci-project door goed gekwalificeerde kandidaat.
Meijerman + Brede uitrol SoTL, uitgewerkt plan, gekwalificeerde kandidaat.
De Heer + uitgewerkt idee voor digitaliseren van het anatomie onderwijs binnen de Universiteit Utrecht, gekwalificeerde kandidaat met zeer voortvarende loopbaan
Strick + nuttige bijdrage aan verbreding da Vinci-project
Sluijs + nuttige bijdrage aan verbreding da Vinci-project
van Houwelingen + nuttige bijdrage aan verbreding SoTL-project
Schutjens + nuttige bijdrage aan verbreding SoTL-project
Pandit + nuttige bijdrage aan verbreding SoTL-project
van Haeften ? Goed cv maar motivatie om mee te doen aan verbreding SoTL-project onduidelijk
<tblauw>zondag 2021, weer een stralende dag, vast boven 20°</tblauw>

Vandaag verder reizen van Luzern naar Monte San Martino.

|^18:07|Aangekomen na 1568 km. Vandaag was het vrij rustig, wel veel files bij de tegenliggers. Nu even krant en bijkomen. Vanavond eten bij Priori|
|^21:39|Lekker gegeten. Nu nog even dagboek en Tolstoi|
Pastorale constitutie //Gaudium et spes// tijdens Tweede Vaticaans Concilie: Verzet tegen moderne samenleven wordt opgegeven. Maar de kerk moet de wereld ook kunnen verlaten, in gebed en kloosterleven. Maar niet volledig. Trappisten bidden en brouwen bier. 

Het <geel>asielrecht</geel>. Bestond al in de Romeinse tijd. Voorbeelden uit de zesde eeuw. Maar al in de 8e eeuw kwamen er inperkingen. Zo bepaalde de capitularium van Herstal, een kort kapittel uit 779, dat wie in een kerk vluchtte en schuldig was aan moord of een ander delict waarop de doodstraf stond, in het gebouw niet van voedsel mocht wordt voorzien. Daardoor werd een lang verblijf onmogelijk, al bleef het principe overeind dat zolang de verdachten binnen bleven, ze veilig waren. Moeten we de asielwetten eng of ruim interpreteren? Met de Franse revolutie kwam een feitelijk einde aan het kerkasiel. In onze tijd wordt het weer opgepakt. <geel>Soms wordt er continu een dienst gehouden. Die mag niet worden verstoord. De kerk als een sacraal gebouw waar mensen veilig zijn en de zuiver wereldse logica niet zomaar geldt.</geel> Bestaat er een soort van ius divinum , een goddelijk recht, dat aan het asielrecht ten grondslag ligt? <geel>Is een vrijplaats, een oase mogelijk waar de mens, omdat hij mens is, algehele bescherming geniet, vrij kan ademhalen, ook al is hij een moordenaar en een dief? Ik denk dat wij naar zo’n vrijplaats verlangen.</geel> Eigenlijk, stelt Derrida, zou de gastvrijheid onbegrensd moeten zijn.

Het <geel>biechtgeheim</geel>. Moeten slechteriken, zoals priesters die misbruik plegen, door het biechtgeheim worden beschermd? Desmet: Wie in de biechtstoel belandt zonder zondebesef, en hoopt er met een geveinsde schuldbelijdenis gemakkelijk vanaf te komen, heeft niet het recht door het biechtgeheim te worden beschermd. Dat druist echter in tegen het concept ‘vrijplaats’ zelf. <geel>Een plek, of het nu om de biecht of een kerkgebouw gaat, is een vrijplaats of is dat niet. De biecht is een sacraal moment, niet of niet noodzakelijk een moment van morele zuivering. Maar niemand hoeft persoonlijk in God te geloven om van de vrijplaats die aan het geloof in hem te danken is, gebruik te mogen maken.</geel>

Ook de <geel>zondagsmis</geel> is een plek van absolute vrijheid. Niets verhindert om tijdens de zondagsmis ingetogen te verlangen naar drank en vrouwen. Of om te denken aan manieren om tegenstanders tijdens de komende week voetje te lichten. Dat is misschien niet aardig. Maar er geldt geen enkele morele code die het veroordeelt. De zondagsmis is een vrijplaats. Ze biedt ‘kerkasiel’ in het klein.
Wanneer gingen mensen in het westen zich als individuen zien? Italiaanse renaissance, Pico della Mirandola: Oratio de Hominis Dignitate. Autobiografieën, zelfportretten (Rembrandt: meer dan 40). Jacques Lacan: de uitvinding van het ik gaat samen met de uitvinding van de spiegel. Luther, Reformatie: het primaat van de directe ontmoeting tussen God en mens, Ik, zonder tussenkomst van Wij, de kerk. Eeuw later, Descartes: Cogito ergo sum. Thomas Hobbes: het individu met zijn eigen belangen centraal. Kant: de rede van het individu. Behandel anderen als doel, niet als middel. De moraal bevindt zich in de ziel van de mens. Moraal betekent autonomie. ‘Act only on that maxim which you can at the same time will that it should become a universal law.’<p>
Kierkegaard: twee personae: de esthetische (leven in de zintuigen) en de ethische (toewijding aan rechtvaardigheid en plicht). Twee coherente maar incompatibele werelden. Welke moet je kiezen? Vergt een leap of faith, een sprong in het duister, een sprong in het geloof. <br> 
Nietzsche: God is dood. De hele Joods-Christelijke traditie is niets meer dan de wraak van de machteloze op de machtige. De vergelding van de slaven op hun meesters. Een oefening in wrok, ressentiment. In bedwang houden van de menselijke natuur, de wil tot macht. De overwinnaars zijn de Ubermenschen. Enorme invloed: Marx, Freud, postmodernisme. Zo hebben Kierkegaard en Nietzsche effectief de fundamenten van de moraal te gronde gericht. In plaats daarvan een persoonlijke, subjectieve visie op moraal waarin keuze centraal staat. Niet tussen goed en kwaad, maar om goed en kwaad zelf te definiëren. Het Ik als de schrijver van eigen regels. <p>
In Frankrijk ontwikkelde zich hieruit het existentialisme, Sartre en Camus. Zomaar de samenleving en zijn rollen accepteren in mauvaise foi volgens Sartre. Het postmodernisme, Derrida en Foucault, vloeiden hieruit voort. In Engeland en de V.S. het emotivisme, morele oordelen weerspiegelen niet langer een objectieve werkelijkheid. Geen gedeelde codes of principes meer. Als het maar authentiek is, een expressief soort individualisme. <p>
Risico: mensen laten alles wat hen niet persoonlijk aangaat, aan de staat, outsourcing (zie hoofdstuk 1). Alleen sterke families, kerken en liefdadige instellingen kunnen dit voorkomen. Durkheim: als er geen gedeelde code meer is, dan gaat het suicide cijfer stijgen. Klopt! Dat is de wereld waarin we nu leven: a world of relativism, non-judgementalism, subjectivity, autonomy, individual rights, and self-esteem. Radicaal individualisme leidt tot eenzaamheid en nihilisme. Alleen door relaties kunnen we overleven. De menselijke wereld wordt kouder en kouder. 
Koolmezen gaan te vroeg broeden. We verliezen insecten door het kunstlicht. Soortenverlies. Verstoord dag- nachtritme leidt tot allerlei ziekten. Meer verlichting leidt alleen tot meer veiligheid als er sociale controle is. In het verkeer leidt minder licht tot meer scherpte en minder ongelukken. Beslagen ramen, kleinere denkers. Met het verdwijnen van ons zicht op de sterren verdwijnt ons zicht op de toekomst. We ervaren meer gebrokenheid omdat er geen duisternis is waarin de verschillen tussen ons oplossen. Licht is goedkoop, zeker led-verlichting. Het verlies van de nacht vervreemdt ons van onze wortels. 

<tblauw>dinsdag 2021, veel winterse buien, noordwestenwind, 5°</tblauw>"""<br> 
{{0406 Sociaal: Caroline feliciteren||cl}} 
{{0406 Docent: Camus||cl}}
{{0406 Klussen: Mails opruimen||cl}}
{{0406 Bestuur: Notitie Machinekamer||cl}}
{{0406 Klussen: Matrassen afvoeren||cl}}
{{0406 Klussen: Bakken ophalen||cl}}
{{0406 Klussen: Omvormer||cl}}
{{0406 Klussen: Koken||cl}}
{{0406 Reflectie: Dagboek||cl}} 
{{0406 Studeren: God en wij||cl}} 
{{0406 Bestuur: Notulen ALV Noord4Us||cl}}

08:16 Wat kunnen we nu met Stroll: Het werkt volgens mij niet. Toch wel: [[0789 Brown & Campione 1996]]. 
10:06 Even op een rijtje: Camus, mails opruimen, bureau opruimen, matrassen afvoeren, bakken ophalen, koken. Dat even in de checklist zetten. 
10:18 Nu even een half uur Camus: Inleiding bekijken en verbeteringen noteren.  Eerst nog even mail naar Pittenspecialist. 
12:13 Héhé dat was de nieuwe versie van vokoscreen. Alles werkt weer. Nu even Caroline en dan de mails. 
12:19 Nu de mails opruimen. 
15:35 De matrassen zijn afgevoerd en de bakken opgehaald. Nu even werken aan verslag bijzondere ALV. 
<tblauw>vrijdag 2021, °</tblauw>
<tblauw>maandag 2021, weer grijs, 5°</tblauw> 

|customTable|k

|^09:54|Slingers ophangen|
<tblauw>donderdag 2022, zon en regen, 6°</tblauw> 

|customTable|k
|^ <$checkbox field='83316' checked=1></$checkbox>|<<soc "Franca en Mercia logeren">>|
|^ <$checkbox field='230903' checked=1></$checkbox>|<<adv "overleg met Siebe Witteveen">>|
|^ <$checkbox field='230937' checked=1></$checkbox>|<<cul "Film: [[220106: The Lost Daughter]]">>|
<tblauw>dinsdag 2021, eerst regen, later zon, 20 - 22°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Beyond 1.2|
|^<$checkbox field='b' checked=1></$checkbox>|Lopen en zwemmen|
|^<$checkbox field='c' checked=1></$checkbox>|Naar Amsterdam|
|^<$checkbox field='d' checked=1></$checkbox>|vaatjes boren|
|^<$checkbox field='e' checked=1></$checkbox>|Deur smeren |

|^06:19|Nu Beyond 1.2|
|^06:25|De drie teksten lezen|
|^07:21|Materiaal 2.1 klaarzetten|
|^11:04|Nu gaatjes boren en deur smeren|
|^13:26|Nu de rest van Beyond 2.1|
|^18:07|Ekofi|
|^19:21|Nu Beyond 2.2|
<tblauw>zondag 2021, zon, 17 - 20°</tblauw>

|^✔|^|Naar Egmond|
|^✔|^|Reflectie: podcast|
|^✔|^|Sociaal: koffielink|
|^✔|^|Beer en Siets|
|^✔|^15:02|Naar het strand|
|^✔|^19:17|Sacks: Moraal|
 
<tblauw>donderdag 2021, zon en kans op bui, 10 - 12°</tblauw>
 

|^|^06:49 |aankleden en ontbijten|
|^|^18:42 |Intussen oppas achter de rug. Wel wat spatjes van Els maar Anne trad ferm op en daardoor escaleerde het niet. Ada sliep slecht maar was verder opgewekt. Begint aardig op haar billen te schuiven. Even de soep opwarmen.|
|^ ✔|^08:00|Sociaal: oppassen op Ada en Els|
|^ ✔|^20:00|Sociaal: Ekklesia|
<tblauw>woensdag 2021, eerst regen, later zon, 15°</tblauw>

Het begint herfstig te worden. Toch proberen zaterdag 18 september en zondag 19 september te doen. Eerst nog even kijken of je hier ook aantekeningen kunt maken en hoe je tiddlers kunt printen.

Dat gaat goed.

# Je geeft de te printen pagina's de tag "print"
# Je doet een advanced search opdracht [tag[print]sort[tocnr]]
# Je exporteert de geselecteerd tiddlers naar een static html bestand
# Dat wordt dan vanzelf geopend in een browser
# Dan doe je ctrl-p en de zaak is gepiept.
# Je kunt dan ook kiezen voor Save to pdf

<tblauw>maandag 2021, rustig nazomerweer, 24°</tblauw>

Wordt vast een mooie dag. Vanochtend boodschappen in Servigliano, vanmiddag een wandeling, lekker veel lezen. 

|^07:22|Even kijken of er hier te wandelen valt.|
|^11:41|Intussen boodschappen gedaan op de markt en in de supermarkt en koffie gedronken in Servigliano. Nu lezen in de koesterende zonnewarmte. Vakantie!|
<geel>Als iets in de kerk me altijd heeft afgestoten, is het moralisme. Het moralisme van de kerk heeft bovendien een belangrijk indirect nadeel. Als leiders ons precies zeggen wat we moeten doen, dienen we ons geweten niet langer te volgen en hoeven we enkel te gehoorzamen. Hebben we uiteindelijk niet eens een eigen geweten nodig. Terwijl juist de vorming van het geweten als leidraad van ons leven een essentiële christelijke houding is. Wie enkel gehoorzaamt, volgt de wet, de onrechtvaardige inbegrepen. Zo is moralisme vanwege kerkleiders een gevaar voor een evenwichtige moraal.</geel>

In de encycliek Humanae Vitae schreef de aarzelende intellectueel Paulus VI dat, met uitzondering van de natuurlijke methode, voorbehoedsmiddelen bij seksuele contacten uit den boze waren. De encycliek werd door katholieken massaal genegeerd. Het woord werd tegengesproken door de daad. Deze encycliek vormde een scharniermoment. De kerk hield op om voor een grote meerderheid van katholieken een referentiepunt voor seksuele moraal te zijn. Door over voorbehoedsmiddelen een standpunt in te nemen dat nauwelijks navolging vond, verloor ze op het brede terrein van relaties, huwelijk en gezin haar geloofwaardigheid.

Hoe dan ook keerde op een halve eeuw tijd het tij. De kerk is niet langer in staat zich als zedenmeesteres op te werpen. Dat is niet enkel aan de encycliek Humanae Vitae te wijten en het onvermogen om daarna moreel geloofwaardig te blijven. Het heeft minstens evenveel met het seksueel misbruik door clerici te maken. <geel> Maar het morele failliet van de kerk geeft ook de kans om het voortaan helemaal anders aan te pakken. Met twee belangrijke punten die verdere aandacht verdienen. Vooreerst met een mildere moraal die meer evangelisch en minder kerkelijk is. Vervolgens met een radicale omkering: de kerk hoeft niet te bepalen hoe anderen moeten leven, ze moet zelf voor anderen leven. </geel> 

De procedurele ethiek is hier medeschuldig. Ze is een lege doos. Ze houdt de schijn op maar het ontbreekt haar aan fond. De ethicus is niet langer iemand die mensen helpt om na te denken. Hij is iemand geworden die de overbodigheid van het nadenken vaststelt en in plaats daarvan een draaiboek aflevert dat zorgverleners gedachteloos kunnen volgen. Precies die hardheid, zowel die van de kerk in het verleden als die van de onverbiddelijke procedures, moet verdwijnen. De radicaliteit van het evangelie, waar velen mee schermen en die in de woorden en daden van Jezus Christus effectief aanwezig is, hoeft niet tot hardheid te leiden. Jezus kon perfect leven met mensen die geen heiligen zijn. Hij apprecieerde hen bovendien. Goedheid hoeft geen volmaaktheid te zijn. Het is een opluchting voor iedereen die zich van zijn beperkingen bewust is. Dat blijkt niet erg te zijn. Het verhindert onze redding niet. <geel> Tegenover de absolute moraal staat de kleine goedheid. </geel> 

De tijd van de machtige kerk met haar onverbiddelijke moraal is ten einde. Dat biedt niet alleen de kans aan een meer evangelische moraal die rekening houdt met de beperkingen van de mens. Ook voor de kerk zelf ontstaan nieuwe mogelijkheden waarbij ze gelovigen niet langer wil domineren en controleren, weleer. Paus Franciscus vergeleek in een interview uit 2013 met Antonio Spadaro de kerk met een veldhospitaal. 

Tomáš Halík werkte het beeld van de kerk als hospitaal verder uit door op drie belangrijke momenten te wijzen, namelijk de diagnose, de preventie en het herstel. 

De //diagnose// heeft te maken met de tekenen van onze tijd en hoe ze te lezen. Het klimaat, het narcisme. 

Die heeft zeker een rol te spelen bij het tweede punt dat Halík vermeldt, namelijk de //preventie// die met ziekenzorg gepaard gaat. Hij ziet de kerk als remedie tegen angst, haat, populisme en nationalisme.
Voorkeur mag blijken, uitsluiting is uit den boze. <geel> Niettemin gaat van de zuiver territoriale parochiestructuur iets moois uit. Iets preventiefs ook. Zij is een remedie tegen uitsluiting. </geel>  Het gaat daarbij trouwens niet alleen om sociale verschillen maar ook, dat werd in het verleden vaak vergeten, om religieuze. Niet iedereen in het dorp was even godvruchtig. <geel>Daar waar in de kerk enkel de goeden overblijven, gaat ze kwalitatief achteruit. Ze heeft marginalen nodig, letterlijk, mensen die zich aan de rand bevinden, om zich helemaal te kunnen ontplooien. De gehavende mens is welkom in de kerk, zeker in de kerk als hospitaal. Juist die gehavende mens is een vorm van preventie tegen uitsluiting. De kerk heeft behoefte aan wie vurig geloven, maar ook aan wie minder geloven, waardoor de scherpe scheiding tussen goed en kwaad die ook aan haat, populisme en nationalisme ten grondslag liggen, achterwege blijft.</geel> Kortom, de kerk als hospitaal, de kerk die met moraliseren is opgehouden, biedt niet enkel preventie tegen angst, haat, populisme en nationalisme. Maar ook tegen de illusie van de deugdzaamheid en het tomeloze streven naar volmaaktheid, zoals Icarus almaar hoger wilde vliegen tot de zon zijn vleugels verschroeide.

Tomáš Halík noemt naast diagnose en preventie nog een derde functie van de kerk als hospitaal: de //genezing//, de heling van de wonden. Daarvoor volstaat het niet dat ze rechtvaardig is. Rechtvaardigheid gaat uit van twee veronderstellingen die allebei betwistbaar zijn, vooreerst dat ze bestaat, vervolgens dat de mens die zorgvuldig handelt ze kan organiseren. Maar ze bestaat niet. Terwijl de kerk ruimte schept voor onredelijkheid. Voor barmhartigheid en vergiffenis bijvoorbeeld, begrippen waarvoor geen enkele ideologie sympathie koestert omdat ze de logica van een gesloten systeem doorkruisen. Kortom, rechtvaardigheid en liefdadigheid sluiten elkaar niet uit. Liefdadigheid biedt iets wat structurele rechtvaardigheid niet kan geven, namelijk persoonlijke betrokkenheid. En misschien onverwachte, niet meetbare, vormen van herstel.

<geel> Kortom, in deze tijd kan de kerk een plek zijn van ethische vernieuwing. De strenge morele regels van vroeger slaan niet meer aan. In de samenleving wordt ethiek vaak versmald tot bloedeloze procedures. Een boekhoudersethiek. Dan zit er meer muziek in een evangelisch streven naar kleine goedheid die heus niet tot volmaaktheid hoeft te leiden. Het vreemde is dat deze nieuwe, helpende rol van de kerk van bisschoppen en priesters meer inzet en persoonlijk engagement vergt dan de belerende. </geel> 
Overzichtseffect, nee, kosmologisch bewustzijn. Dat relativeert. We zijn nietig, maar ook uitzonderlijk. Bewustzijn kun je trainen als een spier. Een voortdurend proces, met aandacht alles instrument. 

Ken je Sisyphus? Ooit was hij koning in Griekenland, over een landstreek waar nu Korinthe ligt. Hij hield zich niet aan de regels van de goden. Zeus werd boos op hem en stuurde Hades, de god van de onderwereld, op Sysiphus af. Om hem op te halen en af te voeren naar het dodenrijk. Maar Sisyphus was een slimmerik die Hades hartelijk welkom heette. Hades had de ketens bij zich om Sisyphus te boeien en mee te nemen. Sisyphus vroeg aan Hades: Zijn die ketens wel sterk genoeg? Jawel, zei Hades, natuurlijk, die heb ik vaker gebruikt. O, zei Sisyphus, laat dan eens zien hoe sterk ze zijn. Kun je jezelf ook in de boeien slaan? Hades voldeed gaarne aan het verzoek en liet zo vol trots zien hoe sterk de ketens waren. Sisyphus uitte zijn bewondering en sloot vervolgens Hades, geboeid en wel, op in een kast. Sisyphus was op die manier verlost van zijn aanstaande dood, maar dat gold ook voor alle andere mensen op de wereld. Niemand kon sterven zolang Hades opgesloten zat in die kast. Dat beviel de goden natuurlijk helemaal niet en uiteindelijk werd Hades bevrijd en kreeg Sisyphus straf. De straf bestond eruit dat Sisyphus voor eeuwig en altijd een zware steen een berg moest oprollen. Als Sisyphus met de steen bovenaan de berg was gekomen, dan rolde de steen weer naar beneden en moest hij van voren af aan beginnen. Dat was zijn lot, altijd en eeuwig de steen de berg oprollen. 

Lijkt ons leven op dat van Sisyphus? Je staat op, je ontbijt, je poetst je tanden, je gaat naar je werk, 's middags keer je weer terug naar huis, je eet met je gezin, je doet de afwas, je brengt de kinderen naar bed, je zijgt neer op de bank naast je vrouw, je kijkt naar  het Journaal, je leest de krant, je gaat naar bed, en de volgende dag begin je weer van voren af aan. Wat is eigenlijk de zin van het leven? Iedereen stelt die vraag aan zichzelf. Dat is een volstrekt menselijke eigenschap, zegt Camus. En we krijgen daarop geen antwoord. Het universum zwijgt in alle talen. Dat is wat Camus de absurde werkelijkheid noemt, de mens die vergeefs zoekt naar een zin, een betekenis, een bedoeling in een wereld waarin het leed al maar groter lijkt te worden, ver weg, en dichtbij, ook in onze coronapandemie.

In de roman De Pest schetst Albert Camus een absurde werkelijkheid bij uitstek, de fictieve uitbraak van de pest in de Algerijnse havenstad Oran. We maken de uitbraak in een tijdsbestek van ongeveer een jaar mee door de ogen van dokter Rieux, arts en onvermoeibaar strijder om het leed voor de pestlijders zoveel mogelijk te verzachten. De pest komt zonder enige aanleiding en treft eerst de ratten in de stad waarvan er aanvankelijk enkelen en later steeds meer dood worden gevonden in de huizen en op straat. De hele stad gaat in quarantaine, de poorten worden gesloten en bewaakt. De inwoners raken geheel afgescheiden van de wereld om hen heen. Ze zien de zee, waarin ze zo graag, dokter Rieux voorop, gaan zwemmen, maar kunnen er niet meer bij komen. Het lijden is verschrikkelijk en dokter Rieux staat, met zijn vrienden en collega's, volkomen machteloos. We zien hoe verschillend de mensen met de pest omgaan. Velen leven als zombies en proberen de werkelijkheid niet tot zich te laten doordringen. Pater Paneloux waarschuwt de gelovigen dat de pest een straf van God is. Jean Tarrou, Rieux' beste vriend, vraagt waarom de dokter zijn strijd koppig blijft volhouden, ook al koestert hij geen hoop op een goede afloop. Rieux lijkt zijn lot en het lot van zijn medemensen te aanvaarden, zelfs te omarmen. Zo onverwacht als de pest kwam, zo onverwacht verdwijnt hij ook weer. Het eerste teken vormt de terugkeer van de ratten die opeens weer gesignaleerd worden. De dagelijkse dodenlijsten worden korter, de stad herleeft, de poorten gaan weer open, de lockdown wordt opgeheven. 

Psalm 73 is mijn lievelingspsalm, en ik bevind me in zeer goed gezelschap. Niemand minder dan de Joodse filosoof en theoloog Martin Buber beschouwde deze psalm als een hoogtepunt. Je kunt de psalm lezen als een samenvatting van het hele Oude Testament: van aanklacht tot bezinning tot vertrouwen. In psalm 73 wordt de absurde werkelijkheid gevormd door de voorspoed van de ploerten en de schenders en de pijn van de dichter die aan het woord is. Dat kan toch niet kloppen? Als we Gods wegen gaan, dan zouden we volgens psalm 1 toch een boom geplant aan levend water worden? En kijk eens om je heen, iedereen gaat zijn goddeloze gang, viert feest, bekommert zich niet om corona, deltavariant of anderhalve meter, terwijl wij ons netjes aan de regels houden, tweemaal gevaccineerd, onze mondkapjes blijven gebruiken en intussen verbijsterd de besmettingscijfers en donkerrode kleurcode van ons land op de kaart van Europa volgen. De dichter is verbijsterd over de absurditeit van het leven, net als dokter Rieux in De Pest.

Hoe kijken we zelf tegen de pandemie en het lijden van de mensheid aan? Winden wij ons ook zo op over de groeiende macht van de ploerten en de schenders in deze wereld, over de achteloosheid waarmee mensen de coronaregels schenden, over al die mensen die zich schijnbaar niet bewust zijn, niet bewust willen worden van de gevaren die ons en onze planeet bedreigen? Zien wij ook de absurditeit van onze vergeefse zoeken naar zin en betekenis en het zwijgen van het universum? Rollen wij ook elke dag opnieuw de steen de berg op?
<tblauw>woensdag 2021, regen trekt weg, 7°</tblauw>"""<br> 
{{0407 Sportief: Roeien||cl}} 
{{0407 Klussen: Boodschappen||cl}}
{{0407 Klussen: Bakken naar boven||cl}}
{{0407 Klussen: Omvormer ophalen||cl}}
{{0407 Bestuur: Overleg Mechanische Ventilatie||cl}}
{{0407 Klussen: TW||cl}}
{{0407 Klussen: Ger halen||cl}}
{{0407 Sociaal: Ger eten||cl}} 
{{0407 Docent: Camus||cl}} 

11:23 Geroeid, boodschappen gedaan, aan TW gewerkt. Nu Stukje opnemen.

<tblauw>zaterdag 2021, °</tblauw>
<tblauw>dinsdag 2021, buien, geleidelijk droog en zonnige perioden, 5°</tblauw> 

|customTable|k
|^ <$checkbox field='212950' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='213037' checked=1></$checkbox>|<<bes "[[Jaargesprek Mirjam]]">>|

|^07:25|Nu roeien|
|^21:40|Nu nog de datumprikker van Oberon|

<tblauw>vrijdag 2022, regen en zon, 6°</tblauw> 

|customTable|k
|^ <$checkbox field='123737' checked=1></$checkbox>|<<spo "roeien">>|
|^ <$checkbox field='123747' checked=1></$checkbox>|<<klu "kerstboom afvoeren">>|
|^ <$checkbox field='123813' checked=1></$checkbox>|<<klu "boodschappen">>|

|^12:39|Nu even klok en datum bijwerken: zo maken dat de cursor achter de tijd of de datum gaat staan. Nagaan hoe dat loopt bij rmh. Die even openen.|
|^12:51|Dit blijkt veel ingewikkelder. Moet nu lezen|
|^13:05|Toch gelukt: 07-01-22 13:06 |
<tblauw>woensdag 2021, wolken en zon, 21°</tblauw>
<tblauw>maandag 2021, zomerdag in Egmond, 18 - 24°</tblauw>

|<$checkbox field='0' checked=1></$checkbox>|Franca: boekje maken|
|<$checkbox field='a' checked=1></$checkbox>|SVAN: Tekst verslag|
|<$checkbox field='b' checked=1></$checkbox>|Casa Crocetti|
|^<$checkbox field='d' checked=1></$checkbox>|Routebeschrijving naar Bart-Jan|
|^<$checkbox field='e' checked=1></$checkbox>|Zwemmen|
|^<$checkbox field='f' checked=1></$checkbox>|Koffie met Karen en Chrétien|
|^<$checkbox field='g' checked=1></$checkbox>|Planken|
|^<$checkbox field='a' checked=1></$checkbox>|TiddlyWiki: checkbox en rij met tijdstip|

|^08:10|Wat mooi! De cursor op de goede plaats. Dit gaat een prachtige dag worden!|
|^08:13|Nu aankleden|
|^09:12|Naar Zilverzand om te zwemmen met Karen en Chrétien|
|^<<now '0hh:0mm'>>|We gaan|
|^15:56|OK, dit moet het zijn. We stoppen|
|^15:57|Nu Franca|
|^15:58|Dit gaat prima|
|^16:02|Foto's van Franca downloaden. Kost een uur.|
|^16:11|Dan intussen het verslag marginaal checken.|
|^16:26|Niet gevonden, schrappen|
|^16:27|Routebeschrijving naar Bart-Jan. Hoe doen we dat. Beschrijving vanuit Alkmaar. Eerst kaartje maken. Met aandachtspunten. Dan punten uitschrijven. |
|^17:24|Dit is goed! Het probleem is opgelost!!|
|^17:25|Nog steeds goed?|
|^17:27|OK, even starten met foto's toevoegen|
|^17:40|Aiai, de volgorde moet nog worden aangepast...|
|^18:05|Dit is wel super. |
|^19:03|Nu afwassen en haren knippen|
|^19:50|Nu even Casa Crocetti|

|^|^|Verslag Comenius|
|^|^|Ramen lappen SiteDish|
|^|^|SVAN|
|^ ✔|^09:15|Klussen: Naar Harry|
|^ ✔|^10:39|Sportief: Lopen met Harry|
|^ ✔|^07:09|Sportief: Roeien|
|^ ✔|^13:00|Klussen: Boodschappen|
|^ ✔|^15:00|Lezen: Radetzkymars|
|^ ✔|^17:00|Klussen: Ger halen|
|^ ✔|^18:09|Sociaal: Ger eten|
<tblauw>donderdag 2021, droog en zonnig, 16°</tblauw>

Vandaag op Ada en Els passen. Er komt bij Sara en Toon een derde bij!

|^14:42|Nu even de poepluier van Ada opruimen|
<tblauw>dinsdag 2021, wisselend bewolkt, 25°</tblauw>

|^07:42|Vandaag naar Ascoli Piceno|
|^13:41|Warmer dan gisteren, na de siësta naar A.P.|
De maan als samengeklonterd aards puin, na een botsing met een planeet. Nieuwe definitie van kosmologisch bewustzijn: het besef dat alles wat je nabij is in verbinding staat met iets veraf, dat het bekende door het onbekende in beweging wordt gezet.
Humor is voor de kerk van levensbelang. Uiteraard kan een afgerond ideologisch systeem dat op alle vragen een pasklaar antwoord biedt met humor niets beginnen. Ratzinger verweet de relativisten dat ze alles om het even vonden.

Uit //Lumen Gentium//: “Christengelovigen zijn zij die, door het doopsel in Christus ingelijfd, tot volk van God gemaakt, en aldus aan de priesterlijke, profetische en koninklijke taak van Christus op hun wijze deelachtig, ieder volgens zijn eigen plaats, geroepen worden de zending uit te voeren die God aan de Kerk ter vervulling in de wereld toevertrouwd heeft.” Hier gaat het duidelijk om één kerk, de katholieke, exacter uitgedrukt de rooms-katholieke, zij die wordt geleid door de paus. Toch blijft er een sprankeltje hoop voor andere christelijke kerken. De formulering is immers: “<geel> Deze Kerk (…) bestaat in de katholieke kerk.” In het Latijn: subsistit in. Niet meteen duidelijk is of deze kerk uitsluitend in de katholieke kerk bestaat, of eventueel ook in andere christelijke kerken. </geel> Kan de katholieke kerk accepteren dat de kerk van Christus zich ook in andere christelijke kerken manifesteert, wat het waarheidsmonopolie van de katholieke kerk mogelijk in het gedrang brengt? Ratzinger: De ‘kerk van Christus’ valt volledig samen met de katholieke kerk, luidde het verdict. Een zeer strikt, absoluut waarheidsbegrip dat de katholieke kerk als instituut blijft hanteren. Een stap verder: de pauselijke onfeilbaarheid als een remedie tegen intellectueel en ethisch relativisme beschouwen. 

Voor een katholiek leidt dit tot een vreemd type van oecumenische of interreligieuze dialoog. Het is per definitie een gesprek met een partner die ten onrechte meent de waarheid te spreken. Die het goed bedoelt maar zich vergist. Kan zo’n gesprek een echte dialoog worden genoemd? De katholiek blijft hoffelijk en beleefd, maar het is en blijft een conversatie met iemand die zich vergist. “Het geloof in Christus, de kerk en het primaatschap van de paus horen bij elkaar in een geheiligde samenhang.” Het is geen toeval dat de onfeilbaarheid, wanneer de paus ex cathedra spreekt over geloof of zeden, er als dogma pas kwam tijdens het Eerste Vaticaans Concilie in 1870, toen hij door de eenmaking van Italië de Pauselijke Staten en dus zijn wereldlijke macht verloor. <geel> De kerk verdient het niet opgesloten te worden in de absolute waarheid. </geel> 

De paus en de kerk zijn relatief, Jezus Christus allerminst. Humor belaagt de waarheid niet maar beschermt haar. Op drie manieren. (1) Humor drukt een gedachte scherper en kernachtiger uit. (2) Verder maakt humor het mogelijk om het onzegbare met woorden te benaderen. (3) Tot slot zorgt hij ervoor dat het dagelijkse leven in de kerk aangenamer wordt.

Ad (1). Zie cartoons. Juist door het karikaturale te beklemtonen, wordt de essentie, die minder uitgesproken en minder hilarisch is, helemaal duidelijk. Ad (2). Wanneer spreken haast onmogelijk wordt, wanneer woorden om dat op een logische en coherente manier te doen geleidelijk ontbreken, is humor het laatste wat overblijft vooraleer enkel stilte rest. Humor als brug tussen het zegbare en het onzegbare. Kees Fens: “Ik geloof dat humor de confrontatie met het uiterste aan ernst niet uit de weg kan gaan. Juist waar de grens van de ernst bereikt wordt en woorden – ernstige woorden – tekort gaan schieten, is daar de humor om niet voor de grens van het zegbare halt te moeten houden.” Denk bijvoorbeeld aan het gedicht //Paradijs// van Gerard Reve:
<p>
“Ik was een heel erg grote beer die toch heel lief was. <br>
God was een Ezel en hield veel van mij. <br>
En iedereen was erg gelukkig.” <p>
Ad (3). De derde betekenis van humor is praktisch van aard. <geel> Humor helpt om menselijk en barmhartig te blijven. </geel> Hij ontmijnt situaties die uitzichtloos lijken, omdat hij mensen gezichtsverlies bespaart. Soms biedt hij een uitweg wanneer er zuiver rationeel geen oplossingen meer voorhanden zijn. Humor bedreigt nooit de waarheid, enkel het rotsvaste geloof in het eigen gelijk. Er bestaat natuurlijk humor zonder religie. <geel> Maar zonder humor is religie onmogelijk. </geel> 
"""
Graf te Blauwhuis
voor buurvrouw H. te G.

Hij rende weg, maar ontkwam niet,
en werd getroffen, en stierf, achttien jaar oud.
Een strijdbaar opschrift roept van alles,
maar uit een bruin geëmailleerd portret
kijkt een bedrukt en stil gezicht.
Een kind nog. Dag lieve jongen.

Gij, die koning zijt, dit en dat, wat niet al,
ja ja, kom er eens om,

Gij weet waarom het is, ik niet.
Dat Koninkrijk van U, weet U wel, wordt dat nog wat?


Gerard Reve (1923-2006)
Uit: Nader tot u
<tblauw>donderdag 2021, minder boos, zon 8°</tblauw>"""<br> 
{{0408 Klussen: Kinderen halen||cl}} 
{{0408 Sociaal: op Ada en Els passen||cl}} 
{{0408 Klussen: Bureau opruimen||cl}} 
{{0408 Klussen: Zilverzand ophalen||cl}}
{{0408 Sociaal: maaltijd bij Choux ophalen||cl}}
<tblauw>zondag 2021, regen en af en toe zon, 20°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Studeren: Heijne|
|^<$checkbox field='b' checked=1></$checkbox>|Lezen: Argus|
|^<$checkbox field='c' checked=1></$checkbox>|Klussen: TiddlyWiki|
|^<$checkbox field='d' checked=1></$checkbox>|Klussen: Foto's opbergen|
|^<$checkbox field='e' checked=1></$checkbox>|Reflectie: Dagboek|
|^<$checkbox field='f' checked=1></$checkbox>|Sportief: Roeien|

|^11:19|hoe maak je een tag bestaande uit twee woorden? Zo: `tags=<<now "[[MMM YYYY]]">>`|
|^11:37|Nu verder met Heijne: 19 en 20 tot 12:30|
|^12:09|21 en 22 tot 13 uur|
|^19:40|HelloThere bestuderen|
|^19:49|Gelukt. Is het mogelijk om vanavond drie dingen te doen?|
|^20:48|Deze Zomergast is een voorbeeld van iemand die haar eigen universum creëert|
|^20:55|Drie dingen:<br>1. Drie artikelen uit Argus<br>2. Foto's uit telefoon halen<br>3. Dagboek|
|^21:52|OK, Artikelen gelezen, foto's opgehaald. Nu dagboek.|
<tblauw>woensdag 2021, °</tblauw> 

|customTable|k
|^ <$checkbox field='93149' checked=1></$checkbox>|<<adv "Judith voorbereiden">>|
|^ <$checkbox field='93202' checked=1></$checkbox>|<<adv "Overleg Judith">>|
|^ <$checkbox field='93214' checked=1></$checkbox>|<<bes "Stukken Iris downloaden">>|
|^ <$checkbox field='93237' checked=1></$checkbox>|<<bes "[[Promotie Iris Pauw]] voorbereiden">>|
|^ <$checkbox field='93251' checked=1></$checkbox>|<<doc "mail Denise beantwoorden">>|
|^ <$checkbox field='93309' checked=1></$checkbox>|<<soc "Op Mercia en Franca passen">>|
|^ <$checkbox field='93325' checked=1></$checkbox>|<<bes "contact team">>|
|^ <$checkbox field='193046' checked=1></$checkbox>|<<bes "zoom bestuur en team">>|
|^ <$checkbox field='193106' checked=1></$checkbox>|<<adv "data Oberon">>|
|^ <$checkbox field='0853' checked=1></$checkbox>|<<soc "borrel Caroline en Kier">>|

|^09:33|Nu koffie en stukken Iris downloaden|
|^19:31|Nu agenda Oberon|
<tblauw>zaterdag 2022, veel regen, 4°</tblauw> 

|customTable|k
|^ <$checkbox field='232839' checked=1></$checkbox>|<<spo "Roeien">>|
|^ <$checkbox field='232502' checked=1></$checkbox>|<<lez "De Kom">>|
|^ <$checkbox field='232524' checked=1></$checkbox>|<<soc "Leesclub">>|

|^23:25|Dit is ook reflectie. Vanavond leesclub bij D&E. Over het boek van Anton de Kom, Wij Slaven van Suriname. Ik verwachtte en confrontatie tussen Dirk en Kathleen. Die kwam er ook, maar het liep toch redelijk goed. Hoop ik...|
<tblauw>donderdag 2021, rustig en meestal droog, 21 - 24°</tblauw>

|^09:31|Nu beginnen met module 4. Proberen om 11 uur af te hebben. Eerst 41 en 42 vullen|
|^09:38|Nu beginnen met Femke Dijkstra|
|^09:53|Gehannes met Xodo. Nu verder met Cindy Hulsman|
|^10:00|Dat gaat al beter. Nu de volgende: Daury Jansen|
|^10:11|We worden steeds handiger. Nu Olga Potters|
|^10:25|Verder met Bilge Gencoglu|
|^10:30|Nu de laatste: Anja Schoots|
|^10:38|Dat is klaar. Nu verder met de drie samenvattingen. Eerst Potters en Dijkstra|
|^10:58|Dat is één. Nu Cindy Hulsman en Daury Jansen|
|^11:50|De laatste: Bilge Gencoglu en Anja Schoots|
|^12:10|OK klaar. 2,5 uur! Teveel. Nu band plakken en boodschappen doen, en lunchen|
|^14:09|We gaan verder met module 5. De opdrachten staan er. We beginnen met Femke Dijkstra|
|^14:18|Volgende patiënt: Cindy Hulsman|
|^14:26|Heel mooi, 8 minuten. Nu Daury Jansen|
|^14:36|Kan iets sneller. Nu Olga Potters|
|^14:49|Heel netjes, 7 minuten. Nu de laatste: Bilge Gencoglu|
|^15:03|OK. Nu de drie stukken van opdracht 5.2|
|^15:37|OK, Nu Schoots en Jansen|
|^15:53|OK, dat is beter. Nu Bilge Gencoglu en Olga Potters|
|^16:13|OK, we beginnen met module 6. Eerst maar weer Femke Dijkstra|
|^16:22|Nu nr. 2: Cindy Hulsman|
|^16:31|Nu nr. 3: Daury Jansen|
|^16:43|Nu nr. 4: Olga Potters|
|^16:49|Nu nr. 5: Bilge Gencoglu|
|^16:57|Nu nr. 6: Anja Schoots|
|^17:10|Assignments 6.1 zijn klaar. Nu nog even de eerste van de drie 6.2 assignments lezen. |
|^17:19|Nu Ger halen|
|^17:58|Nog even tweede assignment lezen|
|^20:51|Verder met tweede assignment|
|^21:05|Nu derde assignment lezen|
|^21:15|Nu eerste assignment beoordelen: Bilge Gencoglu en Daury Jansen|
|^21:36|Nu nr 2: Dijkstra en Schoots|
|^21:53|Nu nr 3: Hulsman en Potters|
|^22:06|Nu stoppen. Nog één module! En alles versturen naar de zes studenten.|
<tblauw>dinsdag 2021, prachtige dag in Egmond, 18 - 24°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Fotoboek Franca|
|^<$checkbox field='b' checked=1></$checkbox>|Bart-Jan|
|^<$checkbox field='c' checked=1></$checkbox>|SVAN|
|^<$checkbox field='d' checked=1></$checkbox>|Casa Crocetti|
|^<$checkbox field='e' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='f' checked=1></$checkbox>|Lopen en zwemmen|
|^<$checkbox field='g' checked=1></$checkbox>|Nog een keer lopen langs het strand|



|^00:42|Nu slapen|
|^07:31|Nu aankleden en naar het strand|
|^07:36|OK, niet meer aan TiddlyWiki prutsen|
|^09:43|Ontbijten|
|^12:13|Nu Franca afmaken|
|^12:24|Problemen met de Albelli website. Proberen op de Acer|
|^14:30|Nu even lezen en een nap|
|^16:13|Nu lopen langs het strand|
|^20:58|Nu Casa Crocetti: Handtekening op het contract zien te krijgen. Daarvoor PDF Studio installeren. OK, klaar. Nu contract versturen, in de mail vragen hoe met COVID om te gaan, en aanbetaling doen.|
<tblauw>zaterdag 2021, overgang naar mooi weer, veel regen, 14°</tblauw>


|^ ✔|^07:21 |Sportief: Roeien|
|^|^08:02 |Aankleden en Ontbijten|
|^&#x2714;|^10:00 |Klussen: naar Egmond|
|^&#x2714;|^11:00|Sociaal: Cathrien en Jochem|
|^&#x2714;|^14:22 |Adviseur: Edurev|
|^ ✔|^14:27 |Adviseur: Edurev|
|^ ✔|^16:30|Sociaal: D&E|

<tblauw>maandag 2021, wolken, wat regen, 12°</tblauw>

|^10:27|Even terug naar dit prachtige systeem. Toch ook wel heel praktisch. Even tanden poetsen. Dan de synopsis. Als je hier niet afgeleid wordt, dan is dit toch het meest efficiënt.|
|^10:39|Goed, nu de synopsis in elkaar steken. Dat kan wel even op papier. Daarna review afmaken. |
|^11:10|Nu uittypen, waar: Een word bestand dat je mee kunt sturen met een mail. In Noteshelf zetten via pdf|
|^11:56|OK, gedaan. Nu review afmaken. Nog een keer tekst lezen en aantekeningen bijschrijven.|
|^12:00|Hoe gaan we verder met de opslag van Noteshelf? Ik dacht een backup in Pcloud: Noteshelf en dan de submappen zoals in noteshelf. Met de hand. Eventueel bestanden wissen op de tablet die in het archief blijven staan. Regelmatig verversen. Automatische back afzetten, die werkt niet. |
|^15:35|OK, Noteshelf is dus niet meer dan de bureaublad. Opruimen betekent als pdf opbergen in één van de bestaande mappen in Pcloud. |
|^15:56|OK, dat probleem is opgelost. |
|^17:38|Even een dagboekfragment.|
|^20:54|Hebben we problemen met het toetsenbord? Nee!|
<tblauw>vrijdag 2021, mist, later zon, 15 - 18°</tblauw>

|^06:53|Zo dadelijk roeien|
|^08:52|Geroeid, nu aankleden en ontbijten|
|^13:37|Nu lunchen en twee stukken in de krant lezen|
|^15:28|Zo ontzettend moeilijk is het leven.|
|^15:30|Hoe ga je verder als er geen richting is. Niet met sudoku, zoveel is zeker. 1. Constateren dat er geen richting is. Dat is niet erg, maar je moet het wel even vaststellen. Het is bijna net zo onhandig als meegesleurd worden door iets wat je niet wilt. |
|^16:33|Nu gedurende 15 minuten werken aan Cobex. Bestaande uitspraken lezen en van commentaar voorzien. In LibreOffice|
|^17:04|OK, goed gedaan. Nu even een half uur hier weg. Tolstoj lezen.|
|^19:15|Vijf zaken van bureau.|
|^19:21|Drie bladzijden Sui lezen.|
|^19:31|Nog een keer drie bladzijden. Tot nu toe niet echt onderscheidend...|
|^19:41|Nog 3, maakt samen 10|
<tblauw>woensdag 2021, iets meer wolken, maar bladstil, 24°</tblauw>

|^07:38|Vanochtend een wandeling bij Sarnano. Misschien dezelfde als op [[maandag 9 september 2019]]|
|^16:11|Het was een andere wandeling. Niet zo mooi, teveel asfalt. Wel mooi uitzicht over de bergen. Nu dagboek en Cobex.|
Vele diepreligieuze mensen zien hun geloof gesterkt door de schoonheid die ze vinden in kunst of natuur. Daar ontwaren ze een glimp van God, of menen die te zien, of alvast iets transcendents dat hen dieper raakt dan ze ooit dachten. Schoonheid als een weg naar het absolute. Voor Malraux delen kunst en religie de behoefte een andere en betere wereld te scheppen, flexibeler weliswaar dan die van de godsdiensten met hun hunkering naar een eeuwige waarheid, “une Vérité finale”, terwijl de kunst minder star, buigzamer is. Het scheppen van een betere wereld. Kunstenaars verbeelden de werkelijkheid niet, ze zijn niet gebonden aan de werkelijkheid, ze scheppen iets nieuws. 

Mannequins op de catwalk glimlachen niet, ze kijken nors. Gevolg van de emancipatie: vrouwen zijn niet langer een vrolijk modepopje, maar bevrijd en sterk. <geel> JPII vond vrouwen te nobel voor het priesterambt. In die zin lijkt de paus op de moderne modebazen. De nieuwverworven sterkte beperkt de vrouw. Beide visies zijn dogmatisch. </geel> Geen ruimte voor discussie bij het scheppen van een betere wereld. Los van de wereld wordt het systeem minder vrij en dogmatischer. Als de kunst weer wordt verbonden met de werkelijkheid doet de schoonheid haar intrede weer. Schoonheid is ongrijpbaar, heeft een religieuze dimensie. Schoonheid is een metgezel van de kerk. <geel> In die zin is schoonheid, net zoals humor, vaak aanwezig op het moeilijk betreedbare terrein tussen wat zegbaar en wat onzegbaar is. </geel> Mensen genieten van de Mattheüs, ook als ze niet gelovig zijn. Kan religieuze muziek volledig van haar religieuze dimensie worden ontdaan? Kijk naar de Sixtijnse Madonna van Raphaël.

<<ximg width:50% "/Cultuur/Raffaello Madonna Sistina.jpg">>

De putti onderaan zijn veel beroemder geworden dan het schilderij zelf. Is de religieuze dimensie verloren gegaan? <geel> Of blijven de schoonheid en de emotie van de putti verwijzen naar iets religieus, naar het transcendente? </geel> Humor, denk aan het gedicht van Gerard Reve in het vorige hoofdstuk. Ze laten een glimp zien van het paradijs, maar dan een beetje ridicuul. Het paradijs, waar grote concepten wijken voor bescheiden schoonheid. Wanneer de oorspronkelijke religieuze betekenis het kunstwerk lijkt te verlaten en het louter een voorwerp van schoonheid dreigt te worden, sluipt een nieuwe, tot dan toe gedeeltelijk verborgen gebleven, religieuze betekenis weer naar binnen. Een minder dogmatische, maar een vrijere. Een minder onderbouwde, maar een meer transcendente.

De eeuwige schoonheid van de colonnade van Bernini als decor van de rumoerige uitvaart van JPII ("subito santo"). Ook als de oorspronkelijke theologische betekenis van het kunstwerk verflauwt of verdwijnt, blijft meer over dan puur esthetisch genot. <geel> Vaak gaat achter de oorspronkelijke theologische gedachte een andere laag schuil, die van de transcendentie, van het alles overstijgende en het onzegbare. </geel> Het ware kunstwerk vindt zichzelf heruit, niet ondanks zijn oorspronkelijke religieuze inspiratie maar omdat het zelf door en door religieus is en niet afhankelijk van één, duidelijk afgelijnde theologische inspiratiebron.

Denk aan de tekst in Mattheüs 6:25-29 over de vogelen des hemels in al hun schoonheid. De tekst is een ode aan de schoonheid, maar ook een pleidooi voor een zekere zorgeloosheid, voor de moed om vrij te zijn bij het genot van wat mooi is. De zorgeloosheid uit het Matteüsevangelie vloeit voort uit vertrouwen, ze geeft energie en leidt niet tot een leeg leven. Zorgeloosheid, zoals die van de vogels in de lucht en de leliën op het veld, helpt mensen om echt vrij te zijn, niet gekooid en niet gebonden. Want de schijnbaar veilige kooi biedt geen bescherming, ondanks de schijn die ze wekt. Onzekerheid is belangrijker dan zekerheid. Voor wetenschappelijke data en het dagelijks functioneren van ons leven niet. Maar voor schoonheid en religie, voor de religieuze dimensie van schoonheid en het esthetische aspect van religie wel. Bovendien is die onzekerheid niet erg. Schoonheid helpt, zoals bij Kierkegaard, om vertrouwen te putten. Om te geloven in wat je niet langer zeker weet en zich niet altijd aandient wanneer je het zou willen. Zie ook het verhaal van de verheerlijking op de berg. Petrus wil tenten bouwen en het wonder vasthouden, maar dat kan niet. 
"Feiten zijn alleen interessant als ruimte scheppen voor de verbeelding". De maan als bron van grondstoffen, als plaats waar radiostraling uit het heelal veel zuiverder gemeten kan worden. Ruimtetoerisme. Ruimterecht. We moeten de maan niet uit handen geven aan het grootkapitaal. 
Na deze hartverscheurende klacht van Gerard Reve duiken we wat dieper in psalm 73 en in de roman De Pest van Albert Camus.We pakken de kern uit psalm 73 en laten daarmee veel liggen. Het gaat om de volgende regels:

"""
Vaak genoeg dacht ik:
doe als die anderen.
Maar dan zou ik
breken met U,
en het geloof van mijn
vader verloochenen.
Zo werd ik heen
en weer geslingerd,
gekweld, wanhopig
en zonder uitzicht.

Totdat ik rust vond
in uw mysterie
en leerde zien
vanuit uw toekomst:
heel hun bestaan
is op drijfzand gebouwd,
het valt in puin,
ze worden in een
oogwenk vernietigd -
een boze droom
zo vaagt Gij hen weg
uit de wereld der mensen.

Ik was verbitterd
en opstandig,
ik was gewond
tot in mijn ziel.

Ik was als een redeloos
dier bij U.

Bij U, ik ben
altijd bij U.
Gij houdt mij vast,
uw hand in mijn hand.
"""

De woorden zijn ontroerend, ze raken direct je hart. Daarom voel ik me beschroomd om er iets over te zeggen, om te gaan analyseren. Toch doe ik een poging. Het gaat om de zin "Totdat ik rust vond in uw mysterie en leerde zien vanuit uw toekomst". Wat wordt hier bedoeld? In de oorspronkelijke tekst staat het woord "heiligdom", of eigenlijk "heiligdommen", meervoud. Dat klinkt als kerk, misschien zelfs als de tempel in Jeruzalem. Daar moeten we heen, zoals veel bijbeluitleggers ons verzekeren. De kerk als plaats van bezinning, inkeer, samen met anderen in de gemeente van Christus. Oosterhuis en Van der Plas kiezen in hun vertaling van psalm 73, die we gelezen hebben, voor het woord “mysterie”, een plaats waar je oog in oog kunt komen met God, een plaats waar je het licht kunt zien, zoals Huub Oosterhuis verwoordt in zijn vrije versie van Psalm 73:

"""
"Toen, plotseling, werd het licht
en zag ik hun einde, hun niets,
hoe ze verdampen in leegte."
"""

In De Pest beschrijft Camus ook een zo'n moment van inzicht, van ommekeer. En wel bij pater Paneloux, in de roman de vertegenwoordiger bij uitstek van de kerk. 

Na  het uitbreken van de pest houdt pater Paneloux een ziedende preek waarin hij de bevende gelovigen voorhoudt dat de pest een straf van God is voor het bandeloze leven dat zij leiden. En dat God nog steeds bezig is de schapen van de bokken te scheiden. De engel van de dood zwaait met zijn enorme zeis boven de stad en treft allen die zich niet bekeren. Dit beeld is niet zo vergezocht. Het lijkt sterk op het verhaal over de zesde van de tien plagen die de farao van Egypte treffen omdat hij het volk Israël niet wil laten gaan: al het vee van de Egyptenaren wordt door de pest getroffen terwijl het vee van de Israëlieten gezond blijft. De woorden van pater Paneloux missen hun uitwerking niet. Dodelijk bevreesd verlaten de gelovigen de kerk. 

Een tijd later zijn we getuige van het sterfbed en de dood van de jonge zoon van rechter Othon, Philippe. Het lijden is verschrikkelijk, ook omdat het zo lang duurt. Philippe is als eerste ingeënt met een experimenteel serum. Maar het serum lijkt maar gedeeltelijk te werken waardoor het lijden enorm wordt verlengd. Iedereen is verbijsterd, inclusief dokter Rieux en pater Paneloux. Deze scène is ongetwijfeld de emotionele kern van het boek. We lezen: 

"Paneloux liet zich op zijn knieën zakken en niemand vond het vreemd hem te horen zeggen, met een wat verstikte stem, maar duidelijk verstaanbaar ondanks de anonieme jammerklacht, die een eeuwigheid leek te duren: ‘Mijn God, red dit kind.’"

Na het sterven van Philippe Othon spreken Rieux en Paneloux. Rieux is geëmotioneerd. Er staat: 

"Nog steeds even driftig draaide Rieux zich om en gooide hem vierkant voor de voeten: ‘Paneloux, dit kind was in elk geval onschuldig! Dat weet u even goed als ik!’ ... Dan zegt Paneloux: ‘Weet u, dokter,’ [...] ‘ik heb zojuist begrepen wat ik onder genade moet verstaan.' Maar Rieux had zich weer achterover laten zakken op het bankje. Hij overwon zijn teruggekomen vermoeidheid en antwoordde, wat vriendelijker: ‘Ik niet, ik weet het. Maar ik wil daar niet met u over discussiëren. We werken samen aan een gemeenschappelijke taak die godslasteringen en gebeden te boven gaat. Dat is het enige wat telt.’"

Dan zijn we in het boek getuige van de tweede preek van Paneloux, die heel anders klinkt dan de eerste. Paneloux stelt dat we uit de situatie lering moeten trekken en niet moeten proberen te verklaren wat er gebeurt. Sommige dingen zijn te verklaren voor Gods aangezicht en andere niet. De hellevaart van een donjuan is te verklaren maar het lijden en de dood van een kind niet. De pest leert ons dit: we moeten kiezen tussen het Niets of het Alles, de totale aanvaarding van de verbijsterende werkelijkheid. Aanvaarding van dit lot betekent niet banale berusting of fatalisme. Rieux schrijft op uit Paneloux' preek: We dienden ons niet te verzetten tegen de voorzorgsmaatregelen, de weloverwogen orde die een samenleving in de chaos van de plaag probeerde aan te brengen. We moesten niet luisteren naar de moralisten die wilden dat we op de knieën gingen en alle verzet opgaven. Nee, we moesten in beweging komen, we moesten voort door het duister, bijna op de tast, en proberen goed te doen. En verder moesten we blijven waar we waren, ons gewillig verlaten op God, zelfs als er kinderen stierven, en zonder voor onszelf persoonlijk een uitweg te zoeken.

Is er een verband tussen deze passages uit De Pest en psalm 73? Ik zie de verbinding in de ommekeer die het mysterie teweeg brengt. Het mysterie van de dood van Philippe Othon, dat je het inzicht bijbrengt dat je niet moet proberen te verklaren wat er gebeurt, maar dat je de verbijsterende, absurde werkelijkheid moet proberen te aanvaarden om vervolgens in beweging te komen, voort te gaan in het duister, en proberen goed te doen. Zoals in psalm 73 staat: ik leerde zien vanuit uw toekomst. 

Ervaren wij ook zulke momenten van licht, van plotseling inzicht? Kun je zulke momenten opzoeken? Laat je die momenten toe in je leven? Maak je er tijd en ruimte voor? In de stilte van een romaanse abdij temidden van de lavendelvelden in de Provence? Op een strandwandeling met een vriendin? Luisterend het voorspel in Bachs cantate "Gottes Zeit ist die allerbeste Zeit"? Achter je bureau als je zin voor zin aan een tekst werkt? In de Rode Hoed tijdens een dienst van de Ekklesia? 

En hoe zit het intussen met de zin van het leven? Met de absurditeit van ons vruchteloze zoeken in het zwijgende universum? Zwijgt God of is God misschien wel dood? Of schuilt God juist in dat lot, dat ons gegeven is, die beker die voor ons ingeschonken staat?
<tblauw>vrijdag 2021, wolken en zon, 10°</tblauw>"""<br> 
{{0409 Sportief: Roeien||cl}}
{{0409 Klussen: Archiveren||cl}}
{{0409 Docent: Camus cursus 1||cl}}
{{0409 Docent: Camus cursus 2||cl}}
{{0409 Sportief: Lopen||cl}} 
{{0409 Klussen: bakken plaatsen||cl}} 
{{0409 Studeren: Turfs||cl}} 
{{0410 Klussen: Computer Anne||cl}} 
{{0410 Klussen: Afspraak APK||cl}} 

10:46 Wat gaan we nu doen: een paar stukken Camus afluisteren.

<tblauw>maandag 2021, buiige dag, 19 - 21°</tblauw>
<<todolist-ui caption:" " width:"" base:"mijntodos">>

|^<$checkbox field='a' checked=1></$checkbox>|Klussen: naar Ede|
|^<$checkbox field='b' checked=1></$checkbox>|Klussen: Opheffen SVAN|
|^<$checkbox field='c' checked=1></$checkbox>|Studeren: Creativiteit|
|^<$checkbox field='d' checked=1></$checkbox>|Muziek: Piano spelen|
|^<$checkbox field='e' checked=1></$checkbox>|Klussen: Vakantie|
|^<$checkbox field='f' checked=1></$checkbox>|Klussen: Boodschappen|
|^<$checkbox field='g' checked=1></$checkbox>|Lezen: 10% Savoy|
|^<$checkbox field='h' checked=1></$checkbox>|Klussen: Gerrie halen|
|^<$checkbox field='i' checked=1></$checkbox>|Sociaal: Eten met Gerrie|


|^07:01|We gaan weer terug naar het streepjes systeem|
|^07:04|Aankleden|
|^11:33|andere shortcut?|
|^12:03|Geloof niet dat dat mogelijk is|
|^12:33|Wel met Texpand. OK klaar. We gaan in de longstay mode. Bureau opruimen en mails beantwoorden. Daarna studeren.|
|^12:48|OK, 10 blz Dresden. Tot 14 uur geen andere zaken.|
|^15:41|Nu even piano spelen|
|^16:18|OK. Nu even vakantie. Eerst dat plaatsje opzoeken.|
|^17:03|Nog even beginnen met SVAN opheffen. Waar waren we gebleven?|
<tblauw>donderdag 2021, zon wolken regen, 6°</tblauw> 

|customTable|k
<tblauw>zondag 2022, enkele buien, soms zon, 6°</tblauw> 

|customTable|k
|^ <$checkbox field='90634' checked=1></$checkbox>|☀️ <<soc "KoffieZoom">>|
|^ <$checkbox field='90814' checked=1></$checkbox>|📖 <<stu "muziek">>|
|^ <$checkbox field='92223' checked=1></$checkbox>|☀️ <<lez "kranten">>|

|^17:24|Nu aan muziek werken. Wat hadden we? |
<tblauw>vrijdag 2021, zonnige perioden, 20 - 24°</tblauw>

|^06:20|Daar gaat-ie weer. Module 7! Laatste loodjes. We beginnen weer met Femke Dijkstra|
|^06:42|OK. Nr. 2: Cindy Hulsman|
|^06:56|De volgende: Daury Jansen|
|^07:07|Nr 4: Olga Potters|
|^07:14|Nr 5: Bilge Gencoglu|
|^07:20|En dan nu de laatste: Anja Schoots|
|^07:25|OK, en dan nu de laatste drie. Eerst lezen en dan beoordelen.|
|^07:26|Eerst Daury Jansen en Femke Dijkstra|
|^07:32|Nu nummer 2: Cindy Hulsman en Anja Schoots|
|^07:44|OK! De studenten hebben toch echt wel veel opgestoken van de papers en de interviews. Tenminste als alles wat ze hebben opgeschreven ook in hun hoofd beschikbaar blijft. |
|^07:46|Nu het paper van Jansen en Dijkstra beoordelen.|
|^07:58|De tweede: Hulsman en Schoots.|
|^08:07|En dan echt de allerlaatste: Potters en Gencoglu|
|^08:21|OK, we zijn  klaar!! Nu alleen nog de beoordelingen naar de studenten sturen en het materiaal samenvatten en naar Caroline, Björn en Tessa sturen|
|^09:31|Nu de bestanden naar Pcloud versturen|
|^09:52|OK, nu controleren|
|^10:20|OK, nu mapjes voor studenten maken|
|^10:23|Nu Femke Dijkstra vullen|


|^<$checkbox field='a' checked=1></$checkbox>|11|
|^<$checkbox field='b' checked=1></$checkbox>|12|
|^<$checkbox field='c' checked=1></$checkbox>|21|
|^<$checkbox field='d' checked=1></$checkbox>|22|
|^<$checkbox field='e' checked=1></$checkbox>|31|
|^<$checkbox field='f' checked=1></$checkbox>|32|
|^<$checkbox field='g' checked=1></$checkbox>|41|
|^<$checkbox field='h' checked=1></$checkbox>|42|
|^<$checkbox field='i' checked=1></$checkbox>|51|
|^<$checkbox field='j' checked=1></$checkbox>|52|
|^<$checkbox field='k' checked=1></$checkbox>|61|
|^<$checkbox field='l' checked=1></$checkbox>|62|
|^<$checkbox field='m' checked=1></$checkbox>|71|
|^<$checkbox field='n' checked=1></$checkbox>|72|

|^<$checkbox field='o' checked=1></$checkbox>|Femke Dijkstra|f.s.dijkstra@vu.nl|
|^<$checkbox field='p' checked=1></$checkbox>|Cindy Hulsman|c.hulsman@maastrichtuniversity.nl|
|^<$checkbox field='q' checked=1></$checkbox>|Daury Jansen|d.jansen@uva.nl|
|^<$checkbox field='r' checked=1></$checkbox>|Olga Potters|o.t.a.potters@uva.nl|
|^<$checkbox field='s' checked=1></$checkbox>|Bilge Gencoglu|b.gencoglu@rug.nl|
|^<$checkbox field='t' checked=1></$checkbox>|Anja Schoots|a.j.m.schoots@fgga.leidenuniv.nl|

"""
Beste Cindy,

Bijgaand je opdrachten uit de ICO-cursus Recent Developments in Learning and Instruction retour, voorzien van commentaar. Het werk ziet er goed uit! Zo te lezen heb je het nodige opgestoken uit de papers en interviews. Ik hoop dat je plezier hebt beleefd aan de cursus!

Groeten,

Jos Beishuizen


Jos (J.J.) Beishuizen, PhD | Professor em. of Higher Education | Vrije Universiteit Amsterdam | Dept. of Educational Studies | Faculty of Behavioural and Movement Sciences | T +31 20 59 88993 | Van de Boechorststraat 7-9, 1081 BT Amsterdam
<tblauw>woensdag 2021, weer een prachtige dag in Egmond, 22 - 26°</tblauw>

|^<$checkbox field='a' checked=1></$checkbox>|Piano spelen|
|^<$checkbox field='b' checked=1></$checkbox>|Lopen en zwemmen|
|^<$checkbox field='c' checked=1></$checkbox>|Ewald en Margriet|
|^<$checkbox field='d' checked=1></$checkbox>|SVAN|
|^<$checkbox field='e' checked=1></$checkbox>|Sacks: Safe Space|

|^07:26|Nu lopen en zwemmen|
<tblauw>zondag 2021, moet en warme dag worden, wel met onder, >20°</tblauw>

|^|^07:52 |nu even een pomo edurev|
|^&#x2714;|^08:03 |nee, eerst Sportief: Lopen|
|^&#x2714;|^11:00|Klussen: Berend halen en boodschappen|
|^&#x2714;|^21:32 |Sociaal Bezoek Berend|
|^&#x2714;|^10:54 |Adviseur: [[Review EDUREV-D-21-00268]]|
|^&#x2714;|^14:30|Adviseur: [[Review EDUREV-D-21-00268]]|
|^&#x2714;|^1500|Adviseur: [[Review EDUREV-D-21-00268]]|
|^|^16:00|Lezen: Radetzkymars|
|^&#x2714;|^21:02 |Adviseur: [[Review EDUREV-D-21-00268]]|
|^&#x2714;|^21:33 |Studeren: [[Sacks: Moraal]]|
 
<tblauw>dinsdag 2021, grijs, wel droog, 9 - 12°</tblauw>

|^11:17|COBEX is gaande, even pauze?|
|^15:47|Nu verder met Review. Even de laatste fragmenten van 1989 invoeren. |
|^16:22|Eveline belt: zenawi mailen, zenawiz|
<tblauw>zaterdag 2021, veel zon, 15°</tblauw>

|^07:38|Opstaan!|
|^15:15|Wat gaat er mis met deze versie van Ubuntu? Ongeveer alles. Misschien een nieuwe versie van Fedora ophalen. Dat gaf toch minder problemen.|
<tblauw>donderdag 2021, weer een zonnig begin, 21°</tblauw>

|^08:19|Nu aankleden|
|^08:47|Nu ontbijten|
|^10:04|Mail na Loretello|
|^10:18|Mail naar Vicenza|
|^10:24|Mail naar Stokwielder|
|^12:41|Tolstoi uitlezen|
|^18:09|Nu verder met Sherriff|
|^20:40|Nu dagboek en mail aan Livia|
Yolo - you only live once. Ik geloof in de opstanding. De kerk is een van de laatste plekken in onze samenleving waar het verrijzenisgeloof wordt beleden. Reeds als kind vond ik haar geweldig.

<geel> Is de opstanding ook nuttig? Helpt ze mensen vooruit? </geel> Wanneer over het ‘nut’ van de verrijzenis wordt gesproken, zijn algauw de laagste trucs aan de orde om exploitatie van mensen door anderen te vergoelijken. Bijvoorbeeld: gewone mensen die het slachtoffer werden van meedogenloze vorsten of ruige kapitalisten werd aangeraden zich met hun lot te verzoenen in de hoop op een beloning in het hiernamaals. Het ‘nut’ van het hiernamaals bestaat er in deze constructie in om onrechtvaardige structuren in stand te houden. Maar wat ze zeiden, spoorde met de fameuze uitspraak van Karl Marx die godsdienst opium voor het volk noemde. Ik ontken niet dat het hiernamaals wrede cynici af en toe goed uitkwam. Toch is er met deze ‘nutstheorie’ één probleem. Wie ze aanwendt om onderdrukten te sussen, doet dat niet omdat hijzelf gelooft in het hiernamaals, maar juist omdat hij dat niet doet. Deed hij het wel, en hechtte hij in de klassieke zin geloof aan het meedogenloze laatste oordeel, dan zou hij wel uitkijken. Het zou helemaal verkeerd kunnen aflopen. Want andere mensen uitzuigen en vernederen is iets wat de goede God niet fijn vindt. Dat ongeloof delen de kapitalistische uitzuigers met de critici die hen terecht amoreel gedrag aanwrijven. De emotionele voorkeur van de critici gaat naar de onderdrukten. Maar hun ongeloof in de verrijzenis delen ze wel degelijk met de onderdrukkers. Ze onderschrijven de werkbaarheid – hoezeer ze haar moreel ook verwerpen – van een nutstheorie die uitgaat van het vaste geloof dat de verrijzenis niet plaats zal vinden.

Een in mijn ogen veel interessantere vraag is welk ‘nut’ deverrijzenis kan hebben, los van elke legitimatie van onrechtvaardigheid, voor wie er juist wel in gelooft. <geel> De belofte van de verrijzenis bevrijdt de liefde. Maar een christen kan eindeloos, wild en genereus liefhebben, want als de geliefde sterft, zorgt de verrijzenis ervoor dat het afscheid niet definitief is. </geel> Dankzij de verrijzenis is liefde niet langer een onverantwoord risico. Kortom, liefde is op haar best wanneer ze onsterfelijk kan zijn.
Ruimtevaart is niet alleen wetenschap maar ook cultuur, politiek, en levensbeschouwing. 

Welcome to ''Stroll'', a notetaking tool built with the ~TiddlyWiki platform, imitating a number of features of Roam: 

*bi-directional links, 
*autocomplete suggestions for linking, 
*renaming of links upon changing tiddler titles, 
*and side-by-side editing of multiple notes. 

Stroll is a new souped up replacement for our previous project, [[TiddlyBlink|https://giffmex.org/gifts/tiddlyblink.html]]. It is designed for use with a wide screen - probably not ideal for use on a phone or small tablet.

The best way to see what Stroll can do is play with it. This interactive tutorial will give you a hands-on overview.

Use the tabs to the left to take a tour of its features. You can download an empty version of Stroll [ext[here|https://giffmex.org/stroll/empty.html]].
\define NNRoot()
$(currentTiddler)$-Root
\end
\define currentStoryList()
$(currentTiddler)$-StoryList
\end
\define currentHistoryList()
$(currentTiddler)$-HistoryList
\end
\define StateDisplayText()
$(NNViewTiddler)$-DisplayText
\end
\define breadcrumbActions()
<$set name="listToRemove" filter="[list<currentStoryList>allafter<breadcrumbTiddler>]">
<$action-listops $tiddler=<<currentStoryList>> $subfilter="+[remove<listToRemove>]" />
</$set>
\end
\define ViewNNActions()
<$set name="NNRootText" value={{$(currentTiddler)$-Root!!text}} >
<$action-listops $tiddler=<<currentStoryList>> $filter="[enlist<NNRootText>]" />
</$set>
\end
\define NestedNote(path)
<$set name="nn-state" value=<<qualify """nn/state/$(currentTiddler)$""">> >  <!-- nn/state/$path$/$(currentTiddler)$ -->
  <div class="nn-nested">
    <$reveal state=<<nn-state>> type="match" text="closed" default="open" animate="no" retain="no" tag="span" class="nn-reveal-button">
      <$button actions="""<$action-deletetiddler $tiddler=<<nn-state>> />""" class="tc-btn-invisible">{{$:/core/images/right-arrow}}</$button>
    </$reveal>
    <$reveal state=<<nn-state>> type="nomatch" text="closed" default="open" animate="no" retain="no" tag="span" class="nn-reveal-button">
      <$button set=<<nn-state>> setTo="closed" class="tc-btn-invisible">{{$:/core/images/down-arrow}}</$button>
    </$reveal>
    <$set name="titleDisplay" filter="[<currentTiddler>has[titletext]]" value="titletext" emptyValue="title">
      <h3 class="nn-h3"><$link to={{!!title}}><$transclude field=<<titleDisplay>> mode="inline" /></$link></h3>
    </$set>
    <$reveal state=<<nn-state>> type="nomatch" text="closed" default="open" animate="no" retain="no" tag="div" class="nn-reveal">
      <$reveal state=<<StateDisplayText>> type="nomatch" text="no" default="yes" animate="no" retain="no" tag="div">
        <$transclude field="text" mode="inline" />
      </$reveal>
      <$list filter="[list<currentTiddler>]">
        <$macrocall $name="NestedNote" path="$(currentTiddler)$" />  <!-- $path$/$(currentTiddler)$ -->
      </$list>
    </$reveal>
  </div>
</$set>
\end
<!-- ################################################################ -->
<$set name="NNViewTiddler" value=<<currentTiddler>> >
<$checkbox tiddler=<<StateDisplayText>> field="text" checked="yes" unchecked="no" default="yes">Display "text" field content.</$checkbox>
<div class="nn-breadcrumb">
  <div class="nn-breadcrumb-child">
    <$button actions=<<ViewNNActions>> >View</$button>
    <$edit-text tiddler=<<NNRoot>> tag=input />
    <$button set=<<NNRoot>> setTo="" actions="""<$action-setfield $tiddler=<<currentStoryList>> $field="list" $value="">""" class="tc-btn-invisible">{{$:/core/images/close-button}}</$button>
  </div>
  <$list filter="[list<currentStoryList>butlast[]]" variable="breadcrumbTiddler">
    <div class="nn-breadcrumb-child">
      <$button actions=<<breadcrumbActions>> class="buttonLikeLink">
        <$set name="titleDisplay" filter="[<currentTiddler>has[titletext]]" value="titletext" emptyValue="title">
          <$transclude tiddler=<<breadcrumbTiddler>> field=<<titleDisplay>> />
        </$set>
      </$button>
    </div>
  </$list>
</div>
<$navigator story=<<currentStoryList>> history=<<currentHistoryList>> openLinkFromInsideRiver="bottom" openLinkFromOutsideRiver="bottom" relinkOnRename={{$:/config/RelinkOnRename}}>
  <$list filter="[list<currentStoryList>last[1]]" emptyMessage="Choose a tiddler to view it's nested notes." >
    <$set name="titleDisplay" filter="[<currentTiddler>has[titletext]]" value="titletext" emptyValue="title">
      <h2 class="nn-h2"><$link to={{!!title}}><$transclude field=<<titleDisplay>> mode="inline" /></$link></h2>
    </$set>
    <$reveal state=<<StateDisplayText>> type="nomatch" text="no" default="yes" animate="no" retain="no" tag="div">
      <$transclude field="text" mode="inline" />
    </$reveal>
    <$list filter="[list<currentTiddler>]">
      <$macrocall $name="NestedNote" path=<<currentTiddler>> />
    </$list>
  </$list>
</$navigator>
</$set>
yes
[
    {
        "title": "Klussen: abonnement Egmond",
        "fromPageRect": {
            "top": 163.6363525390625,
            "left": 114.97158813476562,
            "width": 214.5596466064453,
            "right": 329.53123474121094,
            "bottom": 179.9999885559082,
            "height": 16.363636016845703
        }
    },
    {
        "title": "Klussen: abonnement Egmond",
        "fromPageRect": {
            "top": 114.00567626953125,
            "left": 84.97158813476562,
            "width": 315.8380432128906,
            "right": 400.80963134765625,
            "bottom": 139.46022033691406,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Klussen: Egmond zoom",
        "fromPageRect": {
            "top": 85.45454406738281,
            "left": 114.97158813476562,
            "width": 163.83522033691406,
            "right": 278.8068084716797,
            "bottom": 101.81818008422852,
            "height": 16.363636016845703
        }
    },
    {
        "title": "Klussen: Egmond zoom",
        "fromPageRect": {
            "top": 17.642044067382812,
            "left": 84.97158813476562,
            "width": 239.77272033691406,
            "right": 324.7443084716797,
            "bottom": 43.096588134765625,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Klussen: Egmond zoom",
        "fromPageRect": {
            "top": 17.642044067382812,
            "left": 84.97158813476562,
            "width": 239.77272033691406,
            "right": 324.7443084716797,
            "bottom": 43.096588134765625,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Klussen: Egmond zoom",
        "fromPageRect": {
            "top": 17.642044067382812,
            "left": 84.97158813476562,
            "width": 239.77272033691406,
            "right": 324.7443084716797,
            "bottom": 43.096588134765625,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Klussen: Egmond zoom",
        "fromPageRect": {
            "top": 248.21022033691406,
            "left": 114.97158813476562,
            "width": 262.4573669433594,
            "right": 377.428955078125,
            "bottom": 264.57385635375977,
            "height": 16.363636016845703
        }
    },
    {
        "title": "Omnibus sidebar tabs uitgeschakeld",
        "fromPageRect": {
            "top": 302.75567626953125,
            "left": 114.97158813476562,
            "width": 452.1022644042969,
            "right": 567.0738525390625,
            "bottom": 337.3011283874512,
            "height": 34.54545211791992
        }
    },
    {
        "title": "Veranderingen in TiddlyTools/Time/AutoSaver",
        "fromPageRect": {
            "top": 357.3011169433594,
            "left": 114.97158813476562,
            "width": 472.13067626953125,
            "right": 587.1022644042969,
            "bottom": 391.8465690612793,
            "height": 34.54545211791992
        }
    },
    {
        "title": "Muziek 2",
        "fromPageRect": {
            "top": 266.4204406738281,
            "left": 114.97158813476562,
            "width": 192.6420440673828,
            "right": 307.61363220214844,
            "bottom": 282.7840766906738,
            "height": 16.363636016845703
        }
    },
    {
        "title": "Klussen: abonnement Egmond",
        "fromPageRect": {
            "top": 292,
            "left": 45,
            "width": 220.3636474609375,
            "right": 265.3636474609375,
            "bottom": 309.45454597473145,
            "height": 17.454545974731445
        }
    },
    {
        "title": "Hoofdstuk 10 - Merleau-Ponty",
        "fromPageRect": {
            "top": 688.8636474609375,
            "left": 45,
            "width": 252,
            "right": 297,
            "bottom": 709.5909214019775,
            "height": 20.72727394104004
        }
    },
    {
        "title": "Klussen: abonnement Egmond",
        "fromPageRect": {
            "top": 224.01136779785156,
            "left": 45,
            "width": 220.3636474609375,
            "right": 265.3636474609375,
            "bottom": 241.465913772583,
            "height": 17.454545974731445
        }
    },
    {
        "title": "Hoofdstuk 11 - Croisés comme ça",
        "fromPageRect": {
            "top": 351.90338134765625,
            "left": 114.97158813476562,
            "width": 263.0823669433594,
            "right": 378.053955078125,
            "bottom": 371.90338134765625,
            "height": 20
        }
    },
    {
        "title": "Turfs: De kerk is fantastisch",
        "fromPageRect": {
            "top": 194.9829559326172,
            "left": 15,
            "width": 298.0965881347656,
            "right": 313.0965881347656,
            "bottom": 221.16477584838867,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Turfs: De kerk is fantastisch",
        "fromPageRect": {
            "top": 194.9829559326172,
            "left": 15,
            "width": 298.0965881347656,
            "right": 313.0965881347656,
            "bottom": 221.16477584838867,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Turfs: De kerk is fantastisch",
        "fromPageRect": {
            "top": 194.9829559326172,
            "left": 15,
            "width": 298.0965881347656,
            "right": 313.0965881347656,
            "bottom": 221.16477584838867,
            "height": 26.181819915771484
        }
    },
    {
        "title": "6. De kerk als hospitaal",
        "fromPageRect": {
            "top": 336.5284118652344,
            "left": 15,
            "width": 183.5341033935547,
            "right": 198.5341033935547,
            "bottom": 353.9829578399658,
            "height": 17.454545974731445
        }
    },
    {
        "title": "6. De kerk als hospitaal",
        "fromPageRect": {
            "top": 208.52841186523438,
            "left": 15,
            "width": 246.89205932617188,
            "right": 261.8920593261719,
            "bottom": 234.71023178100586,
            "height": 26.181819915771484
        }
    },
    {
        "title": "6. De kerk als hospitaal",
        "fromPageRect": {
            "top": 208.52841186523438,
            "left": 15,
            "width": 246.89205932617188,
            "right": 261.8920593261719,
            "bottom": 234.71023178100586,
            "height": 26.181819915771484
        }
    },
    {
        "title": "6. De kerk als hospitaal",
        "fromPageRect": {
            "top": 208.52841186523438,
            "left": 15,
            "width": 246.89205932617188,
            "right": 261.8920593261719,
            "bottom": 234.71023178100586,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Blakewell",
        "fromPageRect": {
            "top": 397.796875,
            "left": 85,
            "width": 258.375,
            "right": 343.375,
            "bottom": 422.796875,
            "height": 25
        }
    },
    {
        "title": "Stelling 1",
        "fromPageRect": {
            "top": 357.328125,
            "left": 145,
            "width": 74.140625,
            "right": 219.140625,
            "bottom": 376.328125,
            "height": 19
        }
    },
    {
        "title": "Stelling 1",
        "fromPageRect": {
            "top": 264.828125,
            "left": 85,
            "width": 95.15625,
            "right": 180.15625,
            "bottom": 289.828125,
            "height": 25
        }
    },
    {
        "title": "Stelling 1",
        "fromPageRect": {
            "top": 264.828125,
            "left": 85,
            "width": 95.15625,
            "right": 180.15625,
            "bottom": 289.828125,
            "height": 25
        }
    },
    {
        "title": "Eerste preek van Paneloux",
        "fromPageRect": {
            "top": 412.515625,
            "left": 145,
            "width": 210.296875,
            "right": 355.296875,
            "bottom": 431.515625,
            "height": 19
        }
    },
    {
        "title": "Stelling 4: Over de vrijheid om te kiezen",
        "fromPageRect": {
            "top": 313.078125,
            "left": 115,
            "width": 313.9375,
            "right": 428.9375,
            "bottom": 332.078125,
            "height": 19
        }
    },
    {
        "title": "Stelling 4: Over de vrijheid om te kiezen",
        "fromPageRect": {
            "top": 207.078125,
            "left": 115,
            "width": 313.9375,
            "right": 428.9375,
            "bottom": 226.078125,
            "height": 19
        }
    },
    {
        "title": "Stelling 4: Over de vrijheid om te kiezen",
        "fromPageRect": {
            "top": 518.40625,
            "left": 85,
            "width": 402.921875,
            "right": 487.921875,
            "bottom": 543.40625,
            "height": 25
        }
    },
    {
        "title": "Stelling 4: Over de vrijheid om te kiezen",
        "fromPageRect": {
            "top": 518.40625,
            "left": 85,
            "width": 402.921875,
            "right": 487.921875,
            "bottom": 543.40625,
            "height": 25
        }
    },
    {
        "title": "Stelling 3: Over de hoop",
        "fromPageRect": {
            "top": 348.953125,
            "left": 115,
            "width": 190.515625,
            "right": 305.515625,
            "bottom": 367.953125,
            "height": 19
        }
    },
    {
        "title": "Stelling 4: Over de vrijheid om te kiezen",
        "fromPageRect": {
            "top": 474.453125,
            "left": 115,
            "width": 313.9375,
            "right": 428.9375,
            "bottom": 493.453125,
            "height": 19
        }
    },
    {
        "title": "Stelling 4: Over de vrijheid om te kiezen",
        "fromPageRect": {
            "top": 264.828125,
            "left": 85,
            "width": 402.921875,
            "right": 487.921875,
            "bottom": 289.828125,
            "height": 25
        }
    },
    {
        "title": "Stelling 3: Over de hoop",
        "fromPageRect": {
            "top": 186.578125,
            "left": 115,
            "width": 190.515625,
            "right": 305.515625,
            "bottom": 205.578125,
            "height": 19
        }
    },
    {
        "title": "Stelling 1: Over God en de pandemie",
        "fromPageRect": {
            "top": 196.5625,
            "left": 115,
            "width": 288.90625,
            "right": 403.90625,
            "bottom": 215.5625,
            "height": 19
        }
    },
    {
        "title": "Camus",
        "fromPageRect": {
            "top": 211.015625,
            "left": 85,
            "width": 68.03125,
            "right": 153.03125,
            "bottom": 236.015625,
            "height": 25
        }
    },
    {
        "title": "Stelling 1: Over God en de pandemie",
        "fromPageRect": {
            "top": 304.828125,
            "left": 115,
            "width": 288.90625,
            "right": 403.90625,
            "bottom": 323.828125,
            "height": 19
        }
    },
    {
        "title": " Stoa",
        "fromPageRect": {
            "top": 511.227294921875,
            "left": 75,
            "width": 36.3636360168457,
            "right": 111.3636360168457,
            "bottom": 531.954568862915,
            "height": 20.72727394104004
        }
    },
    {
        "title": "Gedrag",
        "fromPageRect": {
            "top": 650.921875,
            "left": 115,
            "width": 60.99995422363281,
            "right": 175.9999542236328,
            "bottom": 670.921875,
            "height": 20
        }
    },
    {
        "title": "Menselijke waardigheid/20210423175911239/20210423183057211",
        "fromPageRect": {
            "top": 386.046875,
            "left": 138,
            "width": 484.655029296875,
            "right": 622.655029296875,
            "bottom": 403.046875,
            "height": 17
        }
    },
    {
        "title": "Menselijke waardigheid/20210423175911239/20210423183057211",
        "fromPageRect": {
            "top": 380.421875,
            "left": 85,
            "width": 711.470703125,
            "right": 796.470703125,
            "bottom": 405.421875,
            "height": 25
        }
    },
    {
        "title": "Menselijke waardigheid/20210423175911239/20210423183057211",
        "fromPageRect": {
            "top": 380.421875,
            "left": 85,
            "width": 711.470703125,
            "right": 796.470703125,
            "bottom": 405.421875,
            "height": 25
        }
    },
    {
        "title": "Menselijke waardigheid/20210423175911239/20210423183057211",
        "fromPageRect": {
            "top": 380.421875,
            "left": 85,
            "width": 711.470703125,
            "right": 796.470703125,
            "bottom": 405.421875,
            "height": 25
        }
    },
    {
        "title": "Avond over Camus",
        "fromPageRect": {
            "top": 247.58334350585938,
            "left": 115,
            "width": 157,
            "right": 272,
            "bottom": 267.5833435058594,
            "height": 20
        }
    },
    {
        "title": "Podcast over Camus",
        "fromPageRect": {
            "top": 457.41668701171875,
            "left": 115,
            "width": 167.40625,
            "right": 282.40625,
            "bottom": 477.41668701171875,
            "height": 20
        }
    },
    {
        "title": "8. Overweging 2",
        "fromPageRect": {
            "top": 474.91668701171875,
            "left": 178.64584350585938,
            "width": 130.80209350585938,
            "right": 309.44793701171875,
            "bottom": 494.91668701171875,
            "height": 20
        }
    },
    {
        "title": "3. Lied",
        "fromPageRect": {
            "top": 215.25,
            "left": 145,
            "width": 53.833335876464844,
            "right": 198.83333587646484,
            "bottom": 235.25,
            "height": 20
        }
    },
    {
        "title": "1. Drempellied: Zomaar een dak",
        "fromPageRect": {
            "top": 348.25,
            "left": 145,
            "width": 267.3125,
            "right": 412.3125,
            "bottom": 368.25,
            "height": 20
        }
    },
    {
        "title": "Podcast over Camus",
        "fromPageRect": {
            "top": 318.75,
            "left": 115,
            "width": 167.40625,
            "right": 282.40625,
            "bottom": 338.75,
            "height": 20
        }
    },
    {
        "title": "Menselijke waardigheid/20210423175911239/20210423183057211",
        "fromPageRect": {
            "top": 338.4090881347656,
            "left": 45,
            "width": 325.5852355957031,
            "right": 370.5852355957031,
            "bottom": 400.2272720336914,
            "height": 61.81818389892578
        }
    },
    {
        "title": "Menselijke waardigheid/20210423175911239/20210423183110588",
        "fromPageRect": {
            "top": 382.7727355957031,
            "left": 45,
            "width": 325.5852355957031,
            "right": 370.5852355957031,
            "bottom": 444.5909194946289,
            "height": 61.81818389892578
        }
    },
    {
        "title": "20210503194514717",
        "fromPageRect": {
            "top": 298.18182373046875,
            "left": 45,
            "width": 212.5511474609375,
            "right": 257.5511474609375,
            "bottom": 315.6363697052002,
            "height": 17.454545974731445
        }
    },
    {
        "title": "20210423144058440",
        "fromPageRect": {
            "top": 253.8181915283203,
            "left": 45,
            "width": 297.4090881347656,
            "right": 342.4090881347656,
            "bottom": 293.4545555114746,
            "height": 39.6363639831543
        }
    },
    {
        "title": "20210423144058440",
        "fromPageRect": {
            "top": 174.4091033935547,
            "left": 15,
            "width": 213.7954559326172,
            "right": 228.7954559326172,
            "bottom": 200.59092330932617,
            "height": 26.181819915771484
        }
    },
    {
        "title": "20210423144058440",
        "fromPageRect": {
            "top": 174.4091033935547,
            "left": 15,
            "width": 213.7954559326172,
            "right": 228.7954559326172,
            "bottom": 200.59092330932617,
            "height": 26.181819915771484
        }
    },
    {
        "title": "20210423144058440",
        "fromPageRect": {
            "top": 174.4091033935547,
            "left": 15,
            "width": 213.7954559326172,
            "right": 228.7954559326172,
            "bottom": 200.59092330932617,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Snelle notitie",
        "fromPageRect": {
            "top": 319.6363830566406,
            "left": 45,
            "width": 251.69886779785156,
            "right": 296.69886779785156,
            "bottom": 337.09092903137207,
            "height": 17.454545974731445
        }
    }
]
[[Blakewell]] [[Losse Notities]] [[Sacks: Moraal]] [[Camus]] [[Torfs: De kerk is fantastisch]] [[Menselijke waardigheid]] [[Joseph Roth]]

"""
Met tomaten, courgettes, uitje, mozarella, basilicum, bouillonblokje.
Water opzetten voor maatbeker bouillon. Tomaten, courgette, mozarella in stukjes.
Uitje en courgettes apart bakken. Courgette opzij. Rijst bij de uien, kort meebakken. Bouillon erbij totdat het gaar is, kan wel 20 minuten duren, niet bij weg lopen. Tomaten en courgette erbij.

Alternatief: broccoli met harde geitenkaas
"""
200 g bloem
10 g bakpoeder
snuf zout
1 tl gemberpoeder
150 g witte basterdsuiker
250 g aardpeer, geraspt en besprenkeld met het sap van 1/2 citroen
4 eieren
150 ml lichte olijfolie, plus extra

ingrediënten voor de vulling
250 ml mascarpone
3-4 el frangelico likeur of amaretto
1 el gembersiroop
100 g hazelnoten, geroosterd en grof gehakt

!To add all of Stroll to your ~TiddlyWiki

To add Stroll (minus tutorials) to your own ~TiddlyWiki, drag the tag pill below into your file, import, save, and reload. Please note that this overrides the default edittemplate and viewtemplate/titles, in case you have already tweaked those on your file.

<span class="indent1"><<tag $:/giffmex/stroll>></span>

!To add only parts of Stroll to your ~TiddlyWiki

If you just want the bidirectional linking functionality, drag the tag pill below into your file, import, save, and reload. Includes autocomplete, relinking, automatic creation of tiddlers upon saving a tiddler with new links, and contextual search results. Does not include multiple column feature, new here buttons, or visible fold buttons.

<span class="indent1"><<tag $:/giffmex/blinks>></span>

If you just want the tools to customize what you see in the editing area, drag the tag pill below into your file, import, save, and reload. 

<span class="indent1"><<tag $:/giffmex/bigeditarea>></span>

And if for some reason you want the tutorial tiddlers (not included in either of the tag pills above), drag the ''tutorials'' tag pill from the home page into your file, import, save, and reload.

<span class="indent1"><<tag $:/giffmex/tutorials>></span>

!Uninstall ~TiddlyBlink

<br>''If you already use ~TiddlyBlink'', you can uninstall it before adding Stroll: go to $:/AdvancedSearch in your file, paste `[is[system]tag[tb]]` in the search box to search for that string, and click the garbage can icon to delete the tiddlers. Then add Stroll in the method outlined above.
"""
Laten wij zacht zijn voor elkander, kind -
want, o de maatlooze verlatenheden,
die over onze moegezworven leden
onder de sterren waaie' in de oude wind.

O, laten wij maar zacht zijn, en maar niet
het trotsche hooge woord van liefde spreken,
want hoeveel harten moesten daarom breken
onder den wind in hulpeloos verdriet.

Wij zijn maar als de blaren in den wind
ritselend langs de zoom van oude wouden,
en alles is onzeker, en hoe zouden
wij weten wat alleen de wind weet, kind - 

En laten wij omdat wij eenzaam zijn
nu onze hoofden bij elkander neigen,
en wijl wij same' in 't oude waaien zwijgen
binnen een laatste droom gemeenzaam zijn.

Veel liefde ging verloren in den wind,
en wat de wind wil zullen wij nooit weten;
en daarom - voor we elkander weer vergeten -
laten wij zacht zijn voor elkander, kind.

Uit: Roland Holst, A. (1984). Voorbij de wegen (6e druk). Weesp: Agathon/Unieboek B.V.
!Tiddler title position

Because of the two story river format, we decided to move tiddler titles lower than they are in an average ~TiddlyWiki. But if you want to revert tiddler titles back to the default position next to the toolbar, open the sidebar TAB with the gear icon (<<icon {{$:/core/images/options-button}} "">>), and check the desired box.

!Options for viewing tiddlers in columns

Stroll has columns set so that you can view multiple tiddlers in each column. But you can change this so that either column only shows one tiddler at a time.

*Advantage:  this allows you to keep one column 'locked' into place with one fixed tiddler, while the other column can have multiple tiddlers accessible by scrolling up and down.
*Disadvantage: any other tiddlers in the 'locked' column will be hidden. You will need to open them with the links in the 'Open' tab in the sidebar.

To try this out, open the sidebar tab with the gear icon (<<icon {{$:/core/images/options-button}} "">>), and choose from the dropdown menus there.

!Give yourself room to write!

Edit a tiddler, and click the <<icon {{$:/core/images/chevron-down}} "">> button. This will give you options for:

*Hiding and revealing the various sections of the edittemplate
*Opening and closing the sidebar
*Editing a custom edittemplate section that contains information you want to have on hand as you write
*Adjusting the height of the text area of tiddlers


yes
[
    {
        "title": "Planning",
        "fromPageRect": {
            "top": 184.421875,
            "left": 85,
            "width": 90.99993896484375,
            "right": 175.99993896484375,
            "bottom": 209.421875,
            "height": 25
        }
    },
    {
        "title": "Planning",
        "fromPageRect": {
            "top": 184.421875,
            "left": 85,
            "width": 90.99993896484375,
            "right": 175.99993896484375,
            "bottom": 209.421875,
            "height": 25
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 343.421875,
            "left": 224.609375,
            "width": 18,
            "right": 242.609375,
            "bottom": 360.421875,
            "height": 17
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 536.421875,
            "left": 224.609375,
            "width": 18,
            "right": 242.609375,
            "bottom": 553.421875,
            "height": 17
        }
    },
    {
        "title": "januari",
        "fromPageRect": {
            "top": 407.921875,
            "left": 115,
            "width": 58.99995422363281,
            "right": 173.9999542236328,
            "bottom": 427.921875,
            "height": 20
        }
    },
    {
        "title": "januari",
        "fromPageRect": {
            "top": 165.421875,
            "left": 85,
            "width": 70.99996948242188,
            "right": 155.99996948242188,
            "bottom": 190.421875,
            "height": 25
        }
    },
    {
        "title": "januari",
        "fromPageRect": {
            "top": 165.421875,
            "left": 85,
            "width": 70.99996948242188,
            "right": 155.99996948242188,
            "bottom": 190.421875,
            "height": 25
        }
    },
    {
        "title": "januari",
        "fromPageRect": {
            "top": 346.921875,
            "left": 115,
            "width": 58.99995422363281,
            "right": 173.9999542236328,
            "bottom": 366.921875,
            "height": 20
        }
    },
    {
        "title": "Kalender",
        "fromPageRect": {
            "top": 184.421875,
            "left": 85,
            "width": 95.99995422363281,
            "right": 180.9999542236328,
            "bottom": 209.421875,
            "height": 25
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 343.421875,
            "left": 224.609375,
            "width": 18,
            "right": 242.609375,
            "bottom": 360.421875,
            "height": 17
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 591.8636474609375,
            "left": 162.09091186523438,
            "width": 16.72727394104004,
            "right": 178.8181858062744,
            "bottom": 609.318193435669,
            "height": 17.454545974731445
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 591.8636474609375,
            "left": 162.09091186523438,
            "width": 16.72727394104004,
            "right": 178.8181858062744,
            "bottom": 609.318193435669,
            "height": 17.454545974731445
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 592.0454711914062,
            "left": 162.09091186523438,
            "width": 16.72727394104004,
            "right": 178.8181858062744,
            "bottom": 609.5000171661377,
            "height": 17.454545974731445
        }
    },
    {
        "title": "Presentatie Joseph Roth",
        "fromPageRect": {
            "top": 537.4091186523438,
            "left": 65,
            "width": 168.72727966308594,
            "right": 233.72727966308594,
            "bottom": 554.8636646270752,
            "height": 17.454545974731445
        }
    },
    {
        "title": "Presentatie Joseph Roth",
        "fromPageRect": {
            "top": 667.5909423828125,
            "left": 15,
            "width": 250.18182373046875,
            "right": 265.18182373046875,
            "bottom": 693.772762298584,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Presentatie Joseph Roth",
        "fromPageRect": {
            "top": 667.5909423828125,
            "left": 15,
            "width": 250.18182373046875,
            "right": 265.18182373046875,
            "bottom": 693.772762298584,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Presentatie Joseph Roth",
        "fromPageRect": {
            "top": 667.5909423828125,
            "left": 15,
            "width": 250.18182373046875,
            "right": 265.18182373046875,
            "bottom": 693.772762298584,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Presentatie Joseph Roth",
        "fromPageRect": {
            "top": 667.7727661132812,
            "left": 15,
            "width": 250.18182373046875,
            "right": 265.18182373046875,
            "bottom": 693.9545860290527,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Presentatie Joseph Roth",
        "fromPageRect": {
            "top": 667.7727661132812,
            "left": 15,
            "width": 250.18182373046875,
            "right": 265.18182373046875,
            "bottom": 693.9545860290527,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Docent: Camus",
        "fromPageRect": {
            "top": 495.92047119140625,
            "left": 45,
            "width": 132.4545440673828,
            "right": 177.4545440673828,
            "bottom": 513.3750171661377,
            "height": 17.454545974731445
        }
    },
    {
        "title": "Docent: Camus",
        "fromPageRect": {
            "top": 342.42047119140625,
            "left": 15,
            "width": 159.63636779785156,
            "right": 174.63636779785156,
            "bottom": 368.60229110717773,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Docent: Camus",
        "fromPageRect": {
            "top": 342.42047119140625,
            "left": 15,
            "width": 159.63636779785156,
            "right": 174.63636779785156,
            "bottom": 368.60229110717773,
            "height": 26.181819915771484
        }
    },
    {
        "title": "Docent: Camus",
        "fromPageRect": {
            "top": 342.42047119140625,
            "left": 15,
            "width": 159.63636779785156,
            "right": 174.63636779785156,
            "bottom": 368.60229110717773,
            "height": 26.181819915771484
        }
    },
    {
        "title": "20 mei",
        "fromPageRect": {
            "top": 371.421875,
            "left": 224.609375,
            "width": 18,
            "right": 242.609375,
            "bottom": 388.421875,
            "height": 17
        }
    },
    {
        "title": "Kalender",
        "fromPageRect": {
            "top": 206.421875,
            "left": 85,
            "width": 94.6875,
            "right": 179.6875,
            "bottom": 231.421875,
            "height": 25
        }
    },
    {
        "title": "Kalender",
        "fromPageRect": {
            "top": 206.421875,
            "left": 85,
            "width": 94.6875,
            "right": 179.6875,
            "bottom": 231.421875,
            "height": 25
        }
    },
    {
        "title": "Te doen",
        "fromPageRect": {
            "top": 708.7132568359375,
            "left": 114.98774719238281,
            "width": 65.74755096435547,
            "right": 180.73529815673828,
            "bottom": 729.1054134368896,
            "height": 20.39215660095215
        }
    }
]
[[Planning]] [[Kalender]]


Dit wordt de tekst van alinea 1.1.
Blabla blabla la
Sed nec justo consectetur, fringilla orci sed, vehicula elit. Aliquam rutrum tempor ullamcorper. Fusce dictum nibh nec lacus volutpat, vitae porttitor metus porta. Donec vel felis ac elit ultricies gravida. Nullam aliquet tincidunt tortor, sed feugiat tellus placerat sit amet. Integer tincidunt nulla dolor, vitae mollis felis tempus et. Nulla facilisi. Nulla vitae leo mauris. Mauris lobortis lorem non dui pretium, vitae varius mauris sodales. Fusce tempus sapien quis augue semper, vitae tristique purus varius. Duis eu justo nec nulla semper mattis vel eget lorem. Quisque nec facilisis lorem, a scelerisque leo. Donec vitae rhoncus tellus. Nulla elementum nibh tortor, sit amet maximus felis congue id.

Vivamus lacus enim, ullamcorper vitae feugiat id, auctor in nunc. Praesent id porttitor massa. Sed luctus iaculis nisl volutpat viverra. Duis nisi sapien, iaculis quis varius vel, tempor sed diam. Donec sed placerat tellus. Proin porttitor lorem vitae congue viverra. Quisque suscipit eros leo, id elementum ipsum pulvinar et. Aliquam rutrum sem a dui eleifend, a ornare sapien ultricies. Donec semper elit quis est condimentum pulvinar. Mauris ligula nisl, molestie ac lacinia vitae, fermentum quis purus. Duis quis ante eros.

Suspendisse nec egestas est, at pellentesque lectus. Suspendisse dignissim gravida ligula, sit amet aliquet nibh dignissim varius. Maecenas non orci nec enim posuere porttitor in sit amet urna. Vivamus condimentum varius neque, nec lobortis mi blandit ac. Praesent ac luctus nibh. Praesent accumsan sapien vitae dui congue, sodales mollis purus semper. Duis pellentesque ante sed dolor volutpat feugiat. Aliquam ac dolor vel quam sagittis maximus a vel tellus. Sed mattis faucibus ex id scelerisque. Maecenas lobortis massa a sodales blandit. Quisque lacinia posuere condimentum.
Hier de tekst van alinea 2.1.1

Als ik sterk ben, dan

* ben ik niet bang;
* ben ik niet cynisch;
* heb ik een goed gevoel;
* verheug ik me op wat komt, zie ik lichtpuntjes;
* verheug ik me in de anderen om mij heen;
* kijk ik waardig, met een open en milde blik, naar de anderen en mezelf;
* luister ik goed;
* besteed ik 's morgens vroeg een half uur aan mezelf;
* speel ik twee of meer keer per week piano;
* loop ik twee of meer keer per week hard;
* kook ik twee of meer keer per week;
* neem ik geen borrel maar een glas water als ik thuis kom;
* leef ik vanuit psalm 73;
"""

"Als je van iemand houdt"

Als je van iemand houdt
en je bent van hem of haar gescheiden,
kan niets de leegte van zijn afwezigheid opvullen.
Je moet dat niet proberen,
je moet eenvoudig aanvaarden en volharden.
Dat klinkt erg hard, maar het is een grote troost,
want zolang de leegte blijft,
blijf je aldoor met elkaar verbonden.
Het is fout te zeggen: God vult de leegte.
Hij vult haar helemaal niet... integendeel.
Hij houdt de leegte leeg en helpt ons zo
de vroegere gemeenschap met elkaar te bewaren,
zij het dan ook in pijn.
Hoe mooier en rijker de herinneringen,
des te moeilijker de scheiding.
Maar dankbaarheid verandert de pijn
van de herinnering in stille vreugde.
De mooie dingen van vroeger
zijn geen doorn in het vlees,
maar een kostbaar geschenk dat je meedraagt.
Je moet zorgen dat je niet in je herinneringen blijft graven
en je erin verliest.
Een kostbaar geschenk bekijk je niet aldoor,
maar alleen op bijzondere ogenblikken.
Buiten die ogenblikken is het
een verborgen schat, een veilig bezit.
Dan wordt het verleden
een blijvende bron van vreugde en van kracht.
"""


Pietrasanta
Geertrui Slooten
Andrea Bocelli
Lilian van Gulick
Catrien Bijleveld
Monique Volman
Anja Swennen
Corinne van Velzen
Wim van der Grift
Robert Dijkgraaf
Annemarijke Wooldrik
Femke Geijsel

Henk Hofland
John Jansen van Galen
Martin Ros

Robert de Niro, Al Pacino, Andy Garcia
Anthony Hopkins
Emma Thompson
Silence of the Lambs
Porgy Franssen

Trotsky

/* EDIT MODE */
textarea.tc-edit-texteditor, code, kbd, pre, samp {
font-family: Inconsolata, Consolas, monospace, serif;
font-size: 1em;
}

//De Mythe van Sisyphus// begint met de beroemde openingszin: Il n’y a qu'un problème philosophique vraiment sérieux: c’est le suicide. Niet zo'n gekke vraag in 1942, temidden van de nazi terreur. Velen hadden in het licht van de dreigende verschrikkingen deze keuze al gemaakt. 

De //De Pest// doet de rentenier Cottard aan het begin van de roman een zelfmoordpoging, om te ontsnappen aan een schuldgevoel over zijn oplichterspraktijken. 

Maar er bestaat volgens Camus ook zoiets als filosofische zelfmoord. Vluchten in de schijnzekerheden van de ismen die de aandacht van de werkelijkheid afleiden. 
Dan komen we weer uit bij pater Paneloux: de mens wikt en God beschikt. Natuurlijk doet zich hier de vraag voor wie Camus met God bedoelt. Camus wordt getypeerd als een agnost, in de zin dat niets bekend is of kan worden gekend over het bestaan en de aard van God. 

Tarrou en Rieux spreken over het bestaan van God. Tarrou vraagt: ‘Gelooft u in God, dokter?’ Ook die vraag klonk heel natuurlijk. Maar dit keer aarzelde Rieux. ‘Nee, maar wat zegt dat? Het is duister om mij heen en ik probeer iets te zien. Dat vind ik al heel lang niet origineel meer.’ ‘Is dat niet het verschil tussen u en Paneloux?’ ‘Dat geloof ik niet. Paneloux is een kamergeleerde. Hij heeft niet genoeg mensen zien sterven en daarom gaat hij uit van een waarheid. Maar de eerste de beste dorpspastoor die zijn parochianen bedient en die de ademhaling van een stervende heeft gehoord, denkt net als ik. Als er ellende op zijn pad komt, wil hij niet eerst de positieve kanten ervan aantonen, maar steekt hij zijn handen uit de mouwen.’ ... ‘Goed,’ zei Tarrou. ‘Waarom offert u zich zo op als u toch niet in God gelooft? Uw antwoord helpt mij misschien bij het mijne.’ Zonder in het licht te komen zei de dokter dat hij al antwoord had gegeven. Als hij in een almachtige God had geloofd, zou hij ophouden mensen te genezen en die zorg aan Hem overlaten. Maar niemand ter wereld geloofde in zo’n God, nee, zelfs Paneloux niet, hoewel die geloofde dat hij erin geloofde. Niemand verliet zich immers volledig op Hem, en hij, Rieux, geloofde althans wat dat betreft op de weg van de waarheid te zitten door te strijden tegen de schepping als zodanig.
Het absurde accepteren, dat is wat in De Pest Rambert, Tarrou en Rieux doen.
Rambert komt nog aan de orde. We richten ons nu even op Tarrou.<p>

Jean Tarrou is een complexe figuur, die net als Rieux, kenmerken van Camus heeft. Hij is de gesprekspartner van Rieux in de roman. Hij is een kettingroker, houdt van zwemmen in de zee. Hij komt toevallig in Oran terecht en blijft om Rieux te helpen in zijn strijd tegen de pest. Hij wordt zelf het laatste slachtoffer. <p>

Hij is ervan overtuigd dat zijn vader als rechter ten onrechte een misdadiger ter dood heeft veroordeeld. Hij verzet zich tegen iedere dood in naam van de goede zaak. <p>

‘Laten we om het simpel te houden zeggen, Rieux, dat ik ruim voordat ik deze stad en deze epidemie kende al aan de pest leed. Daar wil ik maar mee zeggen dat ik niet anders ben dan alle anderen. Maar er zijn mensen die het niet weten of die er vrede mee hebben, en aan de andere kant mensen die het wel weten en er los van zouden willen komen. Ik hoorde tot die laatste categorie. Toen ik jong was leefde ik met het idee dat ik onschuldig was, dat wil zeggen zonder enig idee. Tobberig van aard ben ik niet, mijn leven begon zoals het hoort. Alles lukte me, ik had voldoende hersens, kon uitstekend met vrouwen overweg en de weinige zorgen die ik had, gingen voorbij zoals ze gekomen waren. Op een dag begon ik na te denken. En nu... <p>

Ik mis iets om bewust een moordenaar te kunnen zijn. Het is dus geen superioriteit. Maar momenteel accepteer ik mezelf zoals ik ben, ik heb bescheidenheid geleerd. Het enige wat ik beweer is dat er op deze aarde plagen en slachtoffers zijn en dat je zoveel mogelijk moet voorkomen aan de kant van de plaag te staan. <p>
\define appendButton(now, add)
 <$button set="Target" setTo="$now$$add$">append</$button>
\end

<$edit-text  tiddler="$:/temp/Append"/>
<$macrocall $name="appendButton" now={{Target}} add={{$:/temp/Append}}/>

---
{{Target}}



Gombrich houdt van prototypische seekers zoals Cézanne en Leonardo. Zij camoufleerden problemen niet. Hij keurde de //avant garde// af. Marcel Duchamp: een urinaal als abstract beeldhouwwerk. 99. Maar hij hield wel weer van Picasso, een echte finder. 

Qua methode hield hij niet van de gemakkelijke toepassing van kant-en-klare paradigma's. Hij moedigde het zoeken van antwoorden op nog niet eerder gestelde vragen aan, ook als dat een paradigmaverandering met zich mee zou brengen. Hij benadrukte de noodzaak van top-down controle, maar wilde niet slechts formules toepassen. 

Citaat

<<<
I don’t want [a method]. I just want common sense! This is my only method ... Before you do any research, you have to decide what questions to ask. The .. . tact of the scholar is to have a feeling that this or that line of inquiry is promising, that you may find out something. (Gombrich & Eribon, 1993, p. 139)
<<<

Theorieën zijn startpunten, geen doelen op zichzelf. Geen theoretische esoterica, een echte zoeker. 

Zie ook de continuïteit in zijn eigen onderzoeksprogramma. Hij heeft maar een paar centrale thema´s aangesneden. De vragen veranderden niet, wel de methoden van antwoorden. Zijn meest vruchtbare levensfasen waren zijn 70-er en 80-er jaren. Hij vond ¨oude meesters¨ een prachtige term. Domeinen als geschiedenis en filosofie, waarin grotere hoeveelheden kennis moet worden verzameld, hebben langzamere tempo's van ideeënvorming en uitwerking. 

Hij liep vooruit op enkele sleutelbegrippen in de hedendaagse studie van creativiteit. 100. Bijvoorbeeld Galenson´s typologie. Zijn opmerkingen over psychologische regressie als middel om grotere originaliteit te bereiken (Gombrich, 2002, pp. 235-268) zijn consistent met empirische bevindingen (Martindale, 1990). Zijn bezwaar tegen de Zeitgeist als een flawed construct worden gedeeld. Ook zijn nadruk op het creatieve individu (zie Gruber & Wallace, 1999). 

!!! Defining Creative Products

Gombrich als seeker. 98. 


Go to edit mode in this tiddler (use the {{$:/core/images/edit-button}} button above), and after one of the paragraphs, type `[[dav`. You should see the autocomplete popup with the tiddler `Dave Gifford` listed. Hit enter, which will accept the autocomplete suggestion and will close the link with brackets. 

<span class="indent1">//Note that when the popup gives you more than one tiddler to choose from, you will need to use the down arrow key on your keyboard to navigate to the other entries listed in the autocomplete popup. Once the tiddler you want to select is highlighted, you can hit enter, and that tiddler should be the one to appear in the link.<br><br>

Note that autocomplete does not work in iOS or other contexts where there is no down arrow key. At the end of the tutorial we will give instructions on how to disable autocomplete for those contexts.//</span>

Go back to viewing mode, click the link you created to the `Dave Gifford` tiddler, and follow the instructions in that tiddler.

When you are done here, return to [[Welcome to Stroll]] to continue the tutorial

output = system.exec_command("date '+%H:%M'")
keyboard.send_keys(output[:5]+" ")

output = system.exec_command("date '+%d-%m-%Y'")
keyboard.send_keys(output[:10]+" ")

dag = system.exec_command("date '+%a'")
if dag == "Sun": dw = "zondag "
if dag == "Mon": dw = "maandag "
if dag == "Tues": dw = "dinsdag "
if dag == "Wednes": dw = "woensdag "
if dag == "Thurs": dw = "donderdag "
if dag == "Fri": dw = "vrijdag "
if dag == "Satur": dw = "zaterdag "
keyboard.send_keys("<tblauw>" + dw + "2021, °</tblauw>")
<tgeel>Programma</tgeel><p>

Vier stellingen bespreken die kort worden ingeleid. Stellingen zijn gebaseerd op De Pest, maar kunnen ook goed besproken worden zonder De Pest gelezen te hebben. Mijn voorstel is om ze twee aan twee te bespreken in twee groepen. Eerste ronde de eerste twee stellingen. Dan de tweede ronde met weer twee stellingen. Elke ronde begint met een korte toelichting op de twee stellingen en wordt afgesloten met enkele bevindingen. De stellingen geven zoveel mogelijk het standpunt van Camus weer. Je kunt daar natuurlijk mee instemmen of er andere mening op na houden. Dat bevordert zeker de discussie. 

{{[[Stelling 1: Over God en de pandemie]]  [[Stelling 2: Over de absurde werkelijkheid]] [[Stelling 3: Over de hoop]] [[Stelling 4: Over de vrijheid om te kiezen]]}}

16: 47. Marilynne Robinson: Aanspraken op de werkelijkheid van wetenschappers zijn illusoir. Deze kritiek bevalt mij maar half. Tegen de dominantie van de exacte wetenschappen over de geesteswetenschappen.
48. Johan Huizinga: in het getal bezwijkt het verhaal. Maar biologische kennis over de mens verandert wel degelijk ons mensbeeld. Die kennis wordt deel van onze cultuur. De mens wordt steeds meer object in plaats van subject.
49. 

17: Nudgen: menselijk gedrag ongemerkt beïnvloeden door kennis te gebruiken over hoe mensen onbewust op bepaalde impulsen reageren. Niet langer wordt ons bewustzijn aangesproken. De mens is object van beïnvloeding. 50. De gokkasten van Las Vegas. De vrijheid van het individu is hier een illusie. 51. Moeten we de illusie van de mens als autonoom wezen opgeven? [Beyond Freedom and Dignity - Skinner versus Chomsky] Kan de mens zichzelf nog als autonoom wezen blijven zien?

18: 52. 53. Trump : de aantrekkingkracht van de brute versimpeling. 54. De wereld wordt simpel, en je krijgt de illusie van zelfbeschikking terug. 

19:  Freud - //Das Unbehagen in der Kultur//. Onoplosbare spanning tussen individu en samenleving/cultuur. Oerdriften, seks en geweld, worden getemd door beschaving. 55. Beschaving schept een leefbare ordem maar neuroses. Het lustprincipe - zoveel mogelijk genot en geluk - bepaalt ons handelen. Realiteitsprincipe: niet alles wat we willen is mogelijk. 56. Ik erken dat ik de buitenwereld niet ongestraft naar mijn hand kan zetten. Naast het lustprincipe en het realiteitsprincipe ook de doodsdrift. Destructie als lustbevrediging. 57. De beschaving loopt altijd het gevaar door de mens zelf vernietigd te worden. Hartstocht is sterker dan de ratio. "Heb je naaste lief" als poging van de cultuur om haat en geweld in te dammen. 58. Psychoanalyse is geen wetenschap. Maar wel waardevolle inzichten. 59. Bewustwording van wat het is om mens te zijn, dus ook onredelijk en onbewust. En middel tot bevrijding. 

20: 60. Trump aanhang: smalende afrekening met redelijke argumenten. De grens tussen individuele verlangens en complexe buitenwereld in een klap ongedaan maken. 61. Er is altijd spanning tussen het individu en de omgeving (realiteitsprincipe). Agressie als radicale poging die vervloekte begrenzing weg te vagen. [vakantie van je geweten] Cancellen. 62. Trump/Poetin: aanmoedigen van agressie tegen de krachten die jou je autonomie willen afnemen, je gevoel van eigenwaarde willen vernietigen. Populisme: Freuds realiteitsprincipe ongedaan maken. De wereld moet zich voegen naar jouw beeld van de wereld. 

21: Matthew B. Crawford, //De wereld buiten je hoofd//, over het ontkennen van een werkelijkheid buiten ons hoofd. Tom Poes en de Waggelgedachten. De postmoderne notie dat de werkelijkheid niet reëel is maar slechts een kwestie van perspectief. Alleen het lustprincipe regeert. 63. De buitenwereld als uitbreiding van de binnenwereld met het individu als centrum. De klant is koning. 64. Maar we moeten onze beperkingen accepteren. In het overwinnen van hindernissen ligt de mogelijkheid tot zelfverwezenlijking van het individu. Communicatie via het beeldscherm vlakt alles af. De ander wordt een vertegenwoordiger van iets, niet langer een individu. 65. Dit vervlakt onze relaties en maakt ze abstracter. [Contra zoom ontmoetingen!] 

22: De werkelijkheid laat zich niet zomaar ontkennen. Dat voelen de populisten ook. Daarom willen zij de werkelijkheid ongeldig verklaren, het realiteitsprincipe overboord gooien, zich uitleven in een trumpiaanse fantasie van herwonnen autonomie. //Facts don't work//. 66. Michael Gove: //People are tired of experts//. Terwijl de omgeving zegt dat hun werk wet is. Enerzijds ongeduldige en ontevreden consumenten. 67. Anderzijds zoeken naar bevrijding van de hopeloos complexe wereld waarin de experts de dienst uitmaken. <tgeel>De paradox van deze tijd.</tgeel> De expert is het realiteitsprincipe dat overboord wordt gezet, [vakantie van het geweten]. 68. De inwoners van Wales kozen, geheel tegen de ratio in, voor de Brexit. Terugvallen op de mythe van de autonomie, //take back control//. 69. Voor de moderne burger is zijn realiteit dé realiteit. Maar tegelijkertijd: verlies aan autonomie. Minder echt contact. De bedding van zijn leven lijkt verdwenen, immigratie, cultuur is relatief. 70. Crawford: overgeërfde culturele mallen zijn ontmanteld. Een vacuüm aan cultureel gezag. Het realiteitsprincipe als morele orde, als cultuur. 71. Wij zijn gesitueerd in culturele normen en praktijken. De omgeving doet het zake. 

23: De omgeving doet ter zake - wij zijn niet ons brein. De neiging om de mens los te zien van zijn omgeving, niet langer als burger maar als klant, verzwakt de binding met de omgeving, versterkt het onbehagen. Roept het verlangen op naar radicaal herstel van de autonomie. 72. Cultuur niet langer de beschermende laag. Identiteit als weermiddel in een vijandige buitenwereld. Wie Freuds realiteitsprincipe erkent zal de wereld willen veranderen. Wie het ontkent zal haar willen vernietigen.

24: 73. Een verhaal blijft nodig. <tgeel>Zonder verhalen - mythes, godsdienst, cultuur, kan een mens niet goed mens zijn</tgeel>. Wij moeten betekenis geven. Daarvoor hebben we onze verbeelding. 74. We hebben de humaniora nodig om over de toekomst te kunnen nadenken. 75. Maar ook de doodsdrift in de cultuur bedient zich van mythes. Maak je niet onschadelijk met cijfers. 

25: 76. Charley Hebdo: het wegvallen van iedere remming en realiteitsbesef. Midden in de beschaving zelf. De mens laat zich niet rationeel beheersen [ben ik het niet meer eens]. Hoed je voor de overmoed van de rede. De mens is het minst te vertrouwen wanneer hij zichzelf 'goed' verklaart. Hoed je voor de barbaar in jezelf.

Nawoord: 77. Trumps overwinning als experiment: waren zijn beloften bestand tegen de werkelijkheid? 78. De botsing tussen lustprincipe en realiteitsprincipe? De muur is er in ieder geval niet gekomen. 79. Amerika raakte zijn vooraanstaande positie in de wereld kwijt. Overal waar populisten aan de macht kwamen botsten ze hard met de werkelijkheid. Zeker door de coronapandemie. 80. Zien we ook in het VK na de Brexit. 
"""
[[Verschil regels beginselen]] 
[[Obamacare]] 
[[Waarden en waarden]] 
[[Natuurrecht]] 
[[Stoa]]
""" 1. Van de rekening ING 6360579 oktober t/m april uitdraaien
2. Spreadsheet en stukken 2020 in orde maken
3. Spreadsheet 2021 maken
4. Stukken 20201 in orde maken
5. Verslag vergadering maken
6. Stukken opsturen naar Kees en Sharief.
7. Rekening ING 6360579 opheffen voor 20 april!

15-04-21 
Uitdraaien gemaakt, 4 stuks
Sharief gevraagd of hij wil controleren en of ik eerst moet opheffen
Spreadsheet en stukken 2020 in orde gemaakt.  

23-04-21 
Even nagaan of het maandbedrag al is afgeschreven. Nog niet €9.99 wordt op 26 april afgeschreven. Ik ga dinsdag de rekening opheffen. 
Waar moet het bedrag naartoe: NL10 INGB 0000 853343 t.n.v. Orde der Augustijnen in Nederland. Nu even de stukken rondmaken. Eerst 2020

10-06-21 
OK, Nu verslag 2021 maken en opsturen naar Kees en Sharief. Stukken verstuurd met toelichting op opheffing.

19-07-21
Dus doen:
"""

|^<$checkbox field='a' checked=1></$checkbox>|Verslag vergadering rondmaken met handtekeningen|
|^<$checkbox field='b' checked=1></$checkbox>|Jaarstukken 2021 aanpassen|
|^<$checkbox field='c' checked=1></$checkbox>|Formulier KvK invullen|
|^<$checkbox field='d' checked=1></$checkbox>|Rekening opheffen|

09-08-21 <br>
OK

12-08-21 <br>
Handtekeningen eronder. Nu Jaarstukken checken. Volgens mij hoeft dat niet. Formulier KvK downloaden. 

22-08-21 <br>
Stichting is opgeheven. Nu nagaan of we de rekening kunnen opheffen. 

Het bewustzijn van het absurde is het begin, waarna de opstand volgt: hierdoor wordt het nutteloze leven waardevol. De opstand is de weigering te berusten. Ze stelt de wereld elk moment weer ter discussie. De opstand is de eerste consequentie van het absurde, de volgende consequentie is vrijheid.<p>

Vrijheid is voor zowel Sartre als Camus een belangrijk begrip. Vrijheid betekent: de dingen zijn niet noodzakelijk wat ze lijken te zijn. Ik ben niet voorbestemd om ober, onderwijzer of timmerman te worden. Misschien hebben mijn ouders dat zo bedacht, maar ik ben vrij om zelf mijn lot, mijn bestaan, mijn existentie te kiezen. <p>

Bij Camus gaat het om de vrijheid van het individu: de mens is niet vrij om aan zijn lot te ontsnappen, maar hij heeft wel de vrijheid om zijn lot vorm te geven. 

<div class="tc-table-of-contents">

<<toc-tabbed-internal-nav 'Bibliotheek''sort[tocnr]'>>

</div>

<$details summary="Hoofdstuk 1 -- Ach meneer, wat vreselijk, existentialisme!">
{{Hoofdstuk 1 -- Ach meneer, wat vreselijk, existentialisme!}}
</$details>
<$details summary="Hoofdstuk 2 - Naar de dingen zelf">
{{Hoofdstuk 2 - Naar de dingen zelf}}
</$details>
<$details summary="Hoofdstuk 3 - De Magiër uit Messkirch">
{{Hoofdstuk 3 - De Magiër uit Messkirch}}
</$details>
<$details summary="Hoofdstuk 4 - Het men en de stem">
{{Hoofdstuk 4 - Het men en de stem}}
</$details>
<$details summary="Hoofdstuk 5 - Bijten in amandelbomen">
{{Hoofdstuk 5 - Bijten in amandelbomen}}
</$details>
<$details summary="Hoofdstuk 6 - Ik wil niet mijn eigen manuscripten opeten">
{{Hoofdstuk 6 - Ik wil niet mijn eigen manuscripten opeten}}
</$details>
<$details summary="Hoofdstuk 7 - Bezetting, bevrijding">
{{Hoofdstuk 7 - Bezetting, bevrijding}}
</$details>
<$details summary="Hoofdstuk 8 - Verwoesting">
{{Hoofdstuk 8 - Verwoesting}}
</$details>
<$details summary="Hoofdstuk 9 - Het Leven Onderzoeken">
{{Hoofdstuk 9 - Het Leven Onderzoeken}}
</$details>
<$details summary="Hoofdstuk 10 - Merleau-Ponty">
{{Hoofdstuk 10 - Merleau-Ponty}}
</$details>
<$details summary="Hoofdstuk 11 - Croisés comme ça">
{{Hoofdstuk 11 - Croisés comme ça}}
</$details>

"""
Blikje limabonen, blikje tonijn, twee tomaten, uitje, olijfolie, verse basilicum, peper en zout.
<<todolist-ui caption:"" width:80% base:"boodschappen">>


<br>
~~~~"""Anne: nachthemd, t-shirt
Jochem: Paolo Giordano Wat ik niet wel vergeten
Berend: De drie levens van Josef Klein
Mercia en Franca: Flip en het vliegende paard
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="18px" height="18px">
<style type="text/css">
	.st0{fill:#77B3D4;}
	.st1{opacity:0.2;}
	.st2{fill:#231F20;}
	.st3{fill:#FFFFFF;}
	.st4{fill:#C75C5C;}
	.st5{fill:#4F5D73;}
	.st6{fill:#E0E0D1;}
</style>
<g id="Layer_1">
	<g>
		<circle class="st0" cx="32" cy="32" r="32"/>
	</g>
	<g>
		<g class="st1">
			<path class="st2" d="M12,25v25c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V25H12z"/>
		</g>
		<g>
			<path class="st3" d="M12,23v25c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V23H12z"/>
		</g>
		<g class="st1">
			<path class="st2" d="M48,14H16c-2.2,0-4,1.8-4,4v7h40v-7C52,15.8,50.2,14,48,14z"/>
		</g>
		<g>
			<path class="st4" d="M48,12H16c-2.2,0-4,1.8-4,4v7h40v-7C52,13.8,50.2,12,48,12z"/>
		</g>
		<g>
			<path class="st5" d="M32,48c-1.1,0-2-0.9-2-2c0-5.5,1.8-9.5,3.5-12H27c-1.1,0-2-0.9-2-2s0.9-2,2-2h11c0.9,0,1.6,0.6,1.9,1.4
				s0,1.7-0.7,2.2C39,33.8,34,37.5,34,46C34,47.1,33.1,48,32,48z"/>
		</g>
		<g class="st1">
			<path class="st2" d="M20,21c-1.1,0-2-0.9-2-2v-7c0-1.1,0.9-2,2-2l0,0c1.1,0,2,0.9,2,2v7C22,20.1,21.1,21,20,21L20,21z"/>
		</g>
		<g class="st1">
			<path class="st2" d="M45,21c-1.1,0-2-0.9-2-2v-7c0-1.1,0.9-2,2-2l0,0c1.1,0,2,0.9,2,2v7C47,20.1,46.1,21,45,21L45,21z"/>
		</g>
		<g>
			<path class="st6" d="M20,19c-1.1,0-2-0.9-2-2v-7c0-1.1,0.9-2,2-2l0,0c1.1,0,2,0.9,2,2v7C22,18.1,21.1,19,20,19L20,19z"/>
		</g>
		<g>
			<path class="st6" d="M45,19c-1.1,0-2-0.9-2-2v-7c0-1.1,0.9-2,2-2l0,0c1.1,0,2,0.9,2,2v7C47,18.1,46.1,19,45,19L45,19z"/>
		</g>
	</g>
</g>
<g id="Layer_2">
</g>
</svg>
{{[[Avond over Camus]] [[Podcast over Camus]]}}
Avond over Camus
"""
Herfst met kastanjes
 
Het is 4 oktober, maar nog mooi, windstil weer.
De bomen staan er roerloos bij
als voetballers wanneer het volkslied gespeeld wordt.
 
Dit is de klare zang van de herfst.
 
Natuurlijk: het verval heeft al ingezet,
maar heel rustig, vriendelijk-ingetogen. 
 
Op de tafel staat een schaal met bruinglimmende kastanjes. 
 
Calamiteiten voorbehouden
zullen zij eerder verschrompelen dan ik.
 
C. Buddingh'
 
Verzen van een Dordtse Chinees, De Bezige Bij, Amsterdam 1980.
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="✔"
	suffix=""
/>
Jos<br>
CP$410535664

Anne<br>
CP$994751845
\define checklist()
<$checkbox tiddler="$:/_cpa/Data/todos" field="todo:$(currentTiddler)$" checked="yes" unchecked="no">
<$link to="$(currentTiddler)$" tooltip="Create new detailed task">
$(currentTiddler)$
</$link>
</$checkbox>
\end
<$macrocall $name="checklist" />
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     viewBox="-1024 -1024 2048 2048" width="15px" height="15px">
  <title>Swiss Railway Clock</title>
  <style type="text/css">
    .bg {stroke: none; fill: white;}
    .fc {stroke: none; fill: black;}
    .h1 {stroke: none; fill: black;}
    .h2 {stroke: none; fill: #aa0000;}
  </style>
  <defs>
    <path id="mark1" d="M -20,-1000 l 40,0 0,100 -40,0 z" />
    <path id="mark2" d="M -40,-1000 l 80,0 0,240 -8
0,0 z" />
    <path id="mark3" d="M -40,-1000 l 80,0 0,300 -80,0 z" />
    <path id="handh" d="M -50,-600  l 50,-50 50,50 0,800  -100,0 z" />
    <path id="handm" d="M -40,-900  l 40,-40 40,40 0,1180 -80,0  z" />
    <g    id="hands">
      <path d="M -10,-910 l  10,-10 10,10 2,300 -24,0 z
               M -13,-390 l  26,0         7,690 -40,0 z" />
      <path d="M   0,-620 a 120,120 0 0 1 0,240
                          a 120,120 0 0 1 0,-240 z
               M   0,-560 a  60,60  0 0 0 0,120
                          a  60,60  0 0 0 0,-120 z" />
    </g>
    <g id="face1">
      <use xlink:href="#mark1" transform="rotate(06)" />
      <use xlink:href="#mark1" transform="rotate(12
)" />
      <use xlink:href="#mark1" transform="rotate(18)" />
      <use xlink:href="#mark1" transform="rotate(24)" />
    </g>
    <g id="face2">
      <use xlink:href="#face1" />
      <use xlink:href="#face1" transform="rotate(30)" />
      <use xlink:href="#face1" transform="rotate(60)" />
      <use xlink:href="#mark3" />
      <use xlink:href="#mark2" transform="rotate(30)" />
      <use xlink:href="#mark2" transform="rotate(60)" />
    </g>
    <g id="face">
      <use xlink:href="#face2" />
      <use xlink:href="#face2" transform="rotate(90)"  />
      <use xlink:href="#face2" transform="rotate(180)" />
      <use xlink:href="#face2" transform="rotate(270)" />
    </g>
  </defs>
  <circle class="bg" r="1024" />
  <use xlink:href="#face"  class="fc" />
  <use xlink:href="#handh" class="h1" transform="rotate(304.5)" />
  <use xlink:href="#handm" class="h1" transform="rotate(54)" />
  <use xlink:href="#hands" class="h2" transform="rotate(12)" />
  <!-- hands at 10:09:02 -->
</svg>




!! Vergadering 18 mei 2021

Locatie: https://nwo.webex.com/nwo/j.php?MTID=m03bc297a944d7df64de1be6eb6353ade

<<ximg width:80% "/Foto's/20210518 Programma TF.png">>

!!! Commissie
Lisette Baartman, Els van der Pool, Sanne van Herpen, Marjan Govaerts, Maaike Koeslag, Ralph van Ierland, Nienke Wessel

!!! Inleiding

1. Korte kennismaking

2. Doel: Advies aan minister over honorering van 4 hbo- en 4 wo-voorstellen. Elk k€ 50, samen k€ 400.

3. Alle aanvragen zijn besproken door drie preadviseurs. We gaan de finale beoordeling maken. Bespreken (preadviezen, discussie, scoren. Absoluut oordeel. 4.5 als ondergrens. 10 minuten per aanvraag. Vier criteria:

|1. Innovatief karakter van het project |30%|
|2. Verwachte opbrengsten van het project|20%|
|3. Kwaliteit van het projectplan |20%|
|4. Onderwijservaring en – visie van de aanvrager |30%|

Per criterium plus- en minpunten. Afweging: wat weegt zwaarder, plus of min

4. Nieuwe belangen?

5. Geheimhouding

6. Hand opsteken, opname

!! HBO-aanvragen

!!! [[10:15 098, Ten Hagen HvA, Succesvol afstuderen door flexibel hybride onderwijs]]

!!! [[10:25 275, Kok Fontys, Spelen op onbekend terrein: hoe onderzoeken weer ontdekken wordt]]

!!! [[10:35 283, Schilder HU, Succesvol afstuderen: leren omgaan met dilemma's met de Sensemaker app]]

!!! [[10:45 304, Sanchez Saxion, Succesvol online afstuderen, internationale competenties opbouwen met Virtual Reality in het nieuw normaal onderwijs]]

!! WO-aanvragen

!!! [[11:00 042, Hermsen TUDelft, It’s all in the game: een ludodidactische oplossing voor persoonlijkere afstudeerbegeleiding van toekomstige ingenieurs]]

!!! [[11:10 169, Van Gurp Radboud UMC, Jouw wereld en ik. Hoe perspectiefverkenning inzicht en vertrouwen geeft]]

!!! [[11:20 197, Berendsen Wageningen, 'Error Hunting’: hét spel om fouten in de data-analyse van een Masterthesis op te sporen.]]

!!! [[11:30 243, Zweemer Leiden, The Communication Lab: A peer-to-peer coaching service to support MSc students in technical communication skills.]]

!!! [[11:40 251, Altangerel Tilburg, Practicing guided self-regulation in thesis writing]]

!!! [[11:50 269, Abitzsch Fontys, Tussen theorie en praktijk - de succesvolle overgang van student naar docent]]

!!! [[12:00 320, Carr VU, Team Future Science: Inspiring life sciences research master students to provoke bottom-up professional change]]
# Interessant thema
# Nog geen review want postzegelverzameling. Analysekader ontbreekt.
# Weinig nieuws, zie passage op p. 7
# Methodologie neemt nu erg veel ruimte in, brengt paper uit balans. Bovendien: wat is er onderscheidend aan de methodologische opmerkingen? Gelden ze ook voor diaries, hardop denk protocollen, observaties, in het algemeen combinatie van bronnen.
# Vreemde zin
# Etnografisch?
\define list-links-draggable-drop-actions()
<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="[<actionTiddler>] +[putafter<currentTiddler>]"/>
\end

\define list-links-draggable-predrop-actions()
<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
\end

\define list-links-draggable(tiddler,field:"list",type:"ul",subtype:"li",class:"",itemTemplate)
\whitespace trim
<span class="tc-links-draggable-list">
<$vars targetTiddler="""$tiddler$""" targetField="""$field$""">
<$type$ class="$class$">
<$tiddler tiddler={{{[list[$tiddler$!!$field$]first[]]}}}>
<$droppable actions=<<list-links-draggable-predrop-actions>> tag=<<__subtype__>> enable=<<tv-enable-drag-and-drop>>>
<div class="tc-droppable-placeholder" style="display:block;width:2em;margin-left:-2em;height:2em;">
&nbsp;
</div>
</$droppable>
</$tiddler>
<$list filter="[list[$tiddler$!!$field$]]">
<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""" enable=<<tv-enable-drag-and-drop>>>
<div>
<$transclude tiddler="""$itemTemplate$""">
<$link to={{!!title}}>
<$transclude field="caption">
<$view field="title"/>
</$transclude>
</$link>
</$transclude>
</div>
</$droppable>
<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""" enable=<<tv-enable-drag-and-drop>>>
<div class="tc-droppable-placeholder">
&nbsp;
</div>
</$droppable>
</$list>
</$type$>
</$vars>
</span>
\end

<!--
<div class="toolbar-config-enabled-btn">
<<list-links-draggable tiddler:$:/config/sq/floating-toolbar/button-list itemTemplate:toolbar-btn-config-template type:div subtype:div>>
</div>
-->
''Toolbar buttons'':
<<list-links-draggable tiddler:$:/config/sq/floating-toolbar/button-list itemTemplate:$:/sq/ui/EditTemplate/body/toolbar/button type:div subtype:span class:"tc-editor-toolbar sq-config-editor-toolbar">>

To add/remove buttons to the toolbar, drag and drop from the list below:

---


''Unused buttons'':
<$droppable actions="""
<$action-listops $tiddler="$:/config/sq/floating-toolbar/button-list" $field="list" $subfilter="-[<actionTiddler>]"/>
""">
<div class="tc-droppable-placeholder">&nbsp;</div>
<div style="column-count:3;" class="toolbar-config-all-btn">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]] -[list[$:/config/sq/floating-toolbar/button-list]]" template=toolbar-btn-config-template/>
</div>
</$droppable>
<$reveal type='nomatch' state='$:/settings/toc' text='folder'>
<div class='tc-table-of-contents'>
<<toc-selective-expandable 'Contents' 'sort[list]'>>
</div>
</$reveal>
<$reveal type='match' state='$:/settings/toc' text='folder'>
<div class='tc-table-of-contents'>
<<my-toc-selective-expandable 'Contents' 'sort[list]'>>
</div>
</$reveal>
Gombrich's focus op schema's verwijst naar zijn psychologische oriëntatie (e.g., Rumelhart). Psychologisch onderzoek laat zien dat kunstenaars cognitieve, perceptuele en viduele geheugenvoordelen bezitten in vergelijking met niet-kunstenaars. Hoe dat in de praktijk uitwerkt is moeilijk te zeggen. Geschoold tekenen is een complex verschijnsel. Schema's ontstaan na langdurige leerprocessen. Expertise-ontwikkeling! Tien jaar!

<$list filter="[!has[draft.of]tag[Data]sort[tocnr]]"><$link to={{!!title}}><$view field="title"/><br>
</$link></$list>
"""created: 20110216113900000
creator: colmbritton
modified: 20110221141500000
modifier: matt
title: Date Formats
type: text/x-tiddlywiki

Several [[Macros|MacrosContent]] including the [[Today Macro|today macro]] take a [[Date Format String|Date Formats]] as an optional argument. This string can be a combination of ordinary text, with some special characters that get substituted by parts of the date:
* {{{DDD}}} - day of week in full (eg, "Monday")
* {{{ddd}}} - short day of week (eg, "Mon")
* {{{DD}}} - day of month
* {{{0DD}}} - adds a leading zero
* {{{DDth}}} - adds a suffix
* {{{WW}}} - ~ISO-8601 week number of year
* {{{0WW}}} - adds a leading zero
* {{{MMM}}} - month in full (eg, "July")
* {{{mmm}}} - short month (eg, "Jul")
* {{{MM}}} - month number
* {{{0MM}}} - adds leading zero
* {{{YYYY}}} - full year
* {{{YY}}} - two digit year
* {{{wYYYY}}} - full year with respect to week number
* {{{wYY}}} two digit year with respect to week number
* {{{hh}}} - hours
* {{{0hh}}} - adds a leading zero
* {{{hh12}}} - hours in 12 hour clock
* {{{0hh12}}} - hours in 12 hour clock with leading zero
* {{{mm}}} - minutes
* {{{0mm}}} - minutes with leading zero
* {{{ss}}} - seconds
* {{{0ss}}} - seconds with leading zero
* {{{am}}} or {{{pm}}} - lower case AM/PM indicator
* {{{AM}}} or {{{PM}}} - upper case AM/PM indicator

!!!!Examples
{{{DDth MMM YYYY}}} - 16th February 2011
{{{DDth mmm hh:mm:ss}}} - 16th Feb 2011 11:38:42
Congratulations! You found the tiddler with my name. See the links below in the reference section (below the horizontal line)? Good. 

Now edit this tiddler: change the title from `Dave Gifford` to your own name, and save changes. 

Are the links still there? Great! That's because Stroll renamed the links to `Dave Gifford` to whatever your name is. Do a search for your name in the search window in the sidebar, and you will see your name comes up in the same tiddlers there as well.

Now go back to [[Welcome to Stroll]] to continue the tutorial.
"""
De Creszenco, L. (1994). Geschiedenis van de Griekse filosofie. Amsterdam: Ooievaar Pockethouse.

Hoofdstuk VIII -- Epicurus

@Epicurus

In een brief schrijft Epicurus: Mijn lichaam is een zoete bron wanneer ik op water en brood leef en ik spuug op de genoegens van een weelderig leven, niet om die genoegens zelf natuurlijk, maar om de ongemakken die ze veroorzaken.
Geboren op Samos in 341 voor Christus. In 306 vestigt hij zich definitief in Athene en kent het Epicurisme geen grenzen meer. Zwaar bestreden door de stoïcijnen. Verzet zich tegen politici met hun standenmaatschappij (~Jezus). Op zijn 71ste overleden aan nierstenen.De Creszenco, L. (1994). Geschiedenis van de Griekse filosofie. Amsterdam: Ooievaar Pockethouse. Hoofdstuk VIII -- Epicurus @Epicurus In een brief schrijft Epicurus: Mijn lichaam is een zoete bron wanneer ik op water en brood leef en ik spuug op de genoegens van een weelderig leven, niet om die genoegens zelf natuurlijk, maar om de ongemakken die ze veroorzaken. Geboren op Samos in 341 voor Christus. In 306 vestigt hij zich definitief in Athene en kent het Epicurisme geen grenzen meer. Zwaar bestreden door de stoïcijnen. Verzet zich tegen politici met hun standenmaatschappij (~Jezus). Op zijn 71ste overleden aan nierstenen. Kenmerken van het denken van Epicurus Meer ethiek dan fysica. Het individu is geen 'politieke eenheid' die in een gemeenschap moet passen (Socrates en Plato), maar een particulier wiens eerste regel is "leef verborgen". De ethiek Vriendschap, verlangen, genot en dood. Vriendschap is de sleutel tot zijn filosofie (~Franciscus). 'Elke ochtend gaat de vriendschap de wereld rond om de mensen wakker te schudden opdat ze zich in elkaar kunnen verheugen.' In de epicurische ethiek wordt altijd gestreefd naar gemiddelde gevoelens: een goede maaltijd, maar niet overdreven, een liefdesverhouding, maar binnen zekere grenzen. 'Teveel rust leidt tot lusteloosheid en overdreven activiteit tot dwaasheid.' Vriendschap is nu juist een gemiddeld gevoel, halverwege onverschilligheid en liefde. Drie soorten verlangens: - natuurlijke en noodzakelijke: eten, drinken, bescherming tegen kou. - natuurlijke en niet-noodzakelijke: beter eten, beter drinken, etc. - niet-natuurlijke en niet-noodzakelijke: een gouden Rolex. Het universele medicijn, het @quadrifarmacon: - vreest de goden niet. - vreest de dood niet. - weet dat het genot voor iedereen bereikbaar is. - weet dat pijn, wanneer hij aanhoudt, draaglijk is en wanneer hij hevig is, kort duurt; houd in gedachten dat 'de wijze ook onder kwellingen gelukkig is!' 

Kenmerken van het denken van Epicurus

Meer ethiek dan fysica. Het individu is geen 'politieke eenheid' die in een gemeenschap moet passen (Socrates en Plato), maar een particulier wiens eerste regel is "leef verborgen".

De ethiek

Vriendschap, verlangen, genot en dood. Vriendschap is de sleutel tot zijn filosofie (~Franciscus). 'Elke ochtend gaat de vriendschap de wereld rond om de mensen wakker te schudden opdat ze zich in elkaar kunnen verheugen.' In de epicurische ethiek wordt altijd gestreefd naar gemiddelde gevoelens: een goede maaltijd, maar niet overdreven, een liefdesverhouding, maar binnen zekere grenzen. 'Teveel rust leidt tot lusteloosheid en overdreven activiteit tot dwaasheid.' Vriendschap is nu juist een gemiddeld gevoel, halverwege onverschilligheid en liefde. Drie soorten verlangens:
- natuurlijke en noodzakelijke: eten, drinken, bescherming tegen kou.
- natuurlijke en niet-noodzakelijke: beter eten, beter drinken, etc.
- niet-natuurlijke en niet-noodzakelijke: een gouden Rolex.

Het universele medicijn, het @quadrifarmacon:
- vreest de goden niet.
- vreest de dood niet.
- weet dat het genot voor iedereen bereikbaar is.
- weet dat pijn, wanneer hij aanhoudt, draaglijk is en wanneer hij hevig is, kort duurt; houd in gedachten dat 'de wijze ook onder kwellingen gelukkig is!'
De pest is een straf van God voor jullie losbandig leven. Het is jullie verdiende loon. Denk aan de pest in het Uittocht-verhaal. Straf voor de farao en de Egyptenaren. De gesel Gods dwingt de hoogmoedigen en de verblinden aan zijn voeten. De vromen hebben niets te vrezen maar de zondaren hebben alle reden om te sidderen. In de enorme korenschuur van het heelal zal de onverbiddelijke dorsvlegel van de pest het menselijk graan slaan totdat het kaf gescheiden is van het koren. De goede engel beveelt de kwade engel met zijn jachtspeer op de deuren van de huizen te slaan. En zo vaak als hij een huis trof, zoveel doden werden eruit gedragen. Het is tijd voor bezinning. Dezelfde dorsvlegel die u pijnlijk treft, verheft uw ziel en wijst u de weg.
hoofdstuk_1 hoofdstuk_2

"""
03-01-22
14:12 42%
14:14 43%
14:49 44%
14:56 45%
15:03 46%
15:08 47%
15:11 48%
15:17 49%
15:21 50%
15:26 51%
15:34 52%
15:43 53% 🛑
Onderzoek naar de mogelijkheid om in te breken in computers via de hardware. Baanbrekend, gepubliceerd via de USENIX conferentie. Top cv, nu al PhD aan de ETH Zürich 

Maatschappelijke relevantie 5
Vakrelevantie 5
Leesbaarheid 5
Diversiteit 1
Totaal 16
De tweede preek van Paneloux klinkt heel anders dan de eerste. Paneloux stelt dat we uit de situatie lering moeten trekken en niet moeten proberen te verklaren wat er gebeurt. Sommige dingen zijn te verklaren voor Gods aangezicht en andere niet. De hellevaart van een donjuan is te verklaren maar het lijden en de dood van een kind niet. De pest leert ons dit: we moeten kiezen tussen het Niets of het Alles, de totale aanvaarding van de verbijsterende werkelijkheid. Aanvaarding van dit lot betekent niet banale berusting of fatalisme. Rieux schrijft op uit Paneloux' preek: //We dienden ons niet te verzetten tegen de voorzorgsmaatregelen, de weloverwogen orde die een samenleving in de chaos van de plaag probeerde aan te brengen. We moesten niet luisteren naar de moralisten die wilden dat we op de knieën gingen en alle verzet opgaven. Nee, we moesten in beweging komen, we moesten voort door het duister, bijna op de tast, en proberen goed te doen. En verder moesten we blijven waar we waren, ons gewillig verlaten op God, zelfs als er kinderen stierven, en zonder voor onszelf persoonlijk een uitweg te zoeken.//

Dat is voldoende om de eerste stelling toe te lichten: God is ons lot. Of zoals we zelf zingen:<br>

//Jij bent de god die mij gegeven is,<br>
de beker die voor mij ingeschonken staat.<br>
Mijn levenslot rust in jouw hand,<br>
goed land is mij ten deel gevallen.<br>
//
Veel auteurs hebben geschreven over de grote veranderingen in Europa in de periode 1880 - 1920. Denk aan Stefan Zweig, de wereld van gisteren. Denk ook aan Oswald Spengler, Untergang des Abendlandes. Het laatste boek is echt geschreven vanuit een uitgesproken cultuurpessimisme. Grote steden en kleine gezinnen zijn de signalen dat een cultuur op zijn laatste benen loopt. Dus ook de cultuur van het avondland. Roth is helemaal geen cultuurpessimist. Hij is ook geen filosoof maar iemand die goed observeert. En hij beleeft zijn tijd als het verlies van een vaderland. Het land waar hij zich als jood voelde, de Oostenrijks-Hongaars monarchie, verenigd onder de Habsburgse keizers, met als laatste grote keizer Frans Jozef I. In die zin stond de moord op de kroonprins Frans Ferdinand en zijn vrouw, die in 1914 de aanleiding vormde voor het uitbreken van de eerste Wereldoorlog, symbool voor een eind van een tijdperk. Waaraan in een bloedige oorlog een eind gemaakt werd. 

In de Radetzkymars is dit allemaal prachtig geschetst en beschreven. Het verval van de cultuur wordt heel mooi in beeld gebracht in de drie generaties Trotta's: de held, het districtshoofd en de luitenant. 

Naast de wereld van gisteren staat de wereld van dit moment: de opkomst van nationaal-socialisme en antisemitisme. Uiteraard zijn dat belangrijke onderwerpen in het werk van Roth. 




Gombrich beschouwt originaliteit niet als het enige onderscheidende kenmerk van creatieve producten. Esthetische waarden bestaan, het is niet alles relativiteit wat de klok slaat. Ook niet revolutionair werk can grote esthetische kwaliteit hebben. Kijk dus niet alleen naar radicale paradigma-veranderende werken. Er zijn allerlei soorten creatieve bijdragen, denk aan (Sternberg's propulsion model)

"""Het lukt nog steeds niet om het ½10 systeem aan te houden. Vanavond werk gedaan dat vandaag klaar had moeten zijn. A.C. is naar vrouwen-praatgroepje. Even wat over Cathrien. Je hoort haar vaak experimenteren met als…dan… zinnen. “Als ik moet plassen, dan moet ik plassen”. Verder oefent ze met voorzetsels: Als je zegt: “Dat mag niet!”, dan reageert ze vak met “Van?”. Ze bedoelt: van wie mag het niet? Of “Ik ga naar de film”. Reactie: “Met?”. Vanavond lag de kaart van Den Haag op de grond. Ik zei: “Eh …, hier woont Guus”. Cathrien meteen op precies dezelfde toon: “Eh …, hier woont mama, hier is Deventer, hier woont oma, (wijzend op Voorschoten in de hoek) hier woont opa, dood is”. Ik wees het Huis ten Bosch aan met de mededeling: “Hier woont de koningin”. Reactie: “Van?”. Ik: “Van ons allemaal”. Cathrien: “Gaat ze Sneeuwwitje doodmaken?”. “Nee, ze is lief, ze lacht steeds”. “Gaat de jager Sneeuwwitje wel een beetje doodmaken?”. Ze noemt zichzelf steeds vaken Cathrien, met de nadruk op Ca.
Hier ben ik weer,  van nu af aan minimaal eenmaal per week. Kon het zijn dit jaar: con eleganza, soberheid en humor. Deze drie probeer ik even te onthouden. Ook Berend, Cathrien en Sara wat meer op de voet volgend. Plannen en keuzes maken. Tij voor jezelf reserveren: om te __lezen__ en te __schrijven__.

Wetenschappelijke ontwikkeling moet dit jaar in het werk absoluut op de eerste plaats staan. Veel tijd aan plannen besteden. Ook het werk thuis: correspondentie, vrienden, administratie, naast het gezin.

Deze kerstdagen nog dingen gelezen of gehoord van blijvende waarde? Pressers "Nacht der Girondijnen" was zeer indrukwekkend. Homo homini homo. Nog eens nalezen wat Herzberg erover geschreven heeft. In Huubs preek ook wel indrukwekkende elementen. Wat is "indrukwekkend" eigenlijk? Een vrij inhoudsloze term. Verder Svevo: amusant maar niet echt blijvend.  Over de Sovjet-Unie: Gorbatsjov heeft twee lasten op zijn schouders: De (oktober)revolutie en het imperium. De unie t.o. de Russische federatie: de roden t.o. de witten.

Kerstdagen waren ouderwets gezellig. Vanochtend zat ik met Berend in bad. Hij vroeg: zullen we schuitje varen theetje drinken doen. Het idee dat je zoon zoiets aan je vraagt. Om erg trots op te zijn.
Op weg van het AMC naar Uilenstede. Complimenten voor mijn plasstraal, 26 ml/sec. Volgens de arts zou menig jonge kerel daar jaloers op zijn. Nu al weer lekker snel klaar en op weg naar Uilenstede.
Weekindeling werkt tot nu toe (!) heel goed. Werkt een stuk rustiger en geconcentreerder. Morgen de hele dag onderwijszaken. Je bent veel bewuster met de verschillende prioriteiten bezig. 's Avonds na het eten is het een hele toer om Cathrien met geduld naar bed te brengen. Ik val tijdens het lezen van een hoofdstuk uit "Een huisje in de sneeuw" bijna pardoes in slaap. Cathrien was vandaag tegenover Gerrie vrij onuitstaanbaar. Over een detail als "wie doet de schoenen aan" maakte ze een reuze scène, compleet met overgeven. 

Las zaterdag in de krant dat allerlei informatiedragers zeer vergankelijk zijn en gemakkelijk tot stof vergaan. Hopelijk geldt dat niet voor deze kaartjes.

Sara kent al hele stukken van "Nijntje" uit haar hoofd. Ze kan zeer triomfantelijk zinnen aanvullen. "Daar kocht zij ... " "Boontjes aan een tak!", "en ook een dikke ..." "peer!". Even later, als Nijntje geboren is: "En alle dieren uit het land kwamen naar Nijntje toe, de haan, de kip, de ..." "kuikentjes!" "en ook de dikke ..." "peer!". Bij het slapen gaan zeg ik "Dag meneer de koekepeer." Sara: "hee, poplepee!"
Het is nu 6:33. Ingezonden brief voor de Volkskrant: maak een catechismus over het vreemdelingenbeleid om racisten de mond te snoeren. Dit nav een wansmakelijk debat gisteravond op de radio waar ik toch eigenlijk onvoldoende antwoorden ter beschikking had.

Het is nu 8:19. Met “Een goede morgen met ... Folko Nauta” (voormij onbekende jonge pianist) naar Leiden. Oud nummer van Ekseption! Begin af en toe met enig plezier aan V.U. te denken. Veel kansen dat het mis gaat: vakdidactische expertise, publicaties (4 in tijdschriften, 5de in press niet vermeld, stom). Ook positieve kanten: bekendheid met IDO onderzoek. Als het niet door gaat dan betekent dat tevens het einde van de samenwerking.

George and Martha, sad, sad. Het onvergetelijke drama van “Who is afraid of Virginia Woolf” gisteravond nogmaals op de video gezien. Zou iets voor een CD-ROM bij klinische zijn. George die het Agnus Dei prevelt voordat hij Martha gaat vertellen dat hun zoon dood is. Een huiveringwekkend mooi stuk.

𝗖𝗮𝘁𝗵𝗿𝗶𝗲𝗻<br>
Cathrien is bezig met haar tweede spreekbeurt, dit keer over Mozart. De tekst is grotendeels klaar. Ze gaat twee stukjes spelen, een vroeg menuetje en het openingslied van Papageno uit De Toverfluit. Voor de kerstvakantie vertoonde Cathrien enige stress verschijnselen. Ze had het gevoel dat ze heel veel tegelijk moest doen en de zaakjes niet op tijd af kreeg. Ze heeft van Opa een opschrijfboekje gekregen om haar dagplanning te maken. Vlak voor Kerst is ze een week ziek geweest, keel- en oorontsteking. Gisteren vroeg Opa door de telefoon hoe het met het boekje ging. Ze bedacht dat ze het even was vergeten. Nu gaat ze het weer gebruiken.

𝗦𝗮𝗿𝗮<br>
Sara heeft opeens een stap vooruit gezet met de viool: ze heeft ontdekt dat je met strijken allerlei effecten kunt bereiken. Kortom: ze strijkt nu. Het klinkt stukken beter. Sara had een prachtig kerstrapport. Het gaat heel goed bij meester Pieter. Met kerst mocht Sara in de bakkerij van de vader van Lianneke meehelpen sterretjes uit de marsepein drukken en andere karweitjes. Het beviel haar heel goed.

𝗕𝗲𝗿𝗲𝗻𝗱<br>
Berend zit na de kerstvakantie in een nieuw groepje met drie dames: Eva (nog steeds zijn Eva), Nina en Catharina. Ferdinand Grapperhaus, die een zelfde lot is beschoren, vindt het stom. Berend sloot zich bij deze mening aan. Maar het lijkt erop dat het hem toch wel bevalt. Berend heeft in december zijn A-diploma gehaald. Berend is iemand die zich wel bekommerd om zijn uiterlijk. Cathrien vertelde dat ze vaak een spel spelen waarbij Berend speelt dat hij zijn haar achterover gekamd heeft.
{{20170110 Volkskrant Obama}}
{{20170110 Volkskrant Speeches Obama}}
<<ximg "/Dagboek/20160510 Dagboek.png">>
"""Ulli, Paul Grossman en Noah een nachtje te logeren, op doorreis naar Amerika en Hawaiï. 23 december terug. Wat een spannend vooruitzicht. Opvallend zoals Ulli en Paul elk vanuit hun eigen taal en cultuur met Noah omgaan. Toen Noah, samen met Cathrien in bad, een beetje boven zijn theewater raakte, begon Ulli in het Duits te sussen terwijl Paul hem toeriep: He big boy, take it easy! Cathrien keek vrij onderzoekend naar Noah’s piemeltje maar zei niets. Je zag haar denken. Benieuwd wanneer ze erover begint. Cathrien vanavond in bed, toen ik zei dat Noah morgen in het vliegtuig ging: “Gaat hij dan naar Nieuw Zeeland?” Ben toch een paar opmerkelijke uitspraken van Cathrien vergeten. Meteen noteren. Sara geniet van haar vijfde en laatste fles. Ze is ‘s ochtends het vrolijkst. Een ochtendmens? Ze moet eigenlijk rond zes uur naar bed maar protesteert dan steeds hevig. Kan geweldig verontwaardigd huilen. Neem je haar op de arm, dan lacht ze meteen weer. Kleine komediant. Subsidieaanvraag met Meindert op losse schroeven. Hij wil nog een jaar wachten. Sipke (terug!) ziet meer in nader onderzoek naar proceduralisatie.
"""Vanochtend met Cathrien naar ‘t dorp gefietst om een krant en luiers te kopen. Heel mooi tochtje tussen de weilanden en boerderijen door. Cathrien begroet al het vee langs de weg. Vanwege het mooie weer drie gevulde koeken gekocht en bij de koffie opgegeten. Kleine crisis bij het naar bed brengen van Cathrien. Door haar gehuil begreep ik niet goed wat ze wilde. Omdat ik daarna weg ging was het hek geheel van de dam. Anne heeft het weer opgelost. Vanmiddag nog een mooi tochtje Duitsland in gemaakt.
Vandaag de vakantieziekte gehad: meestal na hard werken voorafgaand aan vakantie. ‘t Gevoel dat je loopt te niksen en de tijd voorbij laat gaan zonder goed te gebruiken. Heb het al eerder meegemaakt. Dacht het dit jaar met een beetje actie de baas te kunnen blijven. Werkte averechts. Geloof nu dat door een soort “actieve luiheid” het beter lukt om vakantie te vieren. Niet op de tijd letten! Crisis met Cathrien kwam ook een beetje hierdoor. Toch de vraag: stellen we wel duidelijk grenzen? Ongeduld is slecht. Hoe zit het met teveel geduld? Morgen komt Gerry, hoera.
Vraag aan Sir Lawrence Olivier, vandaag overleden: hoe bent u zo beroemd geworden? Antw: altijd je best doen. Meer kun je niet. Met minder mag je niet volstaan. Moeilijk om aan zo'n hoge norm te voldoen. M.n. bijv. 's avonds bij het in bed stoppen van de kinderen. Krijg altijd een reuze slaap tijdens het voorlezen. Soms hoor ik mezelf in slaap vallen. Andries vanmiddag: iemand moet je ontlasten bij PWN. Kun je aan je eigen lijn gaan werken. Heb ik dan geen eigen lijn? Wat is dat? Rekenproject? Leerlingcomponent? Wordt het SOAR? In combinatie met Hypertext? Voorspellend lezen? Ik geef toe, heel duidelijk is het allemaal niet. Zal proberen mezelf in de komende jaren beter te profileren. Vooorlopig sollicitaties uit het hoofd zetten. Rustig doorwerken en lijn opzetten. Vind toch dat Andries daarin gelijk heeft. Misschien brengt evt. onverhoopt vertrek nog verbetering in positie. Ik ga eens op papier zetten wat ik als "lijn" beschouw en vraag Andries commentaar erop.

Gisteravond met AC gepraat over vrijen en tederheid. Ik vind het heel moeilijk om bij vrijen niet toe te werken naar climax. Dat als doel te zien. Toch "weet" ik zeker dat accent op tederheid een veel betere benadering is. Ga het boek van Eysenck over sexualiteit lezen. Aan werken!
"""In de restauratiewagen van de trein naar Leiden, 8:20 uur. Tegenover mij zit een man zijn electronische agenda bij te werken. Is dat de toekomst? Zo’n beeldscherm is wel erg tweedimensionaal en in mijn geval ook nog erg kleurloos. Toch begin ik de winst te plukken van het feit dat ik nu alles in de computer bij de hand heb. Maakt de papierwinkel beslist kleiner. Geeft een heel ontspannen gevoel. Zondag een mooie tekst van Huub Oosterhuis. Zal hem zo dadelijk even scannen en in dit dagboek zetten. Vandaag wordt de vader van Joke van Eekeres begraven. We moeten nog even een briefje schrijven.
Ontbijt bestaat hier uit chocoladebroodje en gewoon croissantje, vers fruit (bosbessen, ananas, mango, aardbeien, meloen), grote mok koffie, grote beker verse jus, een korrelige yoghurt met een hartig smaakje. Prima! Daarna even naar de Mississippi lopen en aan de slag.
"""Toch wel een vrij diep dal na Guus’ vertrek. Moeilijk om de draad weer op te pakken. Het idee dat de golven van het werk steeds hoger rijzen. Wat te doen? Punt 1: geen angst, geen zorgen, goed slapen, voldoende tijd voor jezelf door lezen en schrijven. Ik merk dat actief ontspannen moeite kost. Toch echt nodig. Punt 2: zoveel mogelijk delegeren. Desnoods iemand erbij. Punt 3: plannen, plannen, plannen. Elke dag opnieuw. Voorbereiden!! De dag loopt er beter door. Punt 4: alles een beetje langzamer doen, met meer aandacht, dan gaat het uiteindelijk sneller. Punt 5 (of misschien punt 1): Iemand zijn, wees niet niemand. Vanavond met Kitty naar Radio Days geweest. Hele gezellige ontspannen film. Met veel liefde gemaakt. Ik hou eigenlijk alleen van boeken, films, etc., waarin de auteur zijn objecten met liefde behandelt. Woody Alleen is een typisch voorbeeld van deze aanpak. Veel goede grappen die je snel weer vergeet.
Cathrien praat een beetje in haar slaap door de babyfoon. Ze komt op een leeftijd waarop ze enige verantwoordelijkheid gaat krijgen voor haar handelen. Is eigenlijk begonnen met de “waarom”-vraag. Ze voelt het ook, accepteert de verandering maar protesteert ook. Vandaag voor het eerst op het schooltje wezen kijken. Beviel goed.
Dinsdagochtend in de keuken ontbeten. Om half 10 kwam iedereen op de Parkweg. Eerst de auto naar Nieuw Rande gebracht, op aanwijzing van Geert die de regie stevig in handen had. Toen de kist uitgedragen naar de bus van Mark van de Poel die intussen was gearriveerd. Om 11 uur arriveerden we in de Broederenkerk. Peter verwelkomde ons met de beide misdienaars, Thomas en Sophie. De kleinkinderen vormden een haag. Ze volgden Peter naar het altaar en daarachter kwamen wij met de kist. Alles mooi voor het altaar geplaatst. Mooie uitvaartmis met opnieuw de woorden van Geert, schriftlezing door Anne (1 Cor. 13), Ave Maria door Monica Burgers, prachtige afscheidswoorden van Anne bij de absoute. Gerry was er, Thole, Harry, Janny en Jan, Sam en Marga, Florence en Alfred, Wim. Kist weer op de schouders en met de bus van Mark naar het kerkhof gebracht. Gelukkig was het zonnetje gaan schijnen. Laatste handelingen en dankwoord van Richard bij het graf. In Nieuw Rande nog vele handen geschud, uiteindelijk hartverwarmende gesprekken met broers, zus, zwager, en fam. van de Poel. Bij Geert de dag afgerond. Dit zijn zo'n beetje de belangrijkste feiten.
8:00 uur. Er gebeurt veel dat niet in dit dagboek komt, helaas, maar het feit van mijn verjaardag mag toch niet onvermeld blijven. Ik schrijf dit met de nieuwe pen die ik van Vader en Moeder cadeau gekregen heb. De verjaardagspartij was zondagmiddag, reuze gezellig om iedereen weer eens te zien. Wat trof het dat juist zondagmiddag de buren van Jan Willem en Titia uit Auckland langs kwamen.

Gisteravond eindelijk het hoofdstuk voor het Handboek Onderwijs en Computer af gekregen. Een hele opluchting! Zo langzamerhand schemert er wat licht aan de horizon.

Vroeger ging je met "knotsen" naar school op je verjaardag. Het feestgevoel, dat je als kind op zo'n dag had, raak  je een beetje kwijt. Toch hoop ik op een gezellige dag: vanmiddag om 5 uur Thole feliciteren en vanavond eten in de stad. Vanochtend was het ontbijt al heel feestelijk.
!!! Elfde vakantiedag

Vandaag een dagje naar de kustplaats Senigalla. Eerst natuurlijk de ochtendwandeling.

|<<ximg width:400px "/Foto's/2021 Italië/0914 Anne voor de wandeling.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0914 Anne bij Loretello.jpg">>|
|borderless|k
|<<ximg width:400x "/Foto's/2021 Italië/0914 Anne in Loretello.JPG">>|
|borderless|k

Na de ochtendwandeling rijden we naar de kust, lopen we door het Senigallia, drinken koffie op het prachtige ovale Foro Annonario en bezoeken we de Rocca Roveresca. Nog helemaal intact, geschiedenis als burcht en als gevangenis. Nu worden er exposities gehouden. Wel interessant om op sommige muren nog inscripties  van gevangenen te zien. 

<<ximg width:100% "/Foto's/2021 Italië/0914 Panorama Foro Annonario.jpg">>

|<<ximg width:400px "/Foto's/2021 Italië/0914 Anne op Foro.jpg">>|<<ximg width:500px "/Foto's/2021 Italië/0914 Rocca Roveresca.jpg">>|
|borderless|k

Daarna eten we bij L´Angolino sul Mare, prima vismaaltijd. 

<<ximg width:300px "/Foto's/2021 Italië/0914 Toetje Anne.jpg">>

We halen de auto op en zetten die bij het strand. De namiddag luieren op de stretchers, gaan zwemmen (Anne) en lopen een eind over het strand. Aan het eind van de dag borrelen we bij Scalo Zero Village, waar we het eind van een verjaardagspartijtje van een achtjarige jonge Italiaanse meemaken. Ouders die rondrennen en iedereen bij het afscheid nog een cadeautje meegeven. Heel herkenbaar allemaal. 

|<<ximg width:400px "/Foto's/2021 Italië/0914 Strand.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0914 Anne in zee.jpg">>|
|borderless|k
"""Weinig schokkends vandaag. Overdag met veel onderbrekingen zaken afgehandeld: drukproef artikelen in themanummer NTP. Is het geslaagd of niet? Moeilijk te zeggen. Er staat wel degelijk wat in. Programma Solve van Douwe Kok bekeken. Leuk voor onderzoek. Ook bruikbaar voor college Cogn. Ψ en Informatica. Beoordelingsrapporten nog niet af. Bijeenkomst met OTG-bestuur over evaluatie OTG Onderwijsleerprocessen. Hoorde in dat niemandsland Hoog Catharijne opeens een kind huilen en kreeg het sterke gevoel dat er iets mis was met Cathrien. Gelukkig niet. Vanavond college Inl Ψ en Cogn. Ψ en Informatica voorbereid. Veel oude kennis opgehaald. Norman’s 12 Issues for Cognitive Science in kijken: Language, Perception, Performance, Skill, Thought, Learning, Consciousness, Emotion, Belief Systems, Memory, Interaction. Frijda’s cognitieve theorie over emoties: verandering in actiebereidheid als gevolg van een appel dat van belang is voor het individu. Zeer fascinerende onderwerpen, precies dat wat me in de ψ zo enorm heeft geboeid. Waarom komen er zo weinig studenten op af? Heeft Fodor gelijk: je kunt er niets systematisch over zeggen? Het lijkt erop. Ik zit nog steeds voor een keus: deze kant uit (cogn. ψ) of de onderwijskant (vacature Utrecht, niet op gereageerd!).
14 dagen later. Zoeken, zoeken, zoeken. De kunst is om van alle bekoringen af te zien. Genoeg te hebben aan het gevoel: dit zit goed.
De kinderen:
Cathrien werd gisteravond opgebeld door klasgenoot Marloes. Samen hebben ze per telefoon een tekenclub opgericht, "Het Tekenbeest". Op een envelop staan haastig door Cathrien genoteerde namen van klasgenoten. 
Gisteren liep er een poes alleen op straat. De meisjes meteen met melk en plakjes worst in de weer. Helaas is het beest weer vertrokken. Cathrien zou dolgraag een huisdier willen. 
Sara is enthousiast over haar viool. Ze oefent heel fanatiek met Anne en mij. Alle negativiteit is weer op afstand. 
Berend blijft een vrolijke flierefluiter. 's Ochtends bij het opstaan soms wat humeurig. Maar verder altijd opgewekt. 
Het is 22:42. Op de radio Ischa Meijer in gesprek met Martin van Amerongen over een nieuwe overlevingsstrijd van De Groene Amsterdammer. Anne kijkt beneden naar verslag van de manier waarop een patiënt van, een 25-jarige schone, zich vanuit haar rolstoel in een vijver met goudkarpers laat tillen voor een foto voor de Playboy. De aanwezige fotografen waren zeer onder de indruk van haar wilskracht. Ze wil zich bewijzen. 

In Japan heeft een sterke aardbeving een stad, Kobe, verwoest. Grote branden, 1600 slachtoffers, 1000 vermisten, 10.000 huizen verwoest. Nu nog even lezen in Ian McEwans De cementen Tuin.
Een nieuwe ROM op de telefoon maakt het apparaat zelf ook weer een beetje nieuw. Installatie heeft wel weer veel tijd gekost maar ik ben toch heel blij met het resultaat. Hopelijk kunnen we de configuratie een tijdje zo houden.
Anne's koorts is gezakt, met de paracetamol. Ze is aangesloten op een app vanuit het OLVG, waarbij je dagelijks rapporteert over je toestand. Afhankelijk van de waarden word je gebeld door een verpleegkundige voor nadere info en advies. Heel efficiënt! Voor het ziekenhuis en handige manier om data te verzamelen. 

Je wilt eigenlijk continu nieuwe informatie over de coronaepidemie hebben. Dat kan ook omdat er continu over bericht wordt. Op een zeker moment ben je er helemaal klaar mee. Lijkt me in geval van een oorlog net zo te gaan.
"""Vanochtend in de stromende regen naar O. gefietst om o.a. pasfoto’s te laten maken. Onderweg vroeg Cathrien opeens: “Wat gaan we doen?”. Een veelbetekenende opmerking vond ik. Ze wordt zich steeds meer bewust van de situatie waarin ze zich bevindt.
Wat je aan Sara opvalt is dat ze anders is dan Cathrien. Ze lacht veel meer, en slaapt volgens mij minder goed dan Cathrien. Waarop duidt dat?
Vanmiddag tegen 4 uur hield het op met regenen. Met vader en moeder naar Weerselo vertrokken om daar het Stift te bekijken en een pannekoek te nuttigen. De meisjes gedroegen zich keurig. Sara kreeg van moeder de fles. Cathrien papte aan met de diensters en mocht mee naar de keuken.
Vanavond Primo Levi uitgelezen. Indrukwekkend boek. Vooral het verhaal van zijn ontmoeting met Müller na de oorlog. Het boek geeft een beeld van een heel innemend mens, de schrijver, zonder uitgesproken overtuigingen of ideeën, maar wel gericht op de strijd tegen de materie zoals hij het zelf noemt. Behoort tot mijn top 10. Naast: Buddenbrooks, De laatste der rechtvaardigen, Oorlog en Vrede, The Sandcastle, The fixer, Sophie’s Choice, Un Uomo, De Tijgerkat, Oblomov, Een dag uit het leven van Iwan Denisovitch, Terug tot Ina Damman, De Avonden, 100 jaar Eenzaamheid, De ondraaglijke lichtheid van het bestaan, Arnoni, Hadrianus’ gedenkschriften.
Bij Sara en Toon dreigde een corona besmetting, via de crèche van Ada. Iedereen getest en gelukkig negatief. Hele opluchting, kan het weekend in Diepenveen Gerwin doorgaan. Els verzette zich hevig bij de test, huilde de hele tent bij elkaar, uiteindelijk een bloedneus. Arme Els.

Wel erg leuk dat Sara van Ada zei: ik ken geen baby die zoveel lacht als Ada.

Zondag spraken we met Mercia over de koorts van Franca. Mercia: ik weet er alles van.
Berend is al weer in zijn 8ste week, drinkt naast mij aan moeders borst, 11.20 's avonds. De kinderen (C &S dus) zijn vrij ongedurig en dwars. Gisteravond heeft Sara ons tot ½10 bezig gehouden! We hadden haar in de reiswieg in de studeerkamer gezet. Zijn zelf in bed gekropen om nog eens naar de film "Sophie's Choice" te kijken. Cathrien kan ook erg dwars zijn. Soms is ze een hele tijd vrolijk geweest, valt over een onbeduidend iets en gooit zich vol overgave in een emotionele crisis. Hoe kan het! Alleen Berend is rustig. Heeft al een paar nachten doorgeslapen. Hopelijk zet hij door. Probeert al wat praatgeluidjes te maken. Lacht erg veel. Voelt zich kennelijk tevreden.

Interview van Huub Oosterhuis met Han Renckens, een maand jonger dan vader. Vraag: Je mediteert nog iedere morgen? Antwoord: Niet op een knielbank. Ik sta voor mijn raam, om negen uur 's ochtends. Dan beself ik: ik ben er nog, en ik ben blij dat ik er nog ben, toch -. "Wat zit je dward", zeg ik dan tegen mezelf, "quare tristis es, anima mea - Waarom ben je bedroefd, mijn ziel? En ik zeg: "Jij gaat niet aan de slag voor je goeie zin hebt".
Jan Elshout overleden
Zelfs  het Freud-dagboek (één regel per dag) lukt niet. Er moet meer geschreven worden! Ook brieven schrijven. Vanavond een brief aan Jan Willem en Titia schrijven. Zondag (afgelopen) eerste geschaatst op de Jaap Edenbaan. Iedereen was heel enthousiast, inclusief ikzelf. Goed idee van Anne. 's Middags naar Ermelo, waar de complete familie (behalve de kinderen van Thole en Corry) verzameld bleek. Veel te druk voor moeder. Ik had er spijt van dat we gegaan waren. Voelde me bovendien niet echt tot de kring behoren, net als met oud & nieuw. Een deprimerend gevoel. Komt natuurlijk gedeeltelijk door mijn positie thuis als jongste en nakomertje. Is het zo ergens om nergens echt bij te horen? Geeft je ook een zekere mate van onafhankelijkheid. 
Oude vulpen blijkt nog steeds goed te doen. Vandaag het overwinnaarsgevoel na het gereedkomen van het eindrapport van het Proefstation-project. Het resultaat is qua vorm erg netjes geworden. Hopelijk valt de inhoud ook in de smaak. Enorme opluchting dat het verhaal er is en zo netjes op tijd! Heeft op het laatst nog wel een weekend doorwerken gekost, samen met de jongens. Laatste etappe duurde 24 uur! Van zondag 9 uur tot maandag 9 uur vrijwel non stop. 
Hopelijk duurt deze euforie nog even. De Mattheus Passion draait, het moet voorjaar worden!
Nog een kop koffie, briefje, planning van de dag en weg. 
Vandaag een pittige wandeling gemaakt, van Wormerveer naar Landsmeer, 24 km! Ging goed, weer viel gelukkig mee. Mooie natuur, veel watervogels in het Twiske. Goeie oefening voor Italië.

Vanavond naar de voorstelling van Salle Wallis de Vries in De Kleine Komedie. Leuke typetjes maar geen dragend thema. Wel leuk om Monique Volman weer even te zien.
"""De dag begon met een fles voor Sara om ± kwart voor zes. Na ‘t ontbijt zorgde Gerry voor Saar en gingen Anne, Cathrien en ik fietsen. Onderweg kwamen we overvolle braamstruiken tegen. Cathrien bleek een fanatiek plukster en dreigde af en toe in de struiken te vallen. Na een snelle kop koffie naar het dorp waar vader en moeder op de Siepelmarkt stonden te wachten. Weer een paar mooie puzzels voor Cathrien gekocht. Moeder trakteerde op een pannekoek, door C. met smaak verorberd. De bejaarde ober wist allerlei details over De Wiemsel, de prijzen, de gasten, de eigenaar.
Vanmiddag met Saar in bed de siësta doorgebracht. Daarna heerlijk in de zon zitten lezen terwijl Anne, Gerry en de kinderen aan de wandel gingen. Vanwege het mooie weer kon Cathrien buiten in bad. Na de maaltijd de kinderen in bed gestopt en naar De Wiemsel voor een smakelijk en gezellig diner met vader en moeder.
Sara houdt zich niet aan het stereotype patroon van baby’s tot drie maanden: ze slaapt weinig en ze communiceert veel: “praten”, lachen, driftig schreeuwen. Vanmiddag speelde ze voor het eerst en meteen heel enthousiast met de balletjes van Jozien.
Nacht en ochtend gingen goed. Sara heeft heel goed geslapen en gedronken. Om 12 uur en 4 uur wakker gemaakt. Vanochtend een beetje gehuild in de slaap. Veel gelachen bij het ontwaken. Ze ligt al een beetje naar de blauwe doek te kijken. Aan C. verteld dat de poes dood is, weg, komt niet meer terug, was ziek en moe, etc.
De inloopkast flink uitgeruimd. Vandaag is bij Janny een stent in de galbuis geplaatst. Hopelijk goed afgelopen, morgen even bellen. Adreswijzigingen verstuurd. Henk Hofland is vandaag op 88-jarige leeftijd in zijn slaap overleden. Trump heeft zijn campagneleider ontslagen, lijkt achterop te raken in de peilingen. Morgen weer eens mediteren. 
!!! Achttiende vakantiedag

|<<ximg width:100% "/Dagboek/20210921 Dagboek 1.jpg">>|<<ximg width:100% "/Dagboek/20210921 Dagboek 2.jpg">>|
|borderless|k

|<<ximg width:400px "/Foto's/2021 Italië/0921 Fondamenta de Cannaregio.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0921 Pakketboot.jpg">>|
|borderless|k

Eerst even koffie drinken aan een mooie gracht aan de buitenkant van het Ghetto. Het is er zo in de ochtend een drukte van belang, op en langs het water. Alles gaat per boot in Venetië, ook het pakketvervoer.

|<<ximg width:400px "/Foto's/2021 Italië/0921 Banco Rosso 1.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0921 Banco Rosso 2.jpg">>|
|borderless|k

In het Ghetto is veel te zien, o.a. de Banco Rosso, misschien wel het oudste pandjeshuis ter wereld. In de Middeleeuwen mochten de Joden veel beroepen niet uitoefenen. Wel het lenen van geld tegen rente, dat beschouwden de christenen als zondig. Aanvankelijk waren er drie banken in Venetië, de rode, de groene en de zwarte. Ze waren zowel bank als bank van lening. Ze bleven in bedrijf tot de Franse tijd (1797). Shakespeare´s "De Koopman van Venetië" beschrijft deze handel. Op de foto de Rode Bank, zo genoemd om de klanten die sieraden beleenden een rood bewijs kregen. Misschien komt de uitdrukking "rood staan" daar vandaan. 

<<ximg width:100% "/Foto's/2021 Italië/0921 Doorkijkje.jpg">>

Alweer een mooi doorkijkje over de grachten en kades.

|<<ximg width:300px "/Foto's/2021 Italië/0921 El Mascaron.jpg">>|<<ximg width:600px "/Foto's/2021 Italië/0921 Biertje op mooi plein.jpg">>|
|borderless|k

El Mascaron is de kop van een monster boven de deur van de klokkentoren van de Santa Maria Formosa. Dergelijke koppen werden aangebracht om boze geesten te weren. Deze kop ziet er wel heel vervaarlijk uit. Aan het eind van de wandeling een biertje op een mooi plein in de studentenwijk Dorsoduro, heel gezellig.
De laatste week van april vind ik een van de fijnste weken van het jaar. Het voorjaar barst in alle hevigheid los, de hele zomer ligt nog voor ons, inclusief de meimaand. Geluk is vooral het vooruitzicht op iets fijns. Dat constateerden Cathrien en ik na het zien van de film After Life, waarin mensen na hun overlijden gevraagd wordt om zich het gelukkigste moment uit hun leven te herinneren. Gisteravond zagen we de film Être et Avoir van de Franse regisseur Philibert. Prachtige ode aan het beroep van onderwijzer. Klein schooltje in Frans boerendorp in Auvergne. Drie groepen van elk zo'n 5 leerlingen. Geduldige onderwijzer. Lief en leed van de kinderen.

Helaas gaat het slecht met ma. Ze heeft heel weinig energie over. Is erg mager en geel geworden. Was niet aanwezig bij Ingrid's verjaardag. Geert en Marjolijn hebben nu de regie in handen. Anne gaat donderdagavond en vrijdag naar Deventer. Het lijkt een kwestie van weken te zijn. Pa is erg van streek en weet eigenlijk geen raad met de situatie. Eigenlijk is dat ook heel tragisch om te zien, hoezeer hijzelf uit zijn evenwicht is. 
dinsdag 22 december 2009 -- Sterfdag van Meindert

Herinneringen aan Meindert van Jos<p>
Meindert is voor mij in de eerste plaats mijn geleerde broer. Toen ik in de zesde klas van de middelbare school zat gaf hij mij twee boeken te lezen. Introduction to Psychology van Hilgard, en De Mening van de Psycholoog, van John van de Geer. Daarmee was mijn studiekeuze snel gemaakt: psychologische functieleer, net als Meindert. Tijdens mijn studie gaf hij mij boeken en artikelen te lezen. Hij stuurde kranteknipsels, voorzien van gedetailleerd commentaar. Het ging natuurlijk over onderwijs, van realistisch rekenen tot de onderwijspolitiek van de Partij van de Arbeid. Meindert had uitgesproken opvattingen over wat in het onderwijs deugde en niet deugde. In de periode van het kabinet Den Uyl en het ministerschap van Van Kemenade was hij enthousiast over het onderwijsbeleid. Het geleidelijk terugdraaien van de middenschool beschouwde hij als een verkeerde ontwikkeling.

Na mijn promotie, net als Meindert bij Sipke Fokkema, vatten we het plan op om gezamenlijk een onderzoeksproject te starten. Dat werd het rekenonderzoek waarop aanvankelijk Guus Mannaerts aan het werk ging en later Emiel Felix is gepromoveerd. Sipke Fokkema was promotor, Meindert en ik waren de copromotoren. Meindert was de expert, en ik was er om de grote lijnen in de gaten te houden. Ik herinner me sessies aan het eind van het traject toen Emiel Felix in nachtelijke uren hoofdstukken produceerde die we dan met ons vieren bespraken. Meindert leverde uiterst gedetailleerde kritiek die Sipke Fokkema als promotor dikwijls niet helemaal kon bevatten. Dat leverde geprikkelde reacties en een vragen om verder uitleg op. Ik probeerde het gesprek met enige diplomatie in goede banen te leiden en zag vanuit mijn ooghoek de vermoeide promovendus zachtjes in slaap sukkelen.

Drie eigenschappen van Meindert blijven mij bij. Meindert was als wetenschapper en als docent grondig en veeleisend voor zichzelf en zijn studenten. Zoals hij als houtbewerker lang doorging met polijsten, zo was hij ook niet snel tevreden met zijn eigen teksten en met de producten van zijn studenten. Ook daar ging het schuren lang door. In de laatste fase van zijn loopbaan ging hij zich vrijer opstellen, vooral door zijn verblijf in Cambridge en door de waardering die hij daar en vervolgens ook hier in Nederland als ondervond.

In de tweede plaats was zijn drijfveer als onderwijskundige een sterke betrokkenheid bij leerlingen en studenten. Als begeleider was hij altijd praktisch bezig in het onderzoek, hij ging kijken op de scholen waar het onderzoek plaatsvond en voerde, als het even kon, het experimentele onderwijs zelf uit. Dat gold ook voor de dataverwerking. Leerlingen en studenten hebben erg veel aan zijn begeleiding gehad. Daarin was hij een voorbeeld.

In de derde plaats was hij iemand die op basis van ervaring en onderzoek koersvaste overtuigingen ontwikkelde. Daar hield hij ook aan vast. Hij kon zaken tot de bodem uitzoeken, zeker als hij het gevoel had dat er ergens met de data gesjoemeld was.

In die grondigheid, betrokkenheid en koersvastheid is Meindert voor mij als oudste broer een voorbeeld geweest. Vanochtend mailde Guus Mannaerts die in ons gezamenlijk rekenproject heeft gewerkt mij: “Ik herinner me vooral de manier waarop hij met jonge kinderen omging. Hij wist ze altijd een soort ‘thuis’ gevoel te bezorgen. Voor zijn kinderen en kleinkinderen moet hij een bijzondere vader en grootvader zijn geweest.” Bij die woorden sluit ik me graag aan. 
Gisteravond een zeer moeilijk gesprek met AC. Mijn houding was cynisch, hopeloos in beide betekenissen. Ik heb geen hoop meer dat onze relatie nog iets wordt. Waarom zeg ik dit? Waarom spreek ik me uit over de toekomst die voor ieder onbekend is.  Wanhoop is even irrationeel als hoop. Wat telt is niet (de verwachting van) het resultaat, maar de weg ernaartoe. Ik wanhoop niet zozeer aan onze relatie als wel aan mijn vermogen om er iets aan te verbeteren. Waarom toch niet de combinatie "con eleganza, soberheid en humor".  Waarom niet "hope for the best, prepare for the worst", zoals de Amerikanen roepen na 5 dagen Golfoorlog met meer dan 8000 bombardementsvluchten op Irak en geen duidelijke doorbraak. Deze gedeprimeerdheid  leidt tot overmatige concentratie op jezelf, inertie, wanhoop. Terwijl je met meer recht kunt zeggen: erken je eigen beperkingen, bid om kracht, vecht tegen beter weten in voor de goede zaak, die is: onderdak, bescherming en warmte bieden aan Anne-Carien en de kinderen. Vecht voor elk uur, bestrijd het kwaad in jezelf en in anderen. Houd op jezelf aan te staren.  Kies je doelen en probeer die te bereiken, zonder je te concentreren op je eigen wonden. Voel je opgenomen in Gods nabijheid.
Een beetje een angstig dagje omdat ik vanochtend opeens wakker schrok uit een moment van slapen en totaal het besef van tijd was kwijtgeraakt. Wist niet meer hoe laat het was, welke dag van de week, welke dag van de maand. Behoorlijke paniek. Het duurde wel een kwartier voordat alles weer op zijn plaats stond. Vanochtend gewoon hard gelopen in Forte dei Marmi, koffie, terug naar huis en ontbeten. Anne was juist begonnen met eten koken en ik zat buiten aan tafel te lezen. Ik moet even in slaap gesukkeld zijn, wat wel eens vaker gebeurt. Werd wakker door de lucht van paprika's die werden gebakken. En toen raakte ik de kluts kwijt. Lijkt op het onrustig wakker worden wat ik wel vaker last van heb als ik midden op de dag in slaap val. Daar houden we het vooralsnog op. Verder een prima dag. Vanochtend dus hardgelopen en gezwommen. Daarna ontbeten en gelezen. Na de siësta naar het strand en vanavond gezellig gegeten in Pietrasanta.  Nog een colbertje gekocht.
"""Vandaag is vader begraven. Het was een heel zinvolle gebeurtenis met goede woorden van Meindert en ds. Zwaan. Het was goed om de ooms en tantes, neven en nichten en vrienden van vader en moeder te ontmoeten: Sam Boelens, Ma van Remmen en Richard, Baukje en Arpe, Rip, juffr. Goede en juffr. Ollebek, Janine Nijmeijer, Huib Nijholt, Berty Bolt, Ineke ten Broeke, Willy ten Broeke.
Het programma:
Vanochtend via Welsem, Emst, Vierhouten, Elspeet naar Ermelo gereden. Alweer een mooie tocht, nu samen met Anne. Om ± 11.20 uur in Ermelo. Een kop koffie en naar de Maranathakerk waar de familie om 12 uur arriveerde. Vader stond in de kerk opgebaard. Hij viel een beetje in het niet, vergeleken met de studeerkamer. Om kwart voor een arriveerden de overigen die ons de hand wilden drukken. Ook nog: van Emaus: De Bondt, de huidige directeur, Fernhout, Van der Geest, Van de Mooren, etc. Om 2 uur de dienst, om 3.15 uur de begrafenis. Het is nog steeds erg warm. Voorlezen psalm 73 ging goed. Oom Wim en tante Janny waren ontroerd. Terug naar de Maranathakerk. Om 17.00 uur naar huis om een kop soep + borrel te nuttigen. Nu weer in Amsterdam.
Acht citaten uit de Essays van Michel de Montaigne. Zijn kasteel bevond zich niet ver van de plek waar we vakantie hielden, in de Dordogne. Uit de toelichting van de vertaler, Hans van Pinxteren: Montaigne werd in 1533 geboren op het kasteel van Montaigne, ten oosten van Bordeaux, in de Périgord. Op zijn 21e (in 1554) rondt hij zijn rechtenstudie af en wordt het magistraat aan het gerechtshof van Bordeaux. Dat blijft hij 16 jaar. In 1558 maakt hij kennis met Étienne de la Boëtie, jurist en humanist uit Sarlat. Zij worden boezemvrienden. In 1563 sterft La Boëtie aan de pest. Door hem leert hij  het stoïcisme waarderen. Op 28 februari 1571, de dag waarop hij 38 wordt, besluit Montaigne zich uit het openbare leven terug te trekken en zich te installeren in de bibliotheek van zijn kasteel, en zich voortaan te wijden aan de studie van de klassieken. Dan begint hij aan zijn Essays.

Uit “Over de ledigheid”: Wanneer de geest zich geen vast doel heeft gesteld, gaat hij verloren; want, zoals het gezegde luidt: wie overal is, is nergens.

Uit “Over de vriendschap”: De band van een kind met zijn vader berust veeleer op respect. Vriendschap vindt haar voedingsbodem in een vorm van communicatie die vanwege de te grote ongelijkheid niet mogelijk is tussen vader en kind, en die de vervulling van de natuurlijke plichten wel eens in de weg zou kunnen staan. Want een vader kan niet al zijn intieme gedachten aan zijn kind meedelen zonder het vrijpostig en onhandelbaar te maken, terwijl een kind zijn vader niet kan vermanen en terechtwijzen, wat een van de voornaamste vriendendiensten is.

Idem: Liefde is het streven vriendschap te sluiten met iemand die ons door zijn schoonheid boeit.

Idem: Als ik zou moeten zeggen waarom ik van hem hield, weet ik daar geen antwoord op dan slechts dit ene: ‘Omdat hij het was, omdat ik het was.’

Uit “Over de eenzaamheid”: Als wij nu proberen alleen te leven, zonder het gezelschap van anderen, moeten wij ons geluk alleen van onszelf laten afhangen; wij moeten ons losmaken van al wat ons aan anderen bindt: macht over onszelf verkrijgen, om waarlijk alleen te leven en om dit in alle gemoedsrust te kunnen doen.

Idem: Wij moeten zo mogelijk een vrouw hebben, kinderen, bezittingen, en vooral een goede gezondheid, maar ons daar niet zó aan hechten dat ons geluk ervan afhangt. Wij moeten een achterkamer voor onszelf apart houden, om daarin volkomen ongestoord onze eenzaamheid en afzondering te cultiveren en ons werkelijk vrij te maken. In deze ruimte moeten wij dagelijks het gesprek met onszelf aangaan, een zo persoonlijk onderhoud dat geen enkele relatie of omgang met de buitenwereld dit kan verstoren. Daar moeten wij praten en lachen alsof wij geen vrouw, kinderen en bezittingen, geen personeel en bedienden hebben, zodat als wij ze op een gegeven moment kwijtraken, het niet nieuw voor ons is het zonder hen te moeten stellen. Wij hebben een ziel die tot zichzelf kan inkeren en zichzelf gezelschap kan houden, zij heeft flink wat te bestormen en te verdedigen, te geven en te nemen. Wij hoeven niet bang te zijn dat wij in deze eenzaamheid vergaan van verveling omdat wij niets om handen hebben.

[zondag 28 juli 1996: ik lees in Vrij Nederland van 27 juli 1996 in een artikel van Freke Vuijst, “Bill Clinton in boekvorm” (36-38) over de moeder van Bill Clinton die getrouwd was met een drankzuchtige man die haar en haar twee zoons sloeg: Hoe zij de wisselvalligheden van het lot trotseerde, beschrijft ze in Leading with my Heart, de autobiografie die kort na haar dood verscheen. ‘In mijn hoofd heb ik een hermetisch gesloten doos gebouwd, dat waar ik over wil denken zit erin, de rest blijft er buiten. De binnenkant van de doos is wit, wat er buiten valt is zwart. Binnen zijn liefde en vrienden en optimisme, buiten zijn negativisme, niet in jezelf geloven, en kritiek op mij en die mij lief zijn. Meestal is de doos zo sterk als staal.’ Virginia Kelley geloofde niet in zielzoeken en therapeutische labels. Ze zag haar leven als een country-and-western-lied, vol pathos, en ups  en downs. Ze leefde met een simpel credo: leef in het heden. Leading with my Heart  is een heerlijk boek, ook als ze niet de moeder van de president was, zou Kelley indruk maken, want ze was an American original.]

Idem: Ik weet hoe rekbaar de grenzen zijn van wat wij strikt nodig hebben; en als ik zie dat de arme bedelaar die mij aanklopt vaak vrolijker en gezonder is dan ik, probeer ik mij in zijn plaats te stellen en in hem in te leven; en door mij op dezelfde wijze in andere voorbeelden te verplaatsen, kan ik—ook al denk ik dat dood, armoe, minachting en ziekte mij op de hielen zitten—zonder moeite besluiten mij niet te laten verontrusten door wat een minder bedeelde zonder te klagen aanvaardt.

Idem: Het denken van wie uit vroomheid de eenzaamheid zoekt, geheel vervuld en overtuigd van Gods beloften van een ander leven, is heel wat juister en heilzamer. Zij richt zich op God in zijn oneindige goedheid en macht: bij Hem vindt de ziel in alle vrijheid de bevrediging van haar behoeften. Kommer en smart komen hen goed van pas, omdat zij daarmee een eeuwig heil en geluk verwerven; en de dood verwelkomen ze als de overgang naar deze staat van volmaaktheid. Door de gewoonte verliezen hun regels al gauw hun strengheid voor hen, en door de ontkenning van hun vleselijke lusten worden die in slaap gesust en afgestoten, want onze lusten gedijen slechts bij regelmaat en praktizering. Alleen dit doel. Een ander, eeuwig leven in gelukzaligheid, rechtvaardigt dat wij de geneugten en genietingen van het aardse leven opoffferen. En wie in zijn ziel dit vurig geloof, de vlam van deze hoop, werkelijk en duurzaam kan laten branden, bouwt in de eenzaamheid aan een heerlijk leven vol genietingen, dat elke andere vorm van leven overtreft.
Vandaag goede berichten: 1. manuscript eindrapport Proefstation goedgekeurd voor publicatie. Door Kanselaar nog wel! Gunstig voorteken. 2. Studenten presteren goed tijdens en zijn tevreden over cursus Lezen en Tekstbegrip. 3. Toch nog positief bericht over democollege afgelopen vrijdag. Ik blijf sterk afhankelijk van dit soort schouderklopjes. Zal er nu eindelijk een moment aanbreken waarop de druk even afneemt? Morgen in ieder geval een dagje Egmond. Nu 5 blz. Toergenjev (vaders en zonen) en 10 blz. Boonman.
Alweer een prachtige dag. De zon en het licht zijn wel heerlijk hier in Noord. Niet die schuldgevoelens, verlammend en de vaart eruit halend. Vandaag proberen steeds de activiteiten zo voor te bereiden dat de vaart vanzelf ontstaat. En tot de angst weg is. Nog nagenieten van het leuke feest. 
Het lijkt erop dat ik me happyer voel na een dag werken dan na een dag vakantie. Vandaag overstelpt met telefoontjes en gepraat. Veel voldoening dat mij de Sanders bokaal is ten deel gevallen voor de beste docent van het jaar! Nog even met Andries gepraat. Wil leesonderzoek met oogbewegingsregistratie gaan doen. Trekt mij wel aan. Tussen de bedrijven door nog even gewerkt aan verdere uitbreiding van de computer. Zeer onverantwoord, nu moet ik morgen vroeg op. Probeer “werken” te zien in neutrale “niet oordelen” mood. Lukt beter om me strak aan het schema te houden. Ook als je thuiskomt, gewoon doorgaan in “werkmood”, niet gaan oordelen of jezelf gaan beklagen etc. Toen ik vanmiddag thuiskwam zat Anne nog op het AMC. Gerry had er een gezellige puinhoop van gemaakt. Toch maar begonnen met eten koken. Je krijgt een zeker stressgevoel: “‘k Krijg het niet op tijd klaar!” Proberen vanaf te komen. Uiteindelijk liep alles toch goed. Anne kwam moe en bleek thuis. Had overgegeven en voelde zich dus opgelucht. De kleine kwam gelukkig ook wat meer tot leven. Anne op de bank gezet. Voor mij is het ‘t plezierigst als ze zich dan echt ontspant en niet meer uit schuldgevoel mee gaat regelen.
Wat zou ik graag willen leven volgens een paar eenvoudige principes: (1) je tijd besteden aan het nastreven van gekozen doelen; (2) geen tijd verliezen aan activiteiten waarvoor je niet gekozen hebt (computerzaken, t.v., etc); (3) werk en ontspanning goed verdelen; (4) veel lezen; (5) veel schrijven; (6) veel met de kinderen en met Anne optrekken; (7) muziek maken. Waarom lukt dit niet? Ik ben nu 39 en zou zo langzamerhand moeten weten hoe (1) en (2) gerealiseerd kunnen worden. Een paar complicerende factoren. (1) Ik houd te weinig rekening met mijn zwakheden. (2) Ik raak te zeer gedeprimeerd door mislukkingen en te weinig opgetogen door successen. (3) Ik ben te serieus, mis relativiteitszin en humor, geef te weinig plaats aan liefde als drijvende kracht. (4) Gebrek aan slaap en ontspanning verzwakken de positieve krachten en versterken de negatieve krachten. (5) Angst voor mislukkingen werkt vluchtreacties in de hand.

Ik ga me trainen op het volgende:

# Meer plaats voor liefde als sturende kracht.
# Geen tijd besteden aan nutteloze zaken.
# Humor en stengheid combineren.
# Voldoende gericht ontspanen.
"""Er bestaat maar één manier van werken: met vertrouwen in jezelf en de omgeving.

“Ver weg van U
is het geen leven,
U ontrouw zijn
is niemand zijn.”

Als je iets moeilijks doen moet, waarom zou je er dan niet enthousiast tegenaan gaan. Gebeuren moet het toch. Met een gedeprimeerde stemming gaat het gewoon veel moeilijker. Kom op, doorgaan. Laat je niet door kritiek uit het veld slaan. Blijf op je post. Kritiek van verwanten is nooit bedoeld om je persoon te ondermijnen. Vat het dan ook niet zo op. Welke wapenrusting vormt afdoende bescherming? Volgens Paulus is het de liefde, het vertrouwen in jezelf en je omgeving. Dat moet een plaats krijgen in je “read-only memory”. Het mag door niets en niemand uitgewist worden. Volgens mij beschikken mensen niet over een ROM-geheugen, ik althans niet. Ik zoek steeds naar dekking. Waar waar waar?

Gisteravond laat ruzie gekregen met Anne. Na haar driemaal “Je moet erom denken …”. Ik vond dat het moment van ontspanning voor het slapen gaan was aangebroken, zij niet. “Een beetje submanisch” (Dreesmann) blijven tot je elkaar welterusten gezegd hebt? Zodra de wekker gaat uit bed springen? Misschien is dat een betere bescherming. Kom op, doorgaan.
"""Ik zou toch wel een goede workaholic kunnen worden. Sta in deze week zonder kinderen (herfstvakantie bij opa & oma) en zonder Anne (op cursus in Hoensbroek) elke ochtend om 6 uur op en probeer van 7 tot 8 te werken. Ook gisteravond gewerkt. Bevalt prima. Krijg vandaag het enorme artikel over mentoraat en studievaardigheden af, een soort scriptie geworden. Wie zal het willen plaatsen?
Zondag twee zaken voor de radio gehoord: Tora kan een muur om je heen zijn. Is dat de muur die ik zoek? De voortdurende oriëntatie op Gods bedoelingen met de wereld. En ook: de afspraken die je met jezelf en anderen maakt als bescherming tegen wat Carmiggelt de verveling heeft genoemd. Ik heb nu een paar afspraken met mezelf lopen: niet roken, zo min mogelijk alcohol, weinig sex, weinig t.v. Ik houd me daar nu 10 dagen aan (!) en het bevalt goed. Het beschermt je tegen verspilling van lichaam en geest. Maar: raak je even los van je afspraken, dan is ook meteen het hek van de dam. Correctie na misstap is gewoon heel moeilijk.
Tweede boodschap zondag: vrome Joden werkten niet graag in loondienst  omdat dan niet je eigen werktijden kunt bepalen. De vrome Jood werkt net zo veel als nodig is om zich in leven te houden. De rest van de tijd besteedt hij aan de studie van de Tora. Dat is eigenlijk een heel mooie leefregel. En dan nu maar weer aan de slag.
Vaker in dit dagboek schrijven, dat zou al helpen. Een mooie preek van Ton Honig.

|<<ximg width:400px "/Dagboek/20021002 Ton Honig 1.jpg">>|<<ximg width:400px "/Dagboek/20021002 Ton Honig 2.jpg">>|

Spreekt me zeer aan. "Overweldigd door pijn, verdriet en vooral moedeloosheid". "Een woord van een vriend, muziek, een passage uit een boek". Iets wat de "verstarring en de ketens van mijn ego verbreekt". 

Dat had ik vanmiddag wel een beetje toen ik het stuk van Floortje van Liemt las in de NRC over haar ziekte, longkanker, en hoe ze ermee omging.

|<<ximg width:400px "/Dagboek/20211026 Floor van Liemt 1.jpeg">>|<<ximg width:600px "/Dagboek/20211026 Floor van Liemt 2.jpeg">>|
Op het vliegveld van Athene na een vlot tochtje van Leros naar hier. Gisteren grote verbazing op het vliegveld van Leros toen bleek dat we niet hadden geboekt op 25 maar op 26 september. Weer terug naar de boot, samen met Bart Boodt die net was aangekomen met het vliegtuig dat wij dachten terug te zullen nemen. Gisteravond gezellig gegeten bij Alani in Xirocampos. Vannacht met z’n vieren in de boot geslapen, Kees in het stuuhuis. Ging eigenlijk heel goed. Vanochtend met de auto naar Xirocampos gereden en de dag bij Tia en Hendrik doorgebracht, zodat Kees en Bart konden vertrekken richting Agathonisi en Samos. Eerst koffie, toen gezwommen en geluncht. Hendrik is jurist, heeft gewerkt als advocaat en later als jurist bij de NVJ en bij het GAK. Ook als rechter plaatsvervanger. Is nu 71.5 en sinds anderhalf jaar helemaal gestopt. Hendrik is erg handig en klust graag, ook op de boot. Ook een gezellige prater met vriendelijke pretoogjes. Tia is journalist en redacteur van Ouders van Nu geweest, waar ze werkte onder Rita Kohnstamm. Tia heeft veel humor, weet alles en heeft soms kapsones. Maar je kunt veel met haar lachen. Na de lunch hebben ze ons naar het vliegveld gebracht, bijzonder aardig.
Vandaag, Koningsdag 2021, een gezellige dag in Egmond, met Sara en Toon, Els en Ada. Heerlijk weer, stralende zon. Sara was helaas in een bedrukte stemming, die gelukkig in de loop van de dag wat minder werd. Ze had er een zware nachtdienst op zitten met totaal geflipte jonge vrouwen, leeftijdgenoten. Maar ze was ook somber over haar rol als moeder, haar ongeduld met Els, de moeite die ze soms heeft met haar schoonfamilie. Allemaal heel begrijpelijke gevoelens. Maar tegen mij zei ze gelukkig iets liefs over Ada, dat ze geen baby kende die zo veel lacht als Ada. Wat ook waar is. Nog even een paar foto's van vandaag.

<<ximg width:75% "/Foto's/20210427 Els en Ada in de bolderkar.jpg">>

<<ximg width:75% "/Foto's/29210427 Ada.jpg">>

<<ximg width:75% "/Foto's/20210427 Aan de lunch.jpg">>
"""Mijn bijdrage is klaar maar nog niet goed. Eerst commentaar van Hans en Leen afwachten. Vanmiddag stapte ik bij Sipke binnen om even wat te vragen over zijn afscheid. Hij begon opeens te praten over zijn eerste tijd aan de VU. Van ‘45 tot ‘47 assistent geweest op het LTP. Mensen testen. Wijngaarden was daar toen al de baas. Na zijn periode bij de luchtmacht (‘47 - ‘57) weer teruggekomen. Anecdotes over Waterink: zat altijd parallel naast bureau, sigaren rokend. Sketch bij afscheid W: liet zich “opbellen” door H.M. Liet de portier voor H.M. spelen. Naast Wat: Jansen de Jonge (psychiater) die ook experimentele psychologie in leeropdracht had, maar er niets aan deed. Liet informeren naar SF. Waterink liet SF begaan, was vriendelijk. Wel wat geschrokken over artikel over voorwetenschappelijkheid en de psychologie. Wijngaarden grote stimulans.
"Een innerlijke vrede, die alle begrip te boven gaat", schrijft Jan van Kilsdonk in 1980 in een preek over het sacrament. "Ieder die weet met welk een energie aan alle materie, met name aan brood en wijn, kontemplatie kan ontvonken, gaat niet anders om met de elementen van natuur en arbeid dan met de zorg, de aandacht en de sierlijkheid die zij verdienen. Riten, niet als middel tot communicatie met de Godheid maar als middel tot communicatie van mens tot mens waarin de verantwoordelijkheid van de een voor de ander, met name voor de weduwe, de wees en de vreemdeling zichtbaar wordt". Zo moge het zijn.
!!! Zesde vakantiedag
Vandaag is Jan Willem 80 jaar geworden! Beizen worden niet zo oud maar hij dus wel. Vanochtend even gebeld, goed om zijn stem te horen. 

Duik in het warme bad enigszins verstoord door aanwezigheid locals die ook nog eens een pomp aanzetten. Hopelijk morgenvroeg niet. Bij de koffie kwam Anna, vriendin uit Florence op bezoek. Thuis geluncht. Na de siësta naar de Abbadia San Salvatore. Prachtige Romaanse kerk met mooie krypte. Daarna nog een stuk door het bos gelopen. Omhoog naar een kapel en weer naar beneden. 

Vanavond gezellig op het terras van Café Centrale gezeten, genoten van het uitzicht, een lekkere papardelle gegeten en gelezen. 

<<ximg "/Foto's/IMG_20170627_174510.jpg">>
""" 8.10: aan het werk!
S.S.E.: Heytel 256940
Ter Linden en Heyer 262827
Martien
Frank
convocaat
Middernacht, Sara ligt net in bed, nog wat pruttelend. Ze vindt het niet leuk dat het licht al uit is. Wil graag nog een beetje rondkijken. Ze lacht enorm veel op 't ogenblik. 8.15: klaar om te beginnen met werken!
23.30 Het zit erop voor vandaag. Aan alle lopende zaken een uurtje gewerkt. Geeft je het gevoel veel gedaan te hebben. Hopelijk kan ik dit systeem de komende 14 dagen volhouden. Dan krijgen we het werk redelijk gedaan. Nog steeds veel moeite met het commentaar van Koops. Wat schrijft die man agressief! "Dit kan zo niet", etc. Oude schoolmeester als ik mij niet vergis. Probeer er het beste van te maken. Cathrien was vanmiddag enorm met Sara in de weer toen die in het wipstoeltje lag. Steeds de omslagdoek verleggen, over de beentjes, capuchon over het hoofd, speentje in de mond. Ze ging steeds op 't voeteneind zitten, zou het liefste bovenop Sara gaan liggen. Zeer enthousiast Wilde niet dat ik Sara op een gegeven moment in bed ging leggen. Saar liet het zich allemaal welgevallen. Vandaag overdag erg rustig, vanavond spoken. Ben benieuwd hoe het vannacht gaat. Afgelopen nacht om 4 uur wakker en de fles gegeven.
zich steeds beter op haar gemak te voelen. Anne vanavond naar de film! De nieuwe James Bond, samen met de fam. Klein. Ze knapt wonderbaarlijk snel op. Cathrien raakte vanmiddag geheel boven haar theewater toen ze Sara het speentje in mond mocht duwen terwijl Sara in het wipstoeltje lag. Vanavond was Bastiaans weer op t.v. Je zag een "sessie" met een "getraumatiseerde vrouw van ong. 52 jaar die een flinke dosis LSD kreeg. Ze werd erg angstig, probeerde af en toe haar hoofd op de schoot van een helpster te leggen maar kroop even later weer onrustig rond. Haar gedrag was heel goed invoelbaar. 't Leek alsof ze haar positieven niet helemaal kwijt was. Geen spoor van emotionele doorbraak o.i.d. Bastiaans benadrukte dat door angst gekwelde mensen gewoon liefde en warmte nodig hebben en dat therapeuten zonder een warm hart niet deugen. Daarin heeft hij gelijk lijkt me.
"""
Nog twee nachten op de Frans van Mierisstraat. Vandaag de promotie van Trinh. Ging goed. Borrel bij Céline Meulman was erg gezellig. Het komt goed. 
"""Cathrien oorpijn? Hopelijk valt het mee. Vanavond zei ze door de telefoon: “Tot zo”. Hopelijk kan Anne ‘t volhouden. Vanavond heel lekker gegeten op kosten van Tandy/Radio Shack, Dan Tanner. Grote serie lezingen, 13 stuks, ± 7 met interessante elementen. Bork probeerde weer eens in een half uur de revolutie te prediken. Het heeft iets cynisch, al is het ongetwijfeld goed bedoeld. Tussen de middag met Peter Weston geluncht. Hij zit op de wip: onderwijslink opgeven of overstappen naar een tijdelijke baan bij de LEA. Presentatie liep wel goed maar was te lang. Laatste lezing vandaag. We konden nog net in de bus springen. Weet nog niet wat ik morgen ga doen. Misschien een beetje sightseeing.
Gisteravond is ma bediend. Ontroerende bijeenkomst rond ma's bed. Iedereen erg overstuur. Alle kinderen en aanhang waren er, evenals de kleine Paul. Peter Dullaert deed het heel rustig en vriendelijk. Ma gaat erg achteruit, kan eigenlijk niet meer op haar benen staan. Maar ze blijft de moed erin houden en straalde na afloop van het bedienen. Het is een zinvol ritueel als begin van het afscheid. Anne is vanaf zondagavond in Deventer geweest en komt waarschijnlijk vanavond weer thuis, als de situatie niet ernstig verslechtert. Nu maar weer aan de slag.
Cathrien oorpijn? Hopelijk valt het mee. Vanavond zei ze voor de telefoon: "Tot zo". Hopelijk kan Anne 't volhouden. Vanavond heel lekker gegeten op kosten van Tandy/Radio Shack, Dan Tanner. Grote serie lezingen: 13 stuks &plusmn;7 met interessante elementen. Bork probeerde weer eens in een half uur de revolutie te prediken. Het heeft iets cynisch, al is het ongetwijfeld goed bedoeld. Tussen de middag met Peter Weston geluncht. Hij zit op de wip: onderwijslink opgeven of overstappen naar een tijdelijke baan bij de L.E.A. Presentatie liep wel goed maar was te lang. Laatste lezing vandaag. We konden nog net in de bus springen. Weet nog niet wat ik morgen ga doen. Misschien een beetje sightseeing.
<style>body {font-family: 'Ubuntu'; line-height: 130%; }</style>Toespraak bij het vijftigjarig huwelijksfeest van vader en moeder.

Er is bij diverse gelegenheden rond het vijftigjarig hwelijksfeest al het nodige gezegd. Maar omdat we hier in kleine kring door U alweer zo gastvrij onthaald worden wil ik de gelegenheid niet onbenut laten om U namens ons allen voor  het een en ander te bedanken.

Een van de bijzonderheden van dit soort feestelijkheden is dat je opeens weer nieuwe verhalen uit het verleden hoort. In het plakboek, dat Thole en Meindert zo consciëntieus hebben samengesteld, is bijvoorbeeld een karakteristieke foto van Vader te vinden, die, gezeten in een imposante leunstoel, geniet van een glas wijn en een geurige sigaar. Dezelfde bolknak was ook te zien op het filmpje waarin U tot ridder werd geslagen. Een verhaal, dat ik niet kende, was dat Moeder als meisje zo van snoepen hield en in de bakkerij wel eens een snelle duik in een van de trommels nam. Onlangs vertelde U dat U ooit eens een verboden bezoek aan de kermis bracht en dat Opa per eerstvolgende post een kaartje van een van de gemeenteleden ontving waarin afkeuring over Uw uitstapje werd uitgesproken. Opa's reactie was onverwacht, iets in de geest van "dan is hij er zelf ook geweest". Een hele opluchting voor U.

Het is in gereformeerde kring niet zo gebruikelijk om openlijk te genieten van het goede in het leven en van dit genieten een zekere levenskunst te maken. Toen ik voor het eerst in het katholieke milieu van de familie van Remmen kwam ontdekte ik dat de roomse traditie in dit opzicht rijker is dan de gereformeerde. Toch geloof ik dat het waarderen van zulke wereldse zaken als een glas wijn, een sigaar, een boek, muziek of een schilderij (om een paar van mijn persoonlijke voorkeuren te noemen) ook kan behoren tot de opdracht die je als mens probeert uit te voeren. Gelukkig zijn wij in dit opzicht, mede onder Groningse invloeden, niet al te sober opgevoed en hebben we dikwijls van elkaars gezelschap genoten bij een rijk voorziene dis, zoals ons ook vanavond weer ten deel is gevallen. 

De stelling dat de mens onbekwaam is tot enig goed en geneigd tot alle kwaad (zondag 3 van de Heidelbergse Catechismus) kan in die zin verkeerd opgevat worden dat je je erdoor weerhouden voelt om er openlijk voor uit te komen dat je geniet van het goede dat God je in elkaar schenkt. Er kan een andere misvatting uit voortkomen. Het kan je er ook van weerhouden om openlijk voor je zwakheden en beperkingen uit te komen. Ik bedoel niet dat iemand belijdt dat hij of zij een zondaar is maar dat je van elkaar en van jezelf aanvaardt dat je bepaalde dingen wel en andere dingen niet kunt, zoals bijvoorbeeld op tijd ergens aanwezig zijn, de tijd vergeten als je gezellig aan de praat bent, of juist het tegenovergestelde: de neiging hebben om de dag volgens een vast schema af te werken waarin ontbijt, middageten en avondeten op afgesproken tijdstippen plaatsvinden. Het aanvaarden dat je bent zoals je bent is de eerste stap naar het kunnen relativeren van jezelf en het afstand kunnen nemen van jezelf. Ik geloof dat wij Beizen daar geen van allen erg sterk in zijn. Misschien is dat ook voor Harry een groot probleem. Toch staat hierover in de Bijbel een onomwonden advies: "Want ieder, die zijn leven zal willen behouden, zal het verliezen, maar ieder, die zijn leven verloren heeft om Mijnentwil, die zal het vinden" (Mattheüs 16 : 25). 

Intussen ben ik via de koekjestrommel, de sigaar en het op tijd aan tafel komen enigszins afgedwaald van mijn oorspronkelijke stelling, dat je bij dit soort heuglijke gebeurtenissen steeds weer nieuwe verhalen hoort. Voor die verhalen ben ik U erg dankbaar, misschien nog meer dan voor het vorstelijk onthaal dat U ons in de Kempervennen en de Gelderblom hebt geboden. Er klinkt een citaat van Schillebeeckx in door:

"God is ieder ogenblik nieuw. Altijd bron van nieuwe mogelijkheid. Dat geldt met betrekking tot de geschiedenis, dat geldt ook als het gaat over het einde van de geschiedenis: God blijft ons overkomen. Ik denk, ook als we doodgaan. Hij is perspectief op een leven over de dood heen.
Ik zou het nog eens zo willen proberen te zeggen: God zelf is absolute vrijheid. En dat betekent dat, zolang de geschiedenis niet voleindigd is en de totaliteit van de geschiedenis nog niet gegegeven is, wij Gods wezen niet kennen: er steeds een meer, en dus openheid. En zelfs de totaliteit van de geschiedenis valt niet samen met Gods handelen, zij verwijst alleen naar de absolute bron van vrijheid. 
Trouwens, geen wezen gaat op in zijn handelen. Zo moeten we inderdaad zeggen dat God mysterie blijft en zich slechts in verhulling openbaart. Gods hart is groter dan de uitkomst van de geschiedenis. Dat is één der gronden waarop wij op een 'eeuwig leven' mogen hopen, waarin werkelijk 'iets nieuws' valt te beleven."
(Uit: God is ieder ogenblik nieuw, gesprekken met Edward Schillebeeckx door Huub Oosterhuis en Piet Hoogeveen. Baarn: Ambo, 1982). 

Dit kun je ook aan elkaar ervaren. Anne Carien plaatst mij in ieder gevakl dagelijks voor nieuwe verrassingen. Ik wil eindigen met de hoop uit te spreken dat wij nog lang nieuw voor elkaar blijven. 

Ermelo, 29 mei 1984.
Het probleem is dat wij allebei redelijk verwend zijn. Gisteravond de drie leerkrachten van Cathrien, Sara en Berend bezocht om de kerstrapporten in ontvangst te nemen. Ria vertelde dat Cathrien op school aan het veranderen is: ze  is niet meer zo gedwee en 
Goede voornemens voor dit jaar. Algemeen: meer lezen en schrijven. Meer werken vanuit zelfgekozen prioriteiten. Meer geduld. Meer relativeren. Wat het werk betreft: meerlezen en schrijven. Werkindeling: vastere indelingen: maandag en di-ochtend: PWN, di-middag: sectie, wo: lezen en schrijven, do: onderwijs, vrij: Rekenproject. Moeilijk te realiseren. Leen de Leeuw waarschuwde gisteravond voor overspanning. Dit soort planningen zouden daartegen kunnen helpen. Even nagaan wat de voornemens voor '88 waren:

* opruimen: lukt op 't ogenblik goed!
* plannen: idem!
* langzaam handelen: moeilijk te zeggen.
* schrijven: nog steeds moeilijk.
* het doel: nog steeds van belang, zie boven over zelf prioriteiten stellen.
* __werk delegeren__: probeer ik nu 's avonds voor te bereiden.
* __ps. 73__: nog steeds moeilijk, zie "lezen" hierboven.

Nog even de kinderen: Cathrien: vanmiddag voor 't eerst met haar naar 't Concertgebouw geweest. Ze zat vrij ademloos te kijken naar Isabella van Keulen die viool speelde. 'k Hoop dat het haar geïnspireerd heeft. Zondag komt Wenneke Savenije voor het eerst vioolles geven. C. is voortduren grapjes aan het maken, dansen en springen. Zeer uitgelaten vanwege logeren van Annemarie. Als ze iets niet mag begint ze soms wat aanstellerig: "Ik ben een beetje verdrietig ...".
Vandaag geen bijzonderheden. Bestand in Joegoslavië houdt stand. Winterweer. Goed viool gespeeld met Cathrien, boven op de studeerkamer. Piano verplaatsen?
Dolph Kohnstamm: Je moet solliciteren op de VU. Maakt het veel gemakkelijker om later hier hoogleraar te worden. Als Koops en Van Lieshout niet zeuren dat er een ontwikkelingspsycholoog op deze plaats moet komen. Hebben we meteen onze bezuinigingen binnen gehaald.
Nachtelijk getob. Gisteravond op de tv interviews van Coen Verbraak met achterblijvers, mensen die recent een geliefde hebben verloren. Een vrouw van wie de 51-jarige man in de nacht aan een hartaanval bezweek. De nacht ervoor benauwd geweest. Ik werd vannacht prompt wakker met een benauwd gevoel. Gewoon hyperventilatie, de hypochonder in mij. Ook een jonge vrouw die achter elkaar twee dochtertjes van enkele dagen oud verloor aan een fatale hartkwaal. Niet aan denken dat dat Cathrien en Jochem zou kunnen overkomen. 

Wat is rouwen, vroeg Coen Verbraak. Ik weet de antwoorden niet meer precies. Maar toch ook het omgekeerde van verliefd zijn: iemand anders beheerst volledig je gedachten en gevoelens. En ook: dat je nog steeds hoopt dat die ander gewoon weer thuis komt. 

Dat Anne om Vincent heeft gerouwd is duidelijk. Heel lang, omdat ze er thuis niet over kon praten. 

Rouw ik om Janny? Ik heb wel eens tegen mezelf gezegd dat ik het verlies van Janny en Jan niet gemakkelijk te boven zou komen. Nu het zover is merk ik die steen in mijn maag niet echt. Komt ook door de komst van Mercia. 

Kun je jezelf hullen in vriendelijkheid? Ik ga het eens proberen. Word je wel een saaie Piet van. Maar beter een vriendelijke saaie Piet, dan een brommende onberekenbare Piet. 
Eerst even roeien. Proberen om steeds eerst een taakje in te voeren en dan uit te voeren. Gisteravond met Berend een biertje gedronken. Hij zakte een beetje in tijdens zijn stage, signaleerde het tijdig bij zijn begeleiders en gaat nu twee dagen naar Nijmegen en één dag naar de VU. Goeie actie. Berend kondigde aan dat Sietske en hij later wel gaan trouwen. We vroegen ons af hoe Cathrien en Jochem dat nu gaan doen.  
 
Twee mooie dingen in de krant vanochtend. Remco Campert op de vraag wanneer hij voor het laatst hoop had gevoeld. Vanochtend nog,  bij het opstaan. Weer een nieuwe dag. En in Trouw mooie voorbeelden van denktrainingen voor pubers.  Even aan Harry sturen.  
 
Het wordt vandaag een prachtige zonnige meidag.  
"""Waar blijft de tijd?? Vanavond de sleutels van het tentamen Inleiding Psychologie op schijf gezet en 100 Italiaanse woordjes ingetypt. Nu is het 10 over 10. Gauw de fles aan voor Sara. Weinig tijd om te schrijven. Toch strakker de hand aan houden, zoals aan zoveel afspraken. Moeilijk, moeilijk. Vandaag op en neer naar Cals College (evenals gisteren). Morgen op en neer naar Zutphen. Werkt erg versnipperend. Als ik enigszins uitgeput thuiskom kost het me wel eens moeite om enthousiast te reageren op Cathriens geratel. Wat een gezeur over details, hoe zit het met de grote lijnen? Op ‘t ogenblik lichtelijk uit het vizier. Je zou willen … Vandaag handtekening gezet onder beoordeling ten behoeve van bevordering tot uhd. Ben benieuwd. Sipkes brief was nogal dwingend gesteld. Z’n laatste acties waren vooral voorstellen tot bevordering! Nog een gunstig bericht: Stichting Leerhuis en Liturgie gaat 60.000 huur betalen! Dan heb ik mijn schaapjes als penningmeester toch nog redelijk op het droge. Nu de Populier/Balie nog. Ik ga Sara de fles geven en nog even lezen in Primo Levi’s “Se questo è un’ uomo” (in het Engels). Moet we wel weer in ‘t Italiaans inwerken! Valt nog niet mee. Morgen: Harry bellen, brief Weston en Gandilhon!
Gisteravond voelde Anne en bobbeltje in haar linkerborst. Ze vraagt vandaag advies aan een arts in het AMC. Hoewel er geen enkele reden is om in paniek te raken slaat de schrik je wel om het hart. Je gedachten vliegen alle kanten uit. Als de zaken een kwade keer nemen zal er een groot beroep op mijn dienstvaardigheid worden gedaan. Het is misschien niet zo gek om vast eens wat te gaan oefenen.  Zo vanzelf gaat dat bij mij allemaal niet. 

Gisteravond bij het uitkleden haalde Cathrien een paar schoenen uit haar slaapkamerkast. Ze bleken nog te groot te zijn en Anne zei: zet ze maar terug in de kast. Daar had Cathrien geen zin in. Veel commentaar van "Ik moet altijd alles alleen doen". We hebben voet bij stuk gehouden en uiteindelijk heeft ze de schoenen terug gezet. Ik heb haar geprobeerd uit te leggen dat we elkaar helpen bij het opruimen, zodat we niet lang hoeven te zoeken naar alle spullen. Hopelijk heeft Cathrien het begrepen.

Berend heeft gisteren zijn eerste stapjes gezet. Waggelend en met veel geschater, maar toch!

Zou Berends (te) vroege komst problemen met Annes gezondheid hebben veroorzaakt? Niet over speculeren. Eerst de feiten onder ogen zien.
<<ximg wisth:80% "/Dagboek/20061003 Dagboek.png">>
Trein, ochtend. Cathrien prachtig paasrapport! Vreemd genoeg kleine dip bij hoofdrekenen en tafels. Nog maar eens goed oefenen, ook  met de Mac. Sara kreeg van de juffrouw een prachtige mondelinge beoordeling. Werkt goed en zelfstandig, komt goed los in de klas. Is voor Eva een beetje te goeïig. Mocht met de klok op het schoolplein luiden en gaf de klok aan Eva. Berend: geen problemen. Alle vragen op Loes'rapport positief beaantwoord. Berend houdt erg van praten en komt daardoor wel eens wat achterop. Verder alles o.k. <p>
Balen: twee slecht geschreven scripties tegelijk om te beoordelen. Zeer tijdrovend. Positief: vandaag themacursus.  Vanochtend redelijk op tijd. Kan nog beter. 
Vandaag een mooie dag in Egmond, zonnig en zeer aangename temperatuur. Veel vogels gehoord, o.a. de merel, de tjiftjaf, de heggenmus, de kneu, het roodborstje en twee puttertjes. Gespot met de Birdnet app op de telefoon, zeer handig! 

Vanavond gezoomd met de kinderen, voor het eerst. Zaken over Egmond besproken, o.a. hoe het huisje aan de kinderen overgedragen kan worden. De eerste voorbereidingen voor het leven na de ouders!

Morgen oppassen op Franca en Mercia. En testen op corona, voor het eerst. 
HM 51. De twee oorlogsmisdadigers Fischer en Aus der Fünten vrijgelaten uit de gevangenis van Breda. Alleen van de Broek (min. BZ) gaat naar begrafenis Hirohito in Japan. Nog meer nieuws? Cathrien heeft de waterpokken gehad. Wij
<<ximg width:% "/Dagboek/19950131 Briefje Sara.jpg">>

Vandaag is niet alleen H.M. maar ook José jarig. In Limburg en in het Land van Maas en Waal grote consternatie vanwege dreigende overstromingen. Zo’n 100.000 mensen zijn intussen geëvacueerd, huis en haard achterlatend. Hoge stand van de rivieren kan wel een week duren. Ook in Egmond staat het water erg hoog, tot halverwege de trottoirbanden waarop het huisje staat. Zaterdag de nieuwe pomp aangesloten. Werkte wel maar sloeg nog niet af vanwege teveel lucht aanzuigen. In AIO-aanvraag van Kerkhof en Van Egmond wordt verband gelegd tussen suïcide-negingen bij ouderen en hun zelfbeeld. Hoe negatiever, hoe depressiever, etc. Volgend Bandura is zelfvertrouwen een belangrijker succespredictor dan de gehanteerde probleemoplossingsstrategieën. Opmerkelijke uitspraak, niet onbelangrijk voor onze cursus Studievaardigheden.

𝗕𝗲𝗿𝗲𝗻𝗱
Berend doet het heel goed op de gitaarles. Hij leert zijn eerste liedje: Vader Jacob. Speelt trouw elke avond en elke morgen: “vallen” en tokkelen.

𝗦𝗮𝗿𝗮
Saar stond vanavond ineens met tranen in de ogen beneden: vanmiddag vergeten te vegen in de klas. We hebben het op haar hand geschreven. Kan ze het morgen weer goed maken. Sara schreef op mijn hand: viool speelen!
Een verhaaltje dat Sara op school schreef: “Ik voel me veilig als bij papa op schoot zit. Ik voel me veilig als papa mij voor leest. Voel jij je veilig op school? ja omdat het leuk is. Voel jij je veilig in deze groep? ja omdat ik veel vriendinnen heb.”

𝗖𝗮𝘁𝗵𝗿𝗶𝗲𝗻
Cathrien gaat morgen naar de huidarts in verband met het kale plekje op haar hoofd. Verder geen bijzonderheden. Ze is zaterdag begonnen met het schrijven van een verhaal: “Het nieuwe meisje”. We mogen het niet lezen. Cathrien moest gisteren huilen bij het idee dat ze groot wordt. “Ik wil niet groot worden. Ik wil niet op kamers gaan wonen.”
<<ximg width:80% "/Dagboek/20070731 Dagboek.jpg">>
<<ximg width:100% "/Dagboek/20070731 01 Ingmar Bergman.jpg">>
<<ximg width:100% "/Dagboek/20070731 02 Ingmar Bergman.jpg">>
<<ximg width:100% "/Dagboek/20070731 03 Ingmar Bergman.jpg">>
"""
Veertig jaar! Vandaag een wandeling gemaakt van Fiesole naar Settignano. Mooie over de Monte Ceceri. Raakten helaas het spoor eniszins bijster maar kwamen na drie uur (gepland 1 uur en drie kwartie) op de eindbestemming aan. Daar heel lekker geluncht op het dorpsplein en met de bus weer naar het Piazza San Marco. Vanavond uit eten in Oltrarno. 
"""8.15 klaar voor de start.<br>Proberen om zoveel mogelijk uit deze dag te halen!<br>12:20 Sara heeft lekker gepoept en ligt ontspannen in bed. Anne heeft de kogelvormige krulstaartjes (?), een kleine doch talrijke familie insecten, al redelijk verdelgd. Ze zaten op de trapleuning op zolder en op de vloer van de zoldergang en -trap. 't Gezelschap gebruikte de trapleuning als wandelpad en begon en masse af te dalen. Anne sloeg de schrik om het hart, dweilen (samen met Cathrien die het reuze leuk vond), stofzuigen en de flitspuit. Gerry en Cathrien hebben vanochtend een potje gevuld met de kleine mormels aan een meneer van de gemeente laten zien. Hij heeft ze geïdentificeerd. Ze komen uit de algen op het dak. Anne heeft meteen een bestrijdingsmiddel op de Singel gekocht. Ze wil er vanaf zijn voor we vertrekken. Nog 3 dagen! Hoera en help. Wordt nog een nachtje doorwerken vrees ik. 
!!! Dertiende vakantiedag
De dag weer met zwemmen begonnen. Na een snel ontbijt naar Arezzo waar we al om 10 uur bij Café dei Costanti aan de koffie zaten. 

<<ximg "/Foto's/20170704 café dei costanti.jpg" width:400px>>

Vervolgens de prachtige freschi van Piero della Francesca in de San Francesco bewonderd. Daarna zijn de dames aan het winkelen geslagen en heb ik rondje gelopen bovenlangs, park en Duomo en terug via de mooie Romaanse Santa Maria delle Pieve naar café Vasari aan het grote plein. 

Geluncht in een klein tentje met heerlijke bruschettes. Om drie uur weer thuis. 
"""Inderdaad een lange nacht geworden. Het is nu ½9 in Amsterdam, ½2 in de nacht hier. Prachtige hotelkamer op de 14e verdieping. Veel te zien maar ‘k weet nog niet wat het is. Frances is hier ook. Verblijf op vliegveld New York duurde erg lang. Uiteindelijk van 2 tot 7 uur. Constante herrie van veel mensen is toch vermoeiend. Op een gegeven moment kwam er in de wachtruimte een klein elegant vrouwtje met een baby’tje naast me zitten. Ik hielp ze even en raakte aan de praat. Een Française, getrouwd met een Amerikaan in Philadelphia. Ze kon nog niet erg wennen aan de Amerikaanse way of life. Was met haar 5 maanden oude zoontje Kevin naar Parijs geweest om haar moeder te begraven die aan kanker was overleden. Nu op terugweg. De moeder ging even wat navragen bij de check-in balie. Ik met de kleine op de arm! ‘k Liet haar de foto’s van Saar en Cathrien zien. Ze vroeg of ik ze al miste. De spijker op de kop.

New Orleans is een heel bijzondere stad. De huizen in het French Quarter zien er heel Europees uit. Veel antiekwinkels, cafés, restaurants. Het was vandaag snikheet, zeker 30°. Vanochtend op instigatie van Frances een georganiseerde rondwandeling gemaakt na een gezellig ontbijt in een “Franse” broodjeszaak. Tussen de middag naar huis gebeld. Gelukkig was alles goed. Cathrien geniet van Thijs. Van de conferentie vanmiddag nog niet veel opgestoken. Gigantische zalen in de Sheraton en Marriott hotels. Toch is het aantal deelnemers aanzienlijk groter dan het aantal aanwezigen doet vermoeden. Vandaag gegeten met Tobin, Marco Murray en Frances. Daarna receptie. Nu moe. Slapen.
"""Vraag aan Berend: in welke hoek speel je ‘t liefst? De poppenhoek!
Tanker met 80.000 ton olie breekt op Shetland Eilanden.
"""
16:38 	In de trein op weg naar Amsterdam, voor de Nieuwjaarsborrel van het Ignatius gymnasium. Zojuist weggelopen uit het gezelschap van vier luidruchtige Surinaamse types, met wie ik als enige in een coupé kwam te zitten. De krant staat vol van twijfel bij de publieke opinie over ons rechtssysteem. Ik voelde me even onveilig. Toch in het vervolg geen lege coupés meer uitkiezen.
Dromen .... Portugal, een goed college geven. Met Paul praten over samenwerking.
| <<ximg "/Foto's/2021 pasen 5.jpg ">> | <<ximg  "/Foto's/2021 pasen 4.jpg ">> |
| <<ximg "/Foto's/2021 pasen 1.jpg ">> | <<ximg "/Foto's/2021 pasen 2.jpg ">> |
| <<ximg "/Foto's/2021 pasen 3.jpg ">> ||

Foto's van twee gezellige paasdagen. Eerste Paasdag kwamen Sara en Toon met Eks en Ada naar Noord. Tweede Paasdag gingen wij naar Cathrien en Jochem, Mercia en Franca.
Vandaag  wordt Anne-Carien 62! In ons  nieuwe  huis!  Weliswaar nog overal dozen maar toch een begin  van orde en gezelligheid.  Het vriest op het ogenblik 's nachts  matig.  Gisteren na veel gehannes het modem  aan de praat gekregen.  Zelfs de vaste telefoon doet het weer.  Zou goed zijn als we een beetje in de kerstsfeer zouden raken.  
<<ximg "/Dagboek/20070807 Dagboek.png">>
!!! Vierde vakantiedag

 Vandaag gaan we naar Ascoli Piceno, na de lunch. Vanochtend even studeren in het mooie essay over Iris Murdoch en 10 blz. lezen in Tolstoi, het verhaal over Luzern. Ook nog even naar het dorp voor brood en yoghurt.

Ascoli Piceno was weer mooi! Gezellige drukte op het Piazza del Populo aan het eind van de middag. Zelfs de rondfietsende kinderen waren er. Tijd voor een campari en een lekker Messina biertje. Met daarbij de lokale lekkernij: Olive Ascolane, een olijf in een gefrituurd jasje. 

|<<ximg width:% "/Foto's/2021 Italië/0907 Olive Ascolane.jpg">>|<<ximg width:% "/Foto's/2021 Italië/0907 Ascoli Piceno Piazza del Populo 1.jpg">>|
|<<ximg width:% "/Foto's/2021 Italië/0907 Ascoli Piceno Piazza del Populo 2.jpg">>|<<ximg width:% "/Foto's/2021 Italië/0907 Ascoli Piceno Piazza del Populo 3.jpg">>|
|borderless|k
Er moet altijd iets van jezelf uitgaan naar anderen, in positieve zin. Maar weer moedig voorwaarts.
"""Nog iets geleerd vandaag? De verhouding tussen werk en thuis blijft een probleem, dat is me nu wel duidelijk geworden. Eigenlijk wil ik 40 uur/week op de VU aanwezig zijn. Niet echt structureel wegblijven. Vind het werk belangrijk en wil er met enthousiasme mee bezig zijn. Tegelijk is gezin belangrijk. Wil goede band met Sara krijgen, Cathrien supporten evenals Anne. Een beetje inspiratie geven. Moeilijk te combineren zeker als de vrijdagmiddag opgeofferd moet worden. Ook moeilijk bespreekbaar. Ik heb de argumenten nog niet op een rijtje.

Verder vanavond bij de balletvoorstelling onder de indruk geraakt van de zelfbeheersing van Clint Farha. Elke beweging met zorg gemaakt. Zeer sierlijk geïnspireerd. Gaat ongetwijfeld een lange periode van training aan vooraf. Een talent om zo in de beweging op te gaan.

Vanmiddag in subsidie-aanvragen voor Psychon voor het eerst Sanders’ cognitief-energetisch model tegengekomen. Moet er meer over aan de weet komen. Morgen een pittige dag. Onderzoeksstramien voor de onderzoekskern rond krijgen. Zal moeizame discussie worden. Kom op, doorgaan!
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum risus est, vitae ultrices tortor pretium quis. Nam condimentum vehicula auctor. Nulla nibh arcu, accumsan vel faucibus vitae, accumsan eget ante. Ut lacinia iaculis rhoncus. Cras ut diam lacinia, tincidunt lectus nec, pretium magna. Aliquam rutrum mollis lacus. In aliquam varius ipsum, semper dapibus lectus hendrerit at. Aenean nec odio facilisis, consequat dui sit amet, lobortis lacus. Duis sed purus eu felis interdum tempor.<p>

Sed nec justo consectetur, fringilla orci sed, vehicula elit. Aliquam rutrum tempor ullamcorper. Fusce dictum nibh nec lacus volutpat, vitae porttitor metus porta. Donec vel felis ac elit ultricies gravida. Nullam aliquet tincidunt tortor, sed feugiat tellus placerat sit amet. Integer tincidunt nulla dolor, vitae mollis felis tempus et. Nulla facilisi. Nulla vitae leo mauris. Mauris lobortis lorem non dui pretium, vitae varius mauris sodales. Fusce tempus sapien quis augue semper, vitae tristique purus varius. Duis eu justo nec nulla semper mattis vel eget lorem. Quisque nec facilisis lorem, a scelerisque leo. Donec vitae rhoncus tellus. Nulla elementum nibh tortor, sit amet maximus felis congue id.

Vivamus lacus enim, ullamcorper vitae feugiat id, auctor in nunc. Praesent id porttitor massa. Sed luctus iaculis nisl volutpat viverra. Duis nisi sapien, iaculis quis varius vel, tempor sed diam. Donec sed placerat tellus. Proin porttitor lorem vitae congue viverra. Quisque suscipit eros leo, id elementum ipsum pulvinar et. Aliquam rutrum sem a dui eleifend, a ornare sapien ultricies. Donec semper elit quis est condimentum pulvinar. Mauris ligula nisl, molestie ac lacinia vitae, fermentum quis purus. Duis quis ante eros.

Suspendisse nec egestas est, at pellentesque lectus. Suspendisse dignissim gravida ligula, sit amet aliquet nibh dignissim varius. Maecenas non orci nec enim posuere porttitor in sit amet urna. Vivamus condimentum varius neque, nec lobortis mi blandit ac. Praesent ac luctus nibh. Praesent accumsan sapien vitae dui congue, sodales mollis purus semper. Duis pellentesque ante sed dolor volutpat feugiat. Aliquam ac dolor vel quam sagittis maximus a vel tellus. Sed mattis faucibus ex id scelerisque. Maecenas lobortis massa a sodales blandit. Quisque lacinia posuere condimentum.

Donec maximus quam eu elit mollis, non bibendum nibh facilisis. Fusce sapien erat, efficitur sed lorem eu, pretium luctus elit. Praesent volutpat diam eu pretium euismod. Nunc eget facilisis arcu, non pharetra mi. Aliquam in iaculis nibh, at ullamcorper justo. Fusce vitae nunc nisi. Nullam sapien sem, rutrum nec mi a, commodo efficitur augue. Cras nec maximus justo, in pulvinar tellus. Sed tincidunt, lacus sed sollicitudin rutrum, purus odio facilisis ex, ut egestas sapien odio id diam. Ut condimentum leo finibus ligula hendrerit, vel aliquet odio faucibus. Donec et massa dolor.
''Bericht aan Riekeld''

Nieuwe leesclub: De Pest van Camus

Op woensdag 21 april, van 20.00 tot 21.30 uur, bespreken we De Pest van Albert Camus, verschenen in 1947. Het boek beschrijft een (fictieve) uitbraak van de pest die de Noord-Algerijnse stad Oran een jaar lang in zijn greep houdt. Het gaat vooral over de ervaringen en reflecties van de arts Bernard Rieux, en over de verwoede strijd die hij samen met collega's en vrienden tegen de verschrikkingen van de ziekte voert. Er komen thema's aan de orde zoals leven en dood, God en de pandemie, hoe houd je stand in een absurde wereld. Allemaal uiterst actueel! Geef je uiterlijk maandag 19 april op bij secretariaat@ekklesia.nl. Je krijgt dan een link naar een serie videoclips met een kleine cursus over Camus en de Pest, gemaakt door Jos Beishuizen. Verder ontvang je enkele fragmenten uit het boek, waarover we met elkaar gaan spreken. Jos Beishuizen geeft een korte voordracht en leidt de gesprekken. 

''Bericht aan Tineke''

Voorbereiding op de bespreking van De Pest van Albert Camus

Het boek De Pest van Albert Camus verscheen in 1947 en beschrijft de (fictieve) uitbraak van een pestepidemie in de Noord-Algerijnse stad Oran. Verteller en hoofdpersoon is de arts Bernard Rieux die met zijn collega's een verwoede strijd voert tegen de verschrikkingen van de epidemie. Zijn verhalen en bespiegelingen vormen de kern van het boek. 

Ter voorbereiding heb ik een kleine cursus over Albert Camus samengesteld. Ik bespreek zijn levensloop, zijn filosofie en natuurlijk het boek De Pest. Tenslotte geef ik mijn eigen waardering van het boek weer. Dat zou een mooi vertrekpunt voor de bespreking kunnen zijn. De cursus bestaat uit een aantal videoclips die je een voor een kunt aanklikken en bekijken.


Camus 1 Intro: https://bit.ly/329JyE3
Camus 2 Levensloop a Jeugd: https://bit.ly/2PY85sY
Camus 2 Levensloop b Dertiger Jaren: https://bit.ly/3a8KnRG
Camus 2 Levensloop c Le Chambon: https://bit.ly/2QgpEEx
Camus 2 Levensloop d Parijs in de oorlog: https://bit.ly/3g8mP3h
Camus 2 Levensloop e Na de Oorlog: https://bit.ly/2OKfpYG
Camus 3 Filosofie: https://bit.ly/3g6zwvk
Camus 4 La Peste: https://bit.ly/3tmge9m
Camus 5 Mijn waardering: https://bit.ly/3dWAVCg

Op de volgende bladzijden vind je drie fragmenten uit het boek, die hopelijk naar meer smaken!

Fragment 1: Start, begin van de epidemie
Fragment 2: De preek van pater Paneloux
Fragment 3: De dood van het zoontje van rechter Othon, en het gesprek tussen Rieux en Paneloux na afloop

Fragmenten 2 en 3 vormen een goede inleiding op het thema "God en pandemie", vragen over de zin van het pandemie, de bedoeling die God ermee heeft, en hoe we betekenis geven aan de verschrikkingen van de pandemie. 

Graag tot woensdag, ik hoop op een inspirerende avond!

Jos Beishuizen

""" Collectieve emoties: geel
Paneloux: rood
Leven en dood in de stad: groen
Reflecties van Rieux: blauw

20-04-2021 
Boek uitlezen

Prachtig citaat:
Hij wist wat zijn moeder dacht en hoeveel ze op dat moment van hem hield. Maar hij wist ook dat de liefde voor een medemens niet veel om het lijf heeft, of althans dat een liefde nooit sterk genoeg is om in de juiste woorden uitgedrukt te worden. Zo zouden hij en zijn moeder altijd woordloos van elkaar houden. En zij zou op haar beurt sterven – of hij – zonder dat ze ooit in hun leven hun innige verbondenheid duidelijker onder woorden hadden gebracht. Op dezelfde manier had hij naast Tarrou geleefd, die die middag overleden was zonder dat hun vriendschap de tijd had gehad om werkelijk beleefd te worden. Tarrou had, in zijn eigen woorden, het spel verloren. Maar hij, Rieux, wat had hij gewonnen? Zijn enige winst was dat hij de pest had gekend en zich die zou herinneren, dat hij de vriendschap had gekend en zich die zou herinneren, dat hij nu innige verbondenheid kende, die hij zich ooit zou herinneren. Al wat de mens kon winnen bij het spel van de pest en van het leven, was kennis en herinnering. Misschien was dat wat Tarrou verstond onder ‘het spel winnen’!

Ja, hij zou wat gaan uitrusten, daarginds. Waarom niet? Ook dat zou weer een aanleiding worden voor herinneringen. Maar als het daarom draaide bij het winnen van het spel, wat moest het dan zwaar zijn om enkel en alleen te leven met je kennis en je herinneringen en zonder hoop. Zo had Tarrou waarschijnlijk geleefd, en hij had beseft hoe onvruchtbaar een leven zonder illusies is. Vrede zonder hoop bestaat niet, en Tarrou, die de mens het recht ontzegde om wie dan ook te veroordelen, die niettemin wist dat een mens het veroordelen niet kan vermijden en dat zelfs slachtoffers soms tot beulen worden, Tarrou was zijn leven lang innerlijk verscheurd geweest en in tegenspraak met zichzelf, hij had nooit hoop gekend. Was dat de reden dat hij naar heiligheid had gestreefd en vrede had gezocht in het helpen van zijn medemens? Eigenlijk had Rieux geen idee, en het deed er niet zoveel toe. De enige beelden van Tarrou die hem zouden bijblijven waren dat van een man die het stuur van zijn auto stevig vastgreep om hem ergens heen te rijden, en dat van het zware, nu roerloos uitgestrekte lichaam. De warmte van een leven en een beeld van de dood, zoveel wist hij.

zodat hij heel eenvoudig kon doorgeven wat je van plagen kunt leren, namelijk dat er in de mens meer te bewonderen dan te verachten valt.

21-04-21

Argumenten voor hoop stelling.

https://iai.tv/articles/hope-hidden-by-plague-auid-1446

De pest lijkt nooit op te houden. Een van de wachtposten: geef mij maar een stevige aardbeving. 

Mensen verliezen hun geliefden. Mensen zien hun geliefden niet meer. De eenvoudigste pleziertjes van het leven, zoals het strand en de zee, worden verboden. De pandemie maakt het leven monotoon. 

Eerst is er wanhoop, als het verlies en het gemis nog pijn doen. Daarna wordt wanhoop een gewoonte, als de herinnering aan je geliefde verbleekt. Mensen worden doelloos dwalende schimmen.

Dus: probeer de herinnering levend te houden. Probeer de liefde levend te houden. Voorbeeld: de journalist Rambert. Blijf de werkelijkheid onder ogen zien. Het universum zwijgt, de mens is niet langer de maat der dingen. Bescheidenheid past ons. Dokter Rieux helpt zijn patiënten in hun strijd tegen het onvermijdelijke, de dood. <geel>Juist door de absurde werkelijkheid te aanvaarden kan de hoop op een betere toekomst blijven leven. </geel>

Argumenten voor de stelling dat het leven absurd is.

Argumenten voor de stelling dat er altijd ruimte is om te kiezen.

https://www.sparknotes.com/lit/plague/section9/

The central irony in The Plague lies in Camus' treatment of "freedom." The citizens of Oran become prisoners of the plague when their city falls under total quarantine, but it is questionable whether they were really "free" before the plague. Their lives were strictly regimented by an unconscious enslavement to their habits. Moreover, it is questionable whether they were really alive. It is only when they are separated by quarantine from their friends, lovers and families that they most intensively love them. Before, they simply took their loved ones for granted.

Camus' philosophy is an amalgam of existentialism and humanism. An atheist, Camus did not believe that death, suffering, and human existence had any intrinsic moral or rational meaning. Because he did not believe in God or an afterlife, Camus held that human beings, as mortals, live under an inexplicable, irrational, completely absurd death sentence. Nevertheless, Camus did believe that people are capable of giving their lives meaning. The most meaningful action within the context of Camus' philosophy is to choose to fight death and suffering.

In the early days of the epidemic, the citizens of Oran are indifferent to one another's suffering because each person is selfishly convinced that his or her pain is unique compared to "common" suffering. When the epidemic wears on for months, many of Oran's citizens rise above themselves by joining the anti-plague effort. The recognition of the plague as a collective concern allows them to break the gap of alienation that has characterized their existence. Thus, they give meaning to their lives because they chose to rebel against death. Fleeing the city or otherwise avoiding the anti-plague effort is tantamount to surrendering to the absurd death sentence under which every human being lives.

Just as any rebellion against death and suffering is ultimately futile, so do the anti-plague efforts seem to make little difference in the relentless progress of the epidemic. However, Camus' novel declares that this rebellion is nonetheless a noble, meaningful struggle even if it means facing never-ending defeat. In this way, The Plague is infused with Camus' belief in the value of optimism in times of hopelessness. Everyone who chooses to fight the plague, to rebel against death, knows that their efforts increase their chances of contracting the plague, but they also realize they could contract the plague if they did nothing at all. In the face of such a seemingly meaningless choice, between death and death, the fact that they make a choice to act and fight for themselves and their community becomes even more meaningful; it is a note of defiance thrown against the wind, but that note is the only thing through which someone can define himself
We gaan eerst de fragmenten op een rijtje zetten in Open Shot Video Editor.
OK, dat loopt nu. Toch 1 uur en 40 minuten. We gaan nu de fragmenten apart opnieuw op youtube zetten. Daar gaat-ie. Dit rustig laten doorlopen. 

Het lijstje
"""

Camus 1 Intro 2: https://www.youtube.com/watch?v=NTPCEBHUZGg
Camus 2 Levensloop a Jeugd: https://www.youtube.com/watch?v=T6E8-Wb8kto
Camus 2 Levensloop b Dertiger Jaren: https://www.youtube.com/watch?v=fkHuhaET6Nc
Camus 2 Levensloop c Le Chambon: https://www.youtube.com/watch?v=rjAPzo-vHis
Camus 2 Levensloop d Parijs in de oorlog: https://www.youtube.com/watch?v=-3Ax_Dmc5zY
Camus 2 Levensloop e Na de Oorlog: https://www.youtube.com/watch?v=-fde2ucHQXc
Camus 3 Filosofie 2: https://www.youtube.com/watch?v=7OgkLC0c9XU
Camus 4 La Peste 2: https://www.youtube.com/watch?v=DMFIqQrIRks
Camus 5 Mijn waardering: https://www.youtube.com/watch?v=RdZVW9kYnjU

Eerste avond in Amsterdam Noord. Voor Anne een heel pittige dag. Ik moest de ICO  introcursus geven, kon er dus helaas niet bij zijn.  Vanochtend om 8 uur draaide de vrachtwagen met de container de straat in. Lift naar de zevende etage. Na een half uur kwamen de eerste dozen naar boven. Toevallig zat daarbij het lampje in de vorm van boeket dat in de voorkamer hing. Kon ik nog net in de hal ophangen voor ik naar Utrecht moest. Berend kwam om te helpen, net als Thole even later. Geweldige steun. Vanavond bij Ewald en Margriet gegeten, heel gezellig ook al gooide Liz per abuis haar drie dagen oude iphone in de wc.
"""
Begin van een spannend jaar, zo voelt het wel. Spannend vanwege pensioen en vanwege het nieuwe huis. Ben eigenlijk geen idee wat de toekomst gaat brengen. Vertrouwen hebben is een deel van beter leven. Geen ledigheid is ook een deel van beter leven. Een glimlach naar jezelf en anderen is ook een deel van beter leven. Die glimlach betekent zoveel: warmte, zijn in het hier en nu, losmaking. 

Gisteren meegeholpen met het verhuizen van Cathrien en Jochem. Ze zitten heerlijk in hun nieuwe huis in de Schweigmannstraat. Slapen er nu vast heerlijk hun eerste nacht. 

Gisteravond oud en nieuw gevierd bij Dirk en Elzemien. Samen met Daan en Marijke en Ido en Willy. Erg gezellig. Weer eens ouderwets het woordenboekspel gedaan. En geklaverjast.
"""
We wonen vandaag precies een half jaar in Noord. Een prima half jaar geweest, al begon het met het overlijden van Janny. Maar ook met de geboorte van Mercia. We hebben ons 40-jarig huwelijk gevierd. En veel en vaak van Mercia genoten. Nog een mooie tekst van Hannah Arendt. 

Lieve Cathrien en Jochem,

Al lezend in het boek "Tijd" van Rüdiger Safranski (van Daan en Jaap gekregen bij ons 40-jarig feestje) kwam ik een citaat tegen uit The Human Condition van Hannah Arendt. Ze schrijft (p. 247):

The miracle that saves the world, the realm of human affairs, from its normal, "natural" ruin is ultimately the fact of natality, in which the faculty of action is ontologically rooted. It is, in other words, the birth of new men and the new beginning, the action they are capable of by virtue of being born. Only the full experience of this capacity can bestow upon human affaires faith and hope, those two essential chracteristics of human existence which Greek antiquity ignored altogether, discounting the keeping of faith as a very uncommon and not too important virtue and counting hope among the evils of illusion in Pandora's box. It is this faith in and hope for the world that found perhaps its most glorious and most succinct expression in the few words with which the Gospels announced their "glad tidings": "A child has been born unto us."

Mooie tekst! Deed mij erg aan Mercia denken. Als je haar zo nieuwsgierig en onderzoekend ziet rondkijken, zo rustig vanuit een gevoel van vertrouwen, veiligheid, geborgenheid, dan geeft dat toch wel veel hoop voor de toekomst. "Het wonder dat de wereld redt" is wel een groot woord, maar het is toch wel de basis van mijn geloof in en hoop voor de toekomst.

Liefs en groeten, Jos
't Begint nu toch wel te spannen. De kleine gaat erg tekeer in Anne's buik. Hopelijk geen slecht voorteken. Hoewel het niets toe of af doet aan de de loop der dingen maak ik me nu toch erg bezorgd over de goede afloop. Zal de bevalling zonder complicaties verlopen? Zal het kindje gezond ter wereld komen? Allemaal levensgrote vragen. Vanavond ter ontspanning een prachtige Chabrol (Poulet au vinaigre) op t.v. gezien. Vandaag een prima werkdag gehad met een strak schema. 't Gesprek met mevr. Betty Collis vanmiddag verliep bevredigend. Ongelooflijk dat zij op de UHD-plaats bij Moonen is benoemd en dat die twee met elkaar vrijen! Wat een lef. Wat zouden Plomp en Dijkstra daarvan denken. Genoeg gossip die de eeuwigheid niet verdient. Cathrien vanavond: Als ik groot ben krijg ik borsten. Sara begon mij vanavond te voeren. Veel gelach van haar en Cathrien. Ze zijn allebei erg vrolijk de laatste dagen. Sara begint meestal opgewekt of duimend aan de avondmaaltijd maar stort dan geleidelijk in. Rond half 7 begint ze het aangeboden voedsel weg te slaan. Soms kun je het dan nog een tijdje volhouden door iets eetbaars voor haar neer te leggen. Net voordat ze 't in haar mond heeft gestopt kun je er een lepeltje tussendoor frommelen. Nog even ...
Vandaag passen we op Els en Ada. Het is nu 14:45 en Ada slaapt knus op mijn arm. Vanmiddag tijdens de lunch zaten de meisjes geweldig te keten met elkaar. Ada begint vooruit te schuiven op haar buik. Benen spartelen nog een beetje ingericht in de lucht. Maart het begin is er. Els houdt nog steeds een van de brio-trein.

Cathrien en Franca kwamen nog even langs om de schaatsen te slijpen. Franca opereerde zeer zelfstandig, nu Mercia er niet bij was (weer naar school). Franca is heel onderzoekend. Maakt alle kastjes open en drukt op alle knoppen die ze ziet.

|<<ximg width:300px "/Foto's/20210211 Els kijkt zuur.jpg">>|<<ximg width:300px "/Foto's/20210211 Ada lacht.jpg">>|<<ximg width:400px "/Foto's/20210212 Ada slaapt.jpg">>|
Gisteren en vandaag op Mercia en Franca gepast. Mercia wordt echt een schoolmeisje. Veel rustiger en bedachtzamer. Voortdurend bezig met tekenen, knippen en plakken. Ze kan nu heel goed en vijfpuntige ster tekenen, hem knap. Gister zei ze: Stel dat je aan het voetballen bent. En je bent alleen. Dan kun je niet samen spelen. Toch wel opmerkelijk voor een kind van 4/5. De komende verjaardag is een belangrijk thema. Vooral wie er op haar partijtje mogen komen. 

Franca doet haar best om zich naast Mercia staande te houden. Eten en snoep blijven voor haar belangrijke thema's. Net had ze een aangebroken doosje rozijntjes. Ze zette het op de stoel naast mij en zei op strenge toon met de vinger omhoog: Dat moet daar blijven staan, OK?!
<<ximg width:% "/Dagboek/20071011 Dagboek.png">>
Vandaag zowaar een regendag. In Nederland goed weer zodat Cathrien en Sara in ieder geval van het buitenleven kunnen genieten. We hebben vanochtend kaarten geschreven en op de markt rondgewandeld. Vanmiddag met de auto naar Montalcino, een prachtig middeleeuws stadje (alweer) met uitstekende wijn waarvan we op advies van Let’s Go Italy bij de Coop drie flessen gekocht hebben. Het regende zo hard dat de schoonheid van het plaatsje niet helemaal uit de verf kwam. Ergens buiten gegeten en na een inspannende tocht door de regen om half 11 weer in Il Marzocco. Mogen hopelijk beter weer.
"""Vakantie is zoiets als tot stilstand komen. Na de onrust van de vakantieziekte nu het gevoel dat je steeds luier wordt, zonder wroeging. Vanochtend op de Siepelmarkt gekocht: paar laarzen, paar klompjes, 2 puzzels, boekje van A. Christie. Verder heeft Cathrien een stoelenmatter, mandenmaker, spinster, bakker, wever, etc., aan het werk gezien. Vanmiddag tijdens de siësta nog even gefietst (Gerry was er nog) en een nieuw mooi smokkelpaadje naar Duitsland ontdekt. Om ± 3 uur kwamen Jozien, Tertius en de kinderen. Het bos verkeerde volgens Tertius in slechte staat. Zure regen, invloed van het Ruhrgebied. Hij ziet de wereld snel op haar eind afstevenen. 1988 wordt volgens hem het beslissende jaar. De weerstand neemt af: AIDS, gat in ozonlaag, zure regen, etc. Dit soort profetieën zijn moeilijk te weerleggen, maar ook niet echt inzicht verruimend. Vanavond Gerry naar de trein gebracht. Was erg gezellig. Een wonder dat het zo goed gaat. Cathrien speelt daarin een belangrijke rol. Ze is dol op Gerry. Nu stortregent het. Echt leesweer.
Vijf vragen voor Cathrien.

Hoe reageer je op de dood van een patiënt? 
Voel je jezelf tekort schieten als een patiënt van je overlijdt? Voel je je machteloos? 
Vind je dat de dood bij het leven hoort?
Vannacht gewaakt bij Cathrien met oorpijn. Ze sliep goed op een paracetamol-tablet om &frac12;8, &frac12;11 en &frac12;2. Na zo'n doorwaakte nacht, die overigens heel rustig verliep, krijg je (even) een andere kijk op het leven. Vanwege de betrekkelijke slaapprobleme van de afgelopen weken wil ik proberen wat soberder te gaan leven: geen koffie meer, niet meer roken, alcohol zo min mogelijk (alleen sociaal), snoepen zo min mogelijk (idem). Verder strikt op tijd naar bed: 10 uur stoppen met werken, uiterlijk 11 uur in bed, uiterlijk &frac12;12 licht uit. Misschien een yoga-cursus voor ontspanningstechniek volgen. Wat meer aan sport doen, vaker gaan zwemmen met Cathrien in het Zuiderbad. Ook in de sociale sfeer wil ik mijn aspiraties wat omlaag schroeven: meer luisteren, minder praten. Wat het werk betreft wil ik voorlopig niet solliciteren maar zorgen na afloop van het PWN-project nog enige tijd hier onderzoek te doen. Ik denk niet dat er voor mij op termijn positieverbetering in zit. Het fiasco in Leiden heeft me geleerd dat ik absoluut ontoereikende kwaliteiten voor het hoogleraarschap heb. Zo lang ik geen naam van betekenis heb verworven moet ik me wat dat betreft zeer bescheiden opstellen. Het zij zo. Rust. Catharsis.
"""
Even een mooie bijbeltekst.

5 (62:6) Alleen bij God is mijn ziel gerust, alleen van Hem komt mijn verwachting;  6 (62:7) Hij alleen is mijn rots en redder, mijn hoge vesting !!- ik zal niet vallen.  7 (62:8) Bij God ligt mijn redding en goede naam, God is mijn rots, mijn sterkte, mijn schuilplaats.  

Vandaag hopelijk weer een fijne vakantiedag. Grappig zoals dit apparaatje al mijn vocabulaire kent..

Vanochtend hier opbreken, de huurauto ophalen, en naar Erice rijden.

Vandaag proberen niet zo snel geïrriteerd te raken, gewoon een beetje aardig en rustig zijn. Matig met eten en drinken. Steeds bewust innemen. En loslaten, loslaten, loslaten. Het mag, het moet. 

Nou, dat loopt heel anders dan gepland. Omdat ik de pincode van mijn creditcard niet meer wist ging de huur van de auto niet door. Nu zitten al weer in de bus naar Trapani. Vandaar met de bus omhoog naar Erice. Na de tegenvaller is het eigenlijk wel heel relaxed om zo met de bus te reizen. 

Zes uur in Erice. Busreis verliep eigenlijk prima al  dreigde de bus van Trapani naar Erice het halverwege te begeven. We zitten hier nu in een café vlak bij onze b&b. Buiten fris want wolken om onze bergtop. Erice is een klein openluchtmuseum, wel 10 prachtig gerestaureerde kerken en kerkjes, 250 inwoners, grote hoeveelheden toeristen en aardig wat souvenirwinkeltjes. Uitzichten heel ver, we zitten op 750 m hoogte.
"""Het laatste deel van de reis breng ik alleen door: Sanne is gisteravond naar L.A. vertrokken. Ik heb nog twee dagen in S.F. rond te kijken en, als het lukt, nog een bezoek te brengen aan een school in Walnut Creek. Het bezoek aan Berkeley was zeer de moeite waard. De groep van Linn is zeer actief. Ze doen praktisch onderzoek, weinig “harde” data, wel veel anecdotes. Het Boxer systeem van DiSessa lijkt een erg transparant systeem, mooi maar omvangrijk, 16 megabyte kerngeheugen nodig. Draait op Symbolics en (een beetje) op een Sun. Ze hebben een geweldige overvloed aan apparatuur daar, Macintoshes, Mac II’s, Suns, geen IBM compatibles! Marcia Linn is een gereserveerde vrouw, smaakvol gekleed, weinig Amerikaans, wel indrukwekkend. Ze bracht ons naar een prima eetgelegenheid die het ook in Amsterdam goed doen. Je ziet hier toch weer een heel anders soort Amerika dan je van de t.v. kent, veel ontwikkelder en beschaafder. Berkeley is eigenlijk een heel gezellige plaats met 27.000 studenten, doet enigszins Engels aan. Het weer is nogal bewolkt. Ik heb veel zin om in de stad in te gaan. Hoop toch dat het bezoek aan de school nog wat wordt.
Vanochtend in de trein toch weer heel  mooi de zon zien opkomen. Afgelopen vrijdag dus niet goed opgelet.
Avond. Johannes Passion. Kinderen slapen, redelijk koortsvrij. We hebben een hele golf van kinderziekten over ons heen gehad. Cathrien met Pfeiffer (knapt weer op), Berend maandag nog 41.2! Gelukkig bleef hij nog redelijk bij zijn positieven zodat niet gevreesd hoefde te worden voor meningitis, wat nogal veel voorkomt op 't ogenblik. Berend reageert al op zijn naam. Lacht veel en lijkt nog steeds een heel vrolijk en evenwichtig mannetje. Kijkt het gesnater van zijn zusjes vrolijk aan. Draait zich nog weinig om maar is verder wel actief in de box.

Sara probeert nog steeds Cathrien bij te benen wat haar met veel vallen en weer opstaan soms lukt. Ze praat al heel veel, het "zelf even doen"  is niet van de lucht.

Cathrien is aan de kleuterschool toe. Vanavond had ze het volgende verhaal: Sara was haar kindje en ze gingen naar de ene oma van Sara waardoor de andere oma "jaloers" werd. Wat is "jaloers", vroeg Anne. Dat is "kinderachtig", zei Cathrien.

Cathrien heeft soms aanvallen van dwarsheid. Ik maak het 's ochtends en 's avonds mee. Er vaart iets in haar waardoor een crisis soms niet te vermijden is. Heel moeilijk om een uitweg te vinden. Rustig erbij gaan zitten wachten tot het over is is één mogelijkheid. Een ander: een afleidingsmanoeuvre verzinnen. Veel creativiteit nodig. Gesolliciteerd in Syracuse, N.Y.!
!!! Dertiende vakantiedag

Wat hebben we donderdag gedaan? We zijn naar Urbino geweest. Stadswandeling was leuk. Heerlijk geluncht, Palazzo Ducale met de dame van Raffaello en de stukken van Piero della Francesca. Het schilderij met het puttertje. De vrolijke studenten. De foto van de corona check

Een dagje Urbino begint met een capuccino met toebehoren bij Cartolari. We hebben een wandeling van internet geplukt die ons langs diverse hoogtepunten gaat voeren.

|<<ximg width:400px "/Foto's/2021 Italië/0916 Cappuccino bij Cartolari.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0916 Rondje Urbino.jpg">>|
|borderless|k

De wandeling voert ons omhoog naar de rocca en dan weer naar beneden met prachtige doorkijkjes, met steeds in de verte het Palazze Ducale.

|<<ximg width:200px "/Foto's/2021 Italië/0916 Doorkijkje 2.jpg">>|<<ximg width:200px "/Foto's/2021 Italië/0916 Doorkijkje 3.jpg">>|<<ximg width:200px "/Foto's/2021 Italië/0916 Doorkijkje 4.jpg">>|<<ximg width:200px "/Foto's/2021 Italië/0916 Doorkijkje 5.jpg">>|
|borderless|k

Daar komen we dan uiteindelijk ook aan. We gaan het na de lunch van binnen bekijken.

<<ximg width:400px "/Foto's/2021 Italië/0916 Palazzo Ducale 1.jpg">>

De lunch is ontzettend lekker! Zie hier de twee overheerlijke pastagerechten.

|<<ximg width:400px "/Foto's/2021 Italië/0916 Pasta Anne.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0916 Pasta Jos.jpg">>|
|borderless|k

's Middags dan het Palazzo Ducale met daarin het museum van de Marken, de Galleria Nazionale delle Marche. Prachtige stukken, o.a. de Citta Ideale van Piero della Francesca. Opvallend is een Madonna met de Bambino en de kleine Johannes, Giovannino. Wat mij vooral opvalt is het puttertje dat Jezus vasthoudt en toont aan Johannes.

|<<ximg width:400px "/Foto's/2021 Italië/0916 Maria met Jezus en Johannes.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0916 Puttertje.jpg">>|
|borderless|k

Het puttertje komt op veel meer stukken met de Madonna voor. De beroemdste is de Madonna del cordellino van Rafaël, die in Florence te zien is. 

<<ximg width:400px "/Foto's/2021 Italië/0916 Madonna con cordellino.jpg">>

Het puttertje staat symbool voor het komende lijden van Jezus. Het vogeltje zou een doorn uit de doornenkroon op Jezus' hoofd getrokken hebben en daaraan een rode streep op zijn kop hebben overgehouden. 
"""Vaders plotselinge overlijden is nog niet in woorden te vatten. Eerst maar wat Moeder ervan vertelde. Gister was hij rond 3 uur met de auto naar Groningen vertrokken om tante Jelly op te zoeken die na een galblaasoperatie in het ziekenhuis lag. Om 7 uur was Vader weer thuis na een waarschijnlijk inspannende tocht. Hij had niets te drinken gehad en had daarom zijn pil voor de regulatie van de hartslag  niet om 4 uur ingenomen. Dan maar om 7 uur en om 10 uur 's avonds. Een gewone rustige avond. Naar een dienst voor de radio geluisterd. Gepuzzeld. Nog naar Studio Sport gekeken. Moeder was om half 11 naar bed gegaan. Ze hoorde hem om ongeveer 12 uur niet naar bed gaan. 's Nachts om drie om de beurt geplast. Kort daarop begon Vader te snurken, driemaal een diep, angstaanjagend gebrom in de borst en stilte. Moeder durfde 't licht niet aan te doen. Is uit bed gegaan, beetje valeriaan ingenomen, met de zaklantaarn gekeken: Vader was gestorven. Gewacht tot de ochtend. De begrafenisondernemer gebeld en dokter Holtrop. Samen met een zuster gewassen en een schone pyjama aangedaan. Vader is gestorven op de manier die moeder zo vurig wenste: naast haar in bed, zonder lijden of ziekte, rustig in de slaap. Moeder belde ons om half 8. Ik ben er erg van ondersteboven. Tübingen afgezegd. Daardoor 4 dagen vrij.

Vader
----------
- streng, niet toegevend voor zichzelf en voor zijn omgeving
- liet zich niet uit het veld slaan door tegenwind
- liet de twijfel niet toe waardoor hij soms krampachtig leek
- toch ook flexibel, zakenman
- kon toch ook relativeren, gevoel voor humor, genieten, laatst nog in Ootmarsum en Langweer
- zondagavond bellen, veel dingen besproken, ook laatste jaar. Meeleven betekende grote steun
- trots op kracht
- we lijken op hem
In het dagboek schrijven kan echt wel steun bieden in sombere tijden. Wat gaat nu zeer slecht. Vooral mijn neiging tot oordelen, en dan vooral jegens Anne. Ik wil dat beslist niet. Ik wil helemaal geen second thoughts over Anne hebben. Anne is gewoon een goed mens, heel sociaal, veel aandacht voor anderen en voor het milieu, bewust levend.
De liefde is een pantser, ik wil me in dat pantser hullen ook mijn eigen ego zo klein mogelijk te maken. Het pantser van de liefde. Bij mij is dat pantser zo ontzettend dun, je prikt er zo doorheen. Met name Anne prikt er voortdurend doorheen. Door bijvoorbeeld direct na het wakker worden uit te leggen hoe slecht voor het milieu het beleid van Shell is. Dan zou ik me in het pantser van de liefde willen hullen.

Dat pantser van de liefde bouw je op door veel meer te investeren in jezelf dan je nu doet. Je hebt dat altijd veel te weinig gedaan. Gewoon een aantal uren per dag voor jezelf kiezen. Laten we dat een nieuwe therapeutische oefening van maken.
Gistermiddag hebben we mevr. de Vries begraven.  Aanwezig: Kaak, Riek (vrouw van Mon), nicht + begeleider, verder de Lykeionten: Buysse, Richter, Kuiper, Roeleveld (Wim), Henk de Vries, Gerard van der Slikke, Arie van Driel, Erik Smaal, Henk Haandrikman, Adam van der Sluis, en ik, 11 man. Een zeer sobere maar toch ook stijlvolle en indrukwekkende plechtigheid. Verzamelen in zijruimte van aula van begraafplaats St. Barbara aan de Spaarndammerdijk. De oude De Vries bleek al in dec. 88 overleden te zijn. Mon was "lichamelijk niet sterk genoeg" om aanwezig te zijn. Handen schudden, naar de aula waar de kist tussen zes kaarsen en in een zware wierooklucht stond opgesteld. Iedereen zwijgend met kromme schouders in de banken. Na twee hymnen (met ertussendoor het geklik van een cassettebandje dat werd verwisseld) stelden de kraaien zich in slagorde op en droegen ze de kist voor ons uit. Bij het graf sprak Adam van der Sluis nog enkele gepaste woorden. Onderweg zag ik het graf van Petra Lenglet, familie van Pieter van der Vens vriendin? Terug in het zaaltje nog even met Kaak gepraat. Pa en Ma de Vries waren beiden rustig gestorven. Kaak woont nu alleen. Hij was opvallend spraakzaam. Nagepraat met oud Hartenstraters in café. Opvallend, de spontane vriendschap. Reünie afgesproken bij Dick Kuiper.
Het is nu 05:57. Tot nu toe deze week 10 uur geconcentreerd werken gerealiseerd. Geen slechte score. Buschauffeurs staken. Parkeerwachters staken. De minister van Sociale Zaken creëert nieuwe banen op de tram en in het ziekenhuis.
Bij Anne is de situatie vrij stabiel. Vanochtend 37.6. Helaas ben ik nu ook aangestoken. Gisteravond 38.3. Stevige koppijn en hoesten. Paracetamol. Vanochtend 37.3 en koppijn. Binnenblijven dus, geen boodschappen. Wel serieus nemen. 
De ondergang van Clyde Griffiths in "An American Tragedy" van Theodore Dreiser wordt aanzienlijk in de hand gewerkt door de onbedoelde zwangerschap van zijn vriendin Roberta. Juist als hij zich van haar wil ontdoen op zijn weg naar de hogere kringen kondigt zij aan in verwachting te zijn. Hij slaat zich voor het hoofd.  Wat heeft "één moment van genot" een onheil teweeg gebracht. In de encyclopedie staat van Dreiser dat hij pessimist is omdat naar zijn oordeel de Amerikaanse samenleving geheel beheerst wordt door geld en sex. In 1925! Wat een vooruitziende blik. Wat zou hij zeggen als hij vandaag de dag nog rond zou kijken. Het prototype van de Amerikaan: een egoïst die uitsluitend uit het oogpunt van persoonlijk gewin zijn medemens gebruikt. Liefde ondergeschikt aan het streven naar de weg omhoog. Eén zwakke plek: sex, of misschien algemener: genotzucht, hedonisme. Dit beeld van de westerse cultuur is wel heel raak: egoïsme en hedonisme. Het alternatief: altruïsme en onthouding. Niet alleen als morele imperatief maar ook als erkenning van de noodzaak van de hulp van anderen om te overleven, als individu en als samenleving. Ik ga me wat meer oefenen in dit besef, m.n. tijdens de zgn. vrije tijd.
<<ximg "Pensionado/Geheugen/Dagboek/20061019 Dagboek.png">>
<<ximg "/Dagboek/20070802 Dagboek.png">>
<<ximg width:% "/Dagboek/20170202 Dagboek.png">>
<<ximg width:% "/Foto's/20150702 familiemaaltijdmieke.JPG">>
"""
07:55
Zou het OU worden? Ik heb er nog steeds een heel goed gevoel over. 
Een nieuw pak met kaartjes; hopelijk gaat het wat sneller op dan het vorige pak.

Berend vanochtend koorts: 39.3. Cathrien wordt door een andere moeder gebracht en gehaald. Gauw bij Kees nog wat flessen melk gehaald. Nu om 9.00 uur startklaar in de bibliotheek. Agenda bevat 11 punten. Zwakke kanten in het werk: schrijven aan de buitenlandse publicaties en deadlines in acht nemen. Op de SCOPE-vergadering zei dinsdagavond Nieske van Rijn: drukke mensen houden zich aan hun planning, hebben agendadiscipline. Mensen die niets te doen hebben komen hun afspraken niet na. "Agendadiscipline", wat een mooi woord! Gedisciplineerd leven, dat zou ik wel willen, veel doen en toch de deadlines halen. Kost me veel moeite. Bovendien: het moet niet ontaarden. "Vrijheid in gebondenheid", wat is dat eigenlijk. Toch bevallen mij goed op 't moment: door de week geen alcohol, uiterlijk 23.15 in bed. Lukt goed. Ik heb het echt nodig om streng voor mezelf (en soms voor anderen) te zijn. Voel me daar inderdaad vrijer bij. Heel moeilijk om grenzen voor jezelf te stellen.

Sara is weer opgehouden met stotteren, deze week moeite met stoelgang, zondag een zware bevalling (met wonderzalf en olijfolie). Cathrien is ook iemand die streng moet leren zijn voor zichzelf. 't Gaat op 't ogenblik weer heel goed. Vanavond Joke van Eekeres op bezoek. 
Vandaag een negatieve dag. Vooral vanmiddag dit het gehannes met de buggy. De banden van het tuigje doorgeknipt omdat Ada begon te schreeuwen en Annne-Carien het sleuteltje in de zak had een nog buiten was. Maar vooral omdat ik zelf weer eens gruwelijk door het ijs ging. Ik ga morgen een afspraak bij de cardioloog maken. Misschien ligt het aan de hartklep.
!!! Eerste vakantiedag
Vandaag de tocht gemaakt van Amsterdam naar Varenna, over de oude weg. Arriveerden uiteindelijk later dan via de alternatieve weg, omdat we in Menaggio op de pont moesten wachten. Laatste stuk door Lugano Noord heen was toch ook wel pittig. De route onderweg erg druk maar geen echte files. 

Eten op het terras was weer heerlijk, een echte eerste vakantieavond. En wat een goed nieuws: Floor Elsenburg is al zeven maanden zwanger! Vertelde Jacqueline van Zoggel in een app over de brand in Fons Vitae afgelopen woensdag. Schilders op het dak, bezig met verf afbranden. 
""" - ANWB bellen voor keuring
Debus, Rudolf, Van Braun, Rozamus, Oliver North: waarom horen deze namen in hetzelfde rijtje? De eerste drie waren Nazi's en de bouwers van de V1 en V2 raketten. Na de oorlog in het kader van de operatie Paperclip voorzien van een nieuw dossier. "Ardent Nazi" veranderd in "not an Ardent Nazi". De veranderingen werden in Berlijn op het U.S. consulaat uitgevoerd in opdracht van het Pentagon, kolonel Rozamus. Tegen de wil van Truman die had laten weten dat aan "ardent Nazis" geen toegang tot de V.S. mocht worden verleend. Rudolf was als Nazi commandant van het concentratiekamp Nordhausen en verantwoordelijk voor de productie van V2's waartoe de gevangenen onder erbarmelijke omstandigheden werden gedwongen. Later in de VS. verantwoordelijk voor de bouw van de Saturnus raket waarmee Armstrong c.s. als eerste mensen op de maan landden. De Duitsers hebben de eerste mens op de maan gezet. Oliver North was de voornaamste organisator in het Iran-contra-schandaal. Hij verklaarde: "Ik deed het voor mijn vaderland en was ervan overtuigd dat de president ermee instemde". Idem Rozamus. Idem Debus, Rudolf en Von Braun.
"""
Vorig jaar vierden we op deze dag mijn afscheidsfeestje. Nu is het allemaal een beetje gestrester. Maar we geven de moed niet op. Vanavond de laatste lasagnemaaltijd met Berend en Sietske, Cathrien en Jochem en Renate, en met Geert en Richard. De Britten hebben vandaag tegen de EU gestemd. 
!!! Twintigste vakantiedag

Vandaag weer een dag naar Venetië, maar nu met als doel het eilandje Burano te bezoeken, een van de vele eilandjes in de lagune. Weer de trein van 09:02, we beginnen al geroutineerde forenzen te worden. Bij het station Santa Luzia meteen kaartjes voor de boot naar Burano gekocht, goed idee van Anne. Nog even een cappuccino op een pleintje richting boot. Keurig op tijd voor de boot van 10:40. Een tochtje van zo'n 45 minuten. Langs tal van andere eilanden. Eerst het kerkhof eiland. Daarna Murano, met alle glasblazerijen. Dan een tijd niets en dan via Mazzorbo naar Burano. Eerste indruk is een rustig vissersplaatsje met huizen in alle kleuren van de regenboog, met één verdieping maximaal. Ook grachten, maar niet zo overheersend als in Venetië. De vele toeristen verdwijnen redelijk snel uit zicht. In de hoofdstraat zien we een restaurant voor de lunch. De veelkleurige huizen zijn inderdaad heel mooi, maken het eilandje heel fotogeniek. Gezellige lunch. Na de lunch beeldgesprek met Cathrien en Franca. Ze maken het gelukkig goed. Contract van Jochem nog niet op papier maar wel mondeling toegezegd. Hopelijk loopt dat goed af. Na nog een rondje, onder andere via een mooi complex van groentetuinen en wijnstokken, Venissa, waar we de zeeaster zagen, weer terug met de boot. Nog een flink stuk gelopen door Venetië, helaas zonder het leuke Campo Santa Margherita in de wijk Dorsoduro terug te vinden, weer met de trein naar Vicenza. 

Even wat foto´s van deze dag

|<<ximg width:400px "/Foto's/2021 Italië/0923 Vertrek Fondamente Nove.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Murano.JPG">>|
|borderless|k

Vertrek van de vaporetti van Fondamente Nove, langs Murano met de glasblazerijen.

|<<ximg width:300px "/Foto's/2021 Italië/0923 Aankomst Burano.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano Hoofdstraat.JPG">>|
|borderless|k

Aankomst op Murano, wandeling door de hoofdstraat van Murano waar we ook geluncht hebben.

|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano 1.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano 2.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano 3.JPG">>|
|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano 4.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano 5.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano 6.JPG">>|
|borderless|k

Diverse beelden van Murano, ook de scheve kerktoren, ziet er allemaal heel schilderachtig uit.

|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano Loopplanken.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Burano Brievenbus.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 Venissa.JPG">>|
|borderless|k

Op de foto links zijn de loopplanken te zien, die overal in Venetië in stapels klaar liggen voor als er weer eens hoogwater komt. Op de foto in het midden zien we Anne de kaarten op de bus gooien. We weten inmiddels dat ze er zo'n 14 dagen over gedaan hebben om eerst het vasteland en daarna Nederland te bereiken. Rechts een beeld van Venissa.

|<<ximg width:400px "/Foto's/2021 Italië/0923 Cimitero di San Michele.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0923 La Chiatta di Dante.JPG">>|
|borderless|k

Op de terugreis een beter beeld van het Cimitero di San Michele, het begrafeniseiland. Daarvoor drijft een moderne sculptuur met Dante die op een boot richting San Michele gaat, met Vergilius aan het roer. 
"""
Niet klagen maar dragen en bidden om kracht. Laten we proberen om ons daaraan te houden deze dag. Toch proberen om van elk uur en van elke minuut iets zinvols te maken. Ook proberen om elke handeling met aandacht te doen. Tenslotte proberen om steeds met een zekere spanning een volgend doel in gedachten te houden en daar naartoe te leven.
"""Nog niet het juiste werkritme te pakken. Moeder maakte vanavond door de telefoon een ontroerend flinke indruk. Giroles van Janny gehad. Op het strookje van een overschrijving voor de oogarts suggereerde Janny zoiets te schrijven als: consult Tammo. Moeder schiet in de lach: Hoe weet Ten Pierik nu wie Tammo is! Janny legt uit dat moeder het strookje zelf moet houden. Gisteren met Jan W en T gewandeld bij Lunteren. Bij de Van Weezels thee gedronken. ‘t Lijkt of moeder zich er goed doorheen slaat.
Gisteravond met studenten gegeten in Leiden. Vannacht een uur wakker gelegen en om 5 uur eruit om te werken. Vandaag ging h et goed. Nu om 9.30 naar bed. Nog even 10 blz. Toergenjev.
"""
Heerlijke Hemelvaartsdag in Egmond. Gezellig met Cathrien, Jochem en Mercia.

<<ximg "Pensionado/Geheugen/Foto's/20170525 Mercia op Hemelvaartsdag.JPG">>
Gisteravond een bijzondere avond. Met zijn allen bij elkaar bij Meindert om te overleggen over de stand van zaken bij Moeder. De sfeer was die van na een overlijden, alleen is Moeder springlevend en staat ze op het punt een nieuw leven te beginnen. Op 1 maart betrekt ze een kamer in het bejaardentehuis Gerlar aan de overkant bij haar in de Fred. Hendriklaan. De dokter had haar zondag, op het bed gezeten, zulks geadviseerd. Het blijkt dat Moeder ervan overtuigd was dat haar uur gekomen was. Ze had  tussen de middag een bakje met een fruitslaatje nog opgegeten omdat ze verwachtte dat we het toch maar zouden weggooien. Toen Janny en Jan de dokter hadden gewaarschuwd en deze gearriveerd was, vroeg Moeder om een middel om in te slapen.
Hier een prachtige foto van Anne en Mercia. 

<<ximg width:% "/DD/Thuis/20170126 Anne en Mercia.jpg">>
Onze eigen gezondheid is natuurlijk wel de eerste zorg. Geen koorts, maar wel hardnekkige verkoudheid en ook wel keelpijn. Hopelijk blijft dit allemaal binnen de perken. Anne gaat echt wel vooruit. Minder hoesten, minder vermoeidheid. Zo'n James Bond film verzet wel even de zinnen.
"""Je raakt op zeker moment in een spiraal: je komt er niet toe iets op te schrijven en vergeet vervolgens hoe belangrijk het is om af en toe door deze aantekeningen weer wat orde op zaken te stellen. Terug naar het ½10 regime! Soms vergeet je gewoon afspraken die je met jezelf hebt gemaakt. Als ik ‘s morgens op de VU kom zeg ik dikwijls tegen mezelf: je weet toch hoe je moet beginnen: planten water, psalm lezen, planning maken. Plannen en zaken opschrijven die in je opkomen. Allemaal heel belangrijk. Sipke vertelde dat Piaget altijd met een klein bloknootje op zak liep. Precies.

Wie is God? Is Hij het niet die je steeds weer uit de put haalt? Vaak via andere mensen om je heen. Je moet hem wel een beetje de kans geven om je uit de put te halen. Je moet er in ieder geval mee zitten. Waarom voorkomt Hij niet dat je in de put valt? Waarom voorkomt je vriend of vriendin niet dat je soms in de put valt? Dat kan hij of zij niet, ook al wil hij of zij dat zo graag. Is God dan niet almachtig? Ja, want hij kan iedereen altijd uit de put halen. Hij blijft daarmee doorgaan tot iedereen eruit is. Zo moet het zitten.

Sara is vanochtend met de papfles begonnen. Ze let steeds meer om haar omgeving en lacht veel, ook om Cathrien.
De techniek staat voor niets! Luister op 't ogenblik naar Glenn Gould's Goldberg variaties op CD via de CDRom disk drive van de Mac! ('s ochtends 8.40)

Enkele opmerkingen van Sara en Cathrien:
Cathrien (in discussie over het feit dat je nagels dood zijn): Waarom is je vel niet dood? Ik weet het al! Omdat je hoofd er aan vast zit!

Sara in bed voor het slapen gaan: Ik ben bang voor de jager! Cathrien roept vanuit haar bed: Maar de Here God is toch altijd bij je Saar!

Gisteravond naar de sauna geweest. Zeer ontspannend in deze hectische maand. Merk dat de combinatie van strengheid jegens mezelf en gevoel voor relativiteit essentieel zijn om het schip op koers te houden. Ben redelijk snel over twee tegenvallers heengekomen: sollicitatie in Leiden, niet eens voor gesprek uitgeodigd door onvoldoende publicaties!, en subsidieaanvraag: eerst een 5, nu toch een 6. Plannen maken om onderzoek zelf uit te gaan voeren met student. Per week twee dagdelen L&S: Lezen en Schrijven, uitsluitend ten behoeve van de eigen loopbaan!
!!! Achtste vakantiedag
Vandaag staat het uitstapje naar Castiglione del Lago centraal waar we om 12 uur met Florence en Alfred hebben afgesproken. We dronken eerst een cappuccino op het dorpsplein en raakten aan de praat met een Nederlands stel dat net was gearriveerd met de caravan. Hevig noodweer onderweg gehad. Autostrada bedekt met hagelstenen zodat je je eigen baan niet meer kon onderscheiden. Twee vrachtauto's op elkaar gebotst in de tunnel met een flinke file als gevolg. Griezelig. Even later liepen we Florence en Alfred in de hoofdstraat tegen het lijf. Eerst een biertje in de tuin van de rocca en daarna gegeten op het overdekte terras van het restaurant. Heel gezellig. Rond half zes weer thuis. Nog even een Campari bij café Centrale, maar het begon allengs harder te waaien. Heel lollig filmpje van de kruipende Mercia. 
"""
Hoe bevalt dit? Een dagboek bijhouden op de PowerBook... Er zijn periodes dat je vindt niet te veel achter de computer te moeten zitten. Uit tenzij aan was de gedachte. Maar nu ik ongeveer blind kan typen gaat het typen zo langzamerhand vlugger dan schrijven. Zeker nu ik de waarde van de outline faciliteit heb ontdekt. 
Gisteren Berends partijtje gevierd: de jongeman is 6 jaar geworden. We hadden met Berend erbij 14 kinderen, een hele verzameling. Het programma: eerst een variant op het ganzebordspel: 25 opdrachten die de kinderen in willekeurige volgorde konden afwerken. Groepjes van twee of drie kinderen met een volwassene. Prachtig om te zien hoe slecht Berend, Wytze en Ezra taken kunnen verdelen: ze moesten de traptreden tellen. We hebben drie trappen. Hoe verdeel je dat. Leverde 5 minuten verhitte discussie op. Ook opmerkelijk incident bij Oom Kees tijdens de speurtocht. Vraag van de kinderen aan Kees: hoe zwaar weegt de kaas? Kees: raad maar. “20”, “Je zit te hoog”, “10”, “te laag”, “15”, “te hoog”, “13”, “te laag”, “12”, “16”, etc. Kinderen beschikken nog niet over een duidelijke getallenlijn. Of kunnen ze maar een klein aantal tussenresultaten onthouden? In ieder geval ontbreekt een strategie van successief benaderen. Derde onderdeel: goochelvoorstelling. Ging heel goed. Gordijn tussen de schuifdeuren. Cathrien en Sara als toneelknechten. Meeste nummers liepen gesmeerd. Kamer zat vol met kinderen en ouders. Echt een geslaagde afsluiting. Berend was heel tevreden en heeft daarna nog gezellig doorgespeeld met Wytze: nieuwe LEGO-onderdelen in elkaar zetten, etc. Gerry, Anne en ik borrelden na.
Gisteravond in vergadering van Vereniging Amsterdamse Studentenekklesia aangekondigd dat ik iets met grotere kinderen wil gaan doen. Aan beginnen!
Vanavond een mooi debat gezien tussen Asscher en Buma. Buma als regent, Asscher als straatvechter. Vond toch dat Asscher beter uit de strijd kwam. Het CDA heeft als politieke machtsfactor natuurlijk al lang afgedaan. Voor de PvdA geldt in feite hetzelfde. Alleen praat Asscher nog vanuit zijn positie als vice-premier
Al dat gepraat en gevergader over reorganisaties en stroomlijning vind ik erg deprimerend omdat het niet goed gedaan wordt. Iedereen wil op zijn eigen plaats blijven zitten. Misschien voel ik me ook niet helemaal serieus genomen. Ze beschouwen mij in Leiden als te jong en onervaren, te weinig bekend met de Leidse situatie. Uiteindelijk blijft zo’n negatief oordeel uit de onderzoeksvisitatie te lang hangen. Je kunt op zo’n  moment twee dingen doen: ermee kappen omdat je het gevoel hebt te weinig klaar te spelen als gevolg van onvoldoende status, of geduld hebben en doorwerken. Voorlopig kies ik voor het laatste. Zal er nog eens met Wim over praten. <p>
Nog even een citaat, nu uit Luciano de Crescenzo’s Geschiedenis van de Griekse filosofie (p. 24): “Ook de Wijzen waren mensen van weinig woorden: laconiek zoals men dat pleegt te noemen. ‘Als je weet zwijg je’ (Solon), ‘Verafschuw snel spreken’ (Bias), ‘Wees begerig om te luisteren, niet om te spreken’ (Cleobulus), ‘Laat je tong niet voor je gedachten uitlopen’ (Chilon). Ik ga dit boek met een snelheid van 10 blz per dag lezen.
"""8.21: klaar voor de start! <br>12.00: Sara in bed gestopt, gaat rustig slapen. Heeft vannacht doorgeslapen! Het systeem van ong. 1 uur aan een onderwerp werken en alle deadlines vergeten werkt nog steeds perfect. Je gaat met het gevoel naar huis heel veel gedaan te hebben. Alle klussen blijven leuk! Cathrien heel veel plezier in het spelletje: wat zit er in de vla-met-verrassing? Een wortel? Nee, hè, roept Cathrien dan. Als je de goede vrucht noemt zegt ze ja (mits herkend). Cathrien slaapt nu steeds op haar buik, op eigen verzoek. Bedacht vanochtend op de fiets nog iets om op te schrijven n.a.v. gister maar ben het vergeten. Brief van Pina en Mauro. Felicitatie met Sara. Pina verwacht haar bambina (bekend na vruchtwaterpunctie) eind november. We moeten snel terugschrijven.
"""
Vandaag is dan de dag van de verhuizing! Wel stress, een beetje rustig proberen te blijven. De mannen van Vlaming blijven in ieder geval kalm. Ze denken om 14 uur vanmiddag klaar te zijn. Cathrien doet vandaag haar rijexamen, dat is veel spannender! 11:40 tot 12:10. Ik hoop van harte dat ze het haalt. 

Het is nu 8 over 11 's avonds. We liggen enigszins uitgevloerd in Egmond. De verhuizing was uiteindelijk pas om 16:30 klaar. Als laatste ging in de stromende regen de piano naar beneden. Nu toch wel een grote opluchting dat het dozengedoe achter de rug is. Morgen verder. 

<<ximg "Pensionado/Geheugen/Foto's/20160630 De piano verlaat de Frans.jpg">>
Vandaag de eerste dag in Florence. Vanochtend om 6 uur vertrokken, met de bus naar het Centraal Station. De trein naar Schiphol waar we om 6:50 arriveerden. Niet slecht. Vliegtuig vertrok iets te laat. In het vliegtuig nog het rapport voor Ton Klein gereviewd. Met de taxi naar Hotel Paris in de Via dei Banchi 12. Prachtige oude kamer, lekker ruim. Spullen geïnstalleerd en om 13 uur een lunchadres gezocht. Snel gevonden: Robiglio in de Via dei Servi, vlak bij de Annunziata kerk. Heel lekker geluncht. Daarna richting Santa Croce, via de Duomo (nog even binnen gekeken). Sante Croce weer prachtig met de fresco's van Giotto en alle graven van beroemdheden, en de Della Robbia's in de Pazzi kapel. Daar kwamen we Elly van het koor tegen, daarna nog een keer in de stad gezien!

Naar een gezellig pleintje geslenterd, Piazza San Pier Maggiore, en daar geborreld en hapjes gegeten. Teruggewandeld via de Arno en een stukje langs de andere oever. 

Heel fijne eerste dag! Morgen koor. 
"""Eigenlijk is het al 1 januari 1988, 10 voor 3 in de ochtend. De laatste gillende keukenmeiden klinken op. Overigens is de rust hier in huis weergekeerd. Hopelijk heeft ieder een fatsoenlijke plek om te slapen gevonden. Wim & Annet met 4 kinderen en Dirk en Elzemien met 2. We hebben op een bandje de prognoses voor 1988 vastgelegd. Moeilijk om iets zinnigs over de toekomst te zeggen. Komen de sombere voorspellingen over een nieuwe economische crisis uit?

Wat zijn mijn goede voornemens voor 1988? Ik heb opgeschreven:

- <u>opruimen</u>. Steeds maar weer proberen de boek op orde te krijgen. Geeft onmiskenbaar een gevoel van zekerheid.
- <u>plannen</u>. Vooruitzien, opschrijven wat er gebeuren moet. Idem voor zekerheidsgevoel.
- <u>langzaam handelen</u>. Meer oog voor detail. Maakt dat alles uiteindelijk vlugger gaat.
- <u>schrijven</u>. Het is nooit te laat om nog even wat op papier te zetten.
- <u>Het Doel</u>. Een doel in het oog houden. Proberen helder voor ogen te krijgen.
- <u>werk delegeren</u>. Niet alles per computer zelf doen.
- <u>psalm 73</u>. Elke ochtend bezinnen, zien wat er van komt.
Dat systeem met de streepjes werkt heel goed maar ook heel verlammend. Ik ga proberen om nu per dag wel 7 dingen gedaan te krijgen maar ik laat het spreadsheet even rusten. Als ik het systeem aan Anne zou uitleggen, dan zou ze me voor gek verklaren. Nog even een leuke foto toevoegen.

<<ximg width:400px "/Foto's/210118 Mercia legt uit.jpg">>

Deze foto vonden we terugblikkend erg geestig, vanwege de verschillende gezichtsuitdrukkingen. Mercia legt uit: “We hebben hier een baby, een dreumes, een peuter, en een grote zus.” Els moet er erg om lachen, Ada probeert het te volgen, en Franca lijkt iets minder onder de indruk van de uitleg van de grote zus.
Nieuwe kaarten, nieuwe kansen. Ik pas op 't ogenblik twee tactieken toe in uren die gepland moeten worden uitgevoerd: (1) duidelijke doelen stellen waaraan gewerkt wordt, (2) een rol kiezen. Het is moeilijk maar het werkt. Voor dit uur (&frac12;10 - &frac12;11) zijn de doelen: 45 min Winograd, 15 min Jaarverslag PWN. Je moet uitkijken met het stellen van doelen waarbij producten af moeten zijn.  Als het niet lukt ga je te lang door en komt het volgende uur in de knel. 

Een uitspraak van de zondag overleden Liesbeth den Uyl: "Angst is nooit een reden om iets niet te doen". Je kunt dit opvatten als heldhaftigheid: laat angst je niet weerhouden om je te verzetten tegen onrecht. Maar: veel mensen worden in tal van (ogenschijnlijk niet bedreigende) situaties gewoonweg verlamd door angst. Is het genoeg om in zo'n geval op te roepen tot heldhaftigheid? Nee, 2 andere zaken zijn belangrijker en noodzakelijker: (1) troost, en (2) tactieken om de verlamming te doorbreken (zie boven). 

Zojuist terug uit Berlijn, Fest der Einheit meegemaakt. Thuis: voorkamer boven opgeknapt, deursloten veranderd, etc., etc. Niet gemakkelijk.
Vandaag een gezellige dag bij Geert en Nathalie Janssen in Delden. Heerlijk gefietst naar Zenderen en weer terug. Nog even een paar fotootjes. Kasteel Twickel en de molen waar lijnzaadolie wordt geperst.

|<<ximg width:% "/Foto's/1628196317197.jpg">>|<<ximg width:% "/Foto's/1628196317187.jpg">>|
|<<ximg width:% "/Foto's/1628196317176.jpg">>||
Het is nu 6:39. Gisteren een heel goede dag gehad. Vandaag EARLI voorstel de deur uit. Een flink stuk opschieten met het VSE verhaal. Is er nog nieuws? Even Teletekst raadplegen (binnenkort op de computer?!):  In de V.S. is een door de Republikeinen overheerst Congres aangetreden. Eerste stap: wetsvoorstel ter eenzijdige opheffing van het wapenembargo tegen Bosnië. Clinton zal, net als Truman in 1948, heel vaak van zijn veto-recht gebruik moeten gaan maken.<p>
Sneeuwstormen in Italië. Problemen tussen de Israeli’s en de Palestijnen over een nederzetting op de westelijke Jordaanoever. <p>
Thuis: Kerstvakantie. Bezoek van Jozien en de kinderen. Nu eerst de planning. Daarna nog even een stukje Underwood & Underwood. Weinig klungeldingen vandaag. <p>
Het is nu 9:21. Helaas een stukje dagboek kwijt geraakt over uitgerangeerde IBM-managers die met een gouden handdruk tot 1 miljoen gulden zijn vertrokken maar nu zonder werk zitten. Outplacement bureau in Haarlem heeft goede adviezen: Van Ede & Partners. Zit Menno Heemstra daar soms? Wat je in ieder geval moet doen: expertise opbouwen! Hoger onderwijs management. Voor jezelf een management cursus hoger onderwijs management in elkaar zetten! Daar wekelijks een vast aantal uren insteken, net als met de violen van Sara en Cathrien.
Wel spannend, deze nieuwe en waarschijnlijk definitieve omgeving voor mijn aantekeningen. Sterke neiging om hier steeds mee door te gaan, maar ik ga er nu mee stoppen.

Gisteravond gegeten met Frank van der Duyn Schouten en Peter Hollander: jury van de scriptieprijzen. We waren eengsgezind en er snel uit. 
"""8.08. Thuis beginnen. Nog twee dagen, 3 zaken: issue paper, didactief column, bijdrage liber eigen onderzoek. Dat ik nog een beetje helderheid van geest mag hebben.
!!! Vijftiende vakantiedag
Vandaag een rustige dag bij het zwembad. 's Ochtends natuurlijk de cappuccino café Garibaldi. 's Avonds naar Monterchi om daar te eten en te genieten van het  Monterchi Festival. 
Intussen oppas achter de rug. Wel wat spatjes van Els maar Anne trad ferm op en daardoor escaleerde het niet. Ada sliep slecht maar was verder opgewekt. Begint aardig op haar billen te schuiven. Even de soep opwarmen.
"""Alweer een avond met Tobin en Brazier. Ze hebben een manier van converseren die regelmatig doorkruist moet worden om de avond gezellig te houden. Tobin is daar wel gevoelig voor. Ze is bang om 40 jaar te worden en overweegt om ontslag te nemen. Alternatieven: Frans studeren in Parijs of tijdelijk een goedbetaalde baan aannemen in Singapore. Vandaag twee goede verhalen gehoord: Allan Collins over Cognitive Apprenticeship en Salomon over van alles en nog wat. Morgen vroeg verder.

Kost moeite om het plusgevoel terug te krijgen. Gisteren de presentatie. Het liep met elkaar niet slecht. De reactie van Marco Murray was eigenlijk nog al bitter: zolang we geen geld hebben om equipment te kopen is sophisticated blabla over hoe je het moet doen onzin. Gistermiddag een mooie tocht per tram gemaakt door o.a. het Garden District. Prachtige huizen uit het midden van de vorige eeuw. Veel groen. Bijzondere vogeltjes. Nog steeds schitterend weer. Vandaag een dag goed de conferentie volgen. Vanmiddag lunchen met een mevrouw uit Peking!
Avond voor de reis naar New Orleans. Vijf redenen waarom deze dag waard was om geleefd te worden. 

(1) Uitreiking van de erepenning van de stad Harderwijk aan zwager Jan en ook een beetje aan Janny. Wat een enorme lijst van bestuursfuncties en andere bezigheden voor de gemeenschap. Ze hebben veel samen gedaan en elkaar door dik en dun gesteund. Leuke feestavond in het stadhuis van Harderwijk. 

(2) Vanavond gezellig gegeten met Gerrie en Cathrien. Cathrien is nu nog bezig met sociale geneeskunde en gaat volgende week beginnen met neurologie, weer een grote stage.

(3) Goed gesprek met promovendus Stan Buis. Nieuw systeem van aantekeningen maken werkt eigenlijk prima. 

(4) Uitnodiging om voorzitter te worden van de stuurgroep Betapartners. Vind ik een hele eer.

(5) Positieve mail van de rector.
"""Rolling Stones na 30 jaar uit elkaar. Werken, i.h.a. zinvol bezig zijn, vergt strengheid naar binnen gekoppeld aan vertrouwen in de goede afloop.
Misschien goed om als voornemen voor 2021 een lijstje te maken van dingen die, gegeven de beperkte beschikbare tijd, niet meer gedaan moeten worden. 

* Dingetjes proberen op de computer, daarvoor is de tijd nu echt op.
* Dingen zien op tv die je niet echt zelf hebt gekozen.
* Nieuws checken op de telefoon.
* Telefoon toelaten op de slaapkamer. 
* Ongeduldig worden. 
* Zoeken (nooit zoeken ...)

Er zijn natuurlijk uitzonderingen zoals vannacht. De bestorming van het Capitool. Trump die zijn aanhang de straat opjaagt en opdraagt om naar het Capitool te gaan. Nou, dat hebben ze gedaan. De plaatselijke politie hield ze ook bepaald niet tegen maar schoot in het gedrang wel een vrouw dood. Waar heeft deze vrouw voor geleefd. Het Congres heeft vannacht bevestigd dat Joe Biden de 46e president van de Verenigde Staten gaat worden. 

Waar gaat het naar toe met de V.S. Twee mogelijkheden: (1) Trump verdwijnt van het toneel en de Republikeinse Partij splitst in tweeën. (2) De angst onder de witte Christelijke Amerikanen neemt verder toe en de Republikeinen keren in 2024 met Trump, Pence of Cruz terug in het centrum van de macht. Maarten van Rossem kiest het laatste alternatief. 

Dit was de verklaring van Trump vannacht, nadat het Congres de verkiezing van Trump en Harris had bevestigd: "Hoewel ik het totaal niet eens ben met de uitkomst van de verkiezingen, waarbij ik word gesteund door de feiten, zal er een ordelijke machtsoverdracht plaatsvinden op 20 januari. Ik heb altijd gezegd dat ik onze strijd zal doorzetten om ervoor te zorgen dat alleen de legale stemmen worden geteld. Dit is het einde van de beste presidentstermijn in de geschiedenis, maar slechts het begin van onze strijd om Amerika weer groots te maken."

Het goede nieuws is wel dat beide Democratische kandidaten voor een senaatszetel hun verkiezing in Georgia hebben gewonnen. De zwarte kandidaat en de Joodse kandidaat!

Nog een paar mooie foto's van Mercia en Franca. Gisteren opgepast. Franca kan heel uitgelaten en ondeugend en ernstig zijn. Gistermiddag liep ze een paar keer het halletje in, deed de deur dicht, plotseling weer open waarna ze luid schreeuwend naar binnen stormde. Wij allemaal schrikken natuurlijk waar ze weer heel erg om moest lachen! Anne deed een puzzel met haar met lollig getekende dieren in twee stukken. Ze viste steeds met gemak het bijpassende stukje tevoorschijn als Anne een bepaald stukje gepakt had. 

Mercia wordt echt een schoolkind. Ze kan heel geconcentreerd en serieus met taakjes bezig zijn. Vanochtend bekeken we eerst op YouTube een video met juffrouw Irene die een opdracht uitlegde: ga eens *voor* de koelkast staan, ga eens *onder* de tafel zitten. Mercia had natuurlijk helemaal geen moeite met deze opdrachten maar was toch bang om ze verkeerd uit te voeren. Ik moest het eerst voordoen, toen deden we het samen en tenslotte durfde ze het zelf. Dat had ik niet gedacht.

<<ximg width:100%x "/Historie/20210107 New York Times.jpg">>
"""Den Nul, vakantie. Enkele dagen in Amsterdam alleen gezeten om Sara's nieuwe kamer op te knappen en nog wat te werken. Heb het gevoel mezelf slecht in de hand te houden. Stress? Overspannen? Baal wel erg van werkoverlast. Moet iedereen voortdurend nee verkopen. Lees niet, schrijf alleen maar onder hoge druk. Ach, al dat geklaag is toch ook maar oudewijvenkletskoek. Probeer deze vakantie een beetje streng te zijn voor mezelf en de omgeving een beetje buiten de deur te houden, tenminste als het daarvoor de geschikte tijd is. Wat zijn de "projecten" voor deze vakantie?

- boek van Iris Murdoch uitlezen
- paar artikeltjes lezen
- hardlopen
- fietsen
- tent opzetten
- administratie ekklesia
- iets aan het Hypercardboek doen
- auto laten repareren
- praten?
- naam verzinnen
7.45 uur. De eerste helft van de maand mei geeft mij altijd een feestelijk gevoel, zeker als het mooi weer is. Uit het raam kijkend zie ik een duif die zich, dik uitgezakt op een boomtak, in het ochtendzonnetje zit te koesteren. Gisteravond was er op de t.v. een portret van Leo Vroman, fysioloog en dichter in Brooklyn. Ik heb grote bewondering voor zijn manier van leven: enerzijds een toegewijd onderzoeker die zelfs het Vroman-effect op zijn naam heeft staan, anderzijds beschikkend over zoveel distantie ten opzichte van zijn werk dat hij de tijd vindt om gedichten te schrijven. Het is heel moeilijk om zulk een evenwicht in je leven te vinden. Als de kleine er straks is zal dat zeker nog een probleem vormen. 

Wat zie je er mooi uit op het ogenblik, met je bolronde buikje. Je draagt mooi, zoals iedereen zegt. Ik had niet gedacht dat een zwangere vrouw zo mooi kan zijn. Je hebt ook echt dat stralende over je waarvan men beweert dat sommige vrouwen dat in hun zwangerschap krijgen.
!!! Zesde vakantiedag

Vanochtend vijgen geplukt. Anne maakt er jam van.

<<ximg width:300px "/Foto's/2021 Italië/0909 Vijgen.jpg">>

Jam is goed gelukt, een flink aantal potten. Vanochtend verder gelezen, Tolstoj´s verhaal over Luzern uit. Vanmiddag begonnen in Sherriff's //The Fortnight in September//. Nog even naar Servigliano geweest om olijfolie voor de kinderen te kopen. 
!!Download

*Download a copy of Stroll with the tutorials included:

**Click the <<icon {{$:/core/images/save-button}} "">> icon in the sidebar of this file, and follow instructions.

*Download an empty copy of Stroll:

**Open https://giffmex.org/stroll/empty.html, click the {{$:/core/images/save-wiki}} icon in the sidebar in that file, and follow instructions. 

!!Saving changes

*There may be a few steps involved for you to get Stroll to save changes the way you want it to. And everything depends on which browser you use and whether you use Stroll as a single file wiki, hosted online, with the ~TiddlyDesktop, or with node.js. See ~TiddlyWiki's documentation [[here|https://tiddlywiki.com/#GettingStarted]].


<tblauw>zaterdag 2022, grijs, 7°</tblauw> 

|customTable|k

|^14:14|Vandaag gaan Sara en Toon verhuizen naar het Sumatraplantsoen. Spannend. Tempo zat er vanochtend al goed in. Berend helpt mee. Twee Letse verhuizers, één boomlange kerel, doen het zware werk. Vanmiddag om een uur of half vijf even een kijkje nemen. |
|^14:18|Stel dat je een beperkt aantal taken zou willen monitoren, in de zin van plannen hoeveel keer per week, welke zouden dat dan moeten zijn: muziek, review, piano, lezen. Zoiets, om mee te beginnen? En hoe zou het er dan uit moeten zien de komende week:|

|!week 4 |!agenda |!muziek |!review |!piano |!lezen |
|^zondag 23|koffiezoom, Sui|Juslin||spelen|20 blz|
|^maandag 24|God en wij, Toon jarig, Sui|Juslin|reviewen|||
|^dinsdag 25|VEA vergadering|Juslin||spelen|20 blz|
|^woensdag 26||Juslin|reviewen|spelen|20 blz|
|^donderdag 27|Els en Ada||||10 blz|
|^vrijdag 28|koor|Juslin|reviewen||10 blz|
|^zaterdag 29|||||20 blz|

|^14:31|Helemaal niet gek. Vandaag 20 blz lezen moet wel lukken. Nu 10 en nap|
|^19:30|Nog even 10 blz lezen.|






"""
\define dets() 
<$details summary="$(currentTiddler)$">
{{$(currentTiddler)$}}
\end
<$macrocall $name="dets"/>
"""Op school stonden ze op het bord geschreven,
het werkwoord hebben en het werkwoord zijn.
Hiermee was tijd, was eeuwigheid gegeven,
De ene werklijkheid, de andre schijn.

Hebben is niets. Is oorlog. Is niet leven.
Is van de wereld en haar goden zijn.
Zijn is, boven die dingen uitgeheven,
Vervuld worden van goddelijke pijn.

Hebben is hard. Is lichaam. Is twee borsten.
Is naar de aarde hongeren en dorsten.
Is enkel zinnen, enkel botte plicht.

Zijn is de ziel, is luisteren, is wijken,
Is kind worden en naar de sterren kijken,
En daarheen langzaam worden opgelicht.
"""

Te Middelharnis is een kind verdronken,
Sober berichtje in het avondblad:
onder een hooiberg die had vlam gevat
en naast een zolderschuit, die was gezonken.

Zes dagen heeft het in mij nageklonken.
Op het kantoor vroeg men: zeg, heb je wat?
Ik werkte door, maar steeds weer hoorde ik dat:
te Middelharnis is een kind verdronken.

En kranten waaien weg en zijn verouderd,
de dagen korten, nachten worden kouder,
maar over ’t water komt zijn kleine stem.

te Middelharnis, denk ik, ‘k denk aan hem
en bed zijn hoofdje tussen hart en schouder,
en zing voor hem dit lichte requiem.
<p>
Status: <$select field="status"><$list filter="[tag[#status]]"><option>{{!!title}}</option></$list></$select><br>
Inhoud:
<$edit-text tiddler="Dummy" placeholder="Your text goes here" default="" rows="1" minHeight="1em" class="my-extended-memory-field"/>

<style>
.my-extended-memory-field {
   width: 100%;
}
</style>

<$transclude tiddler="$:/core/ui/EditTemplate/tags">
"""

Selecteer bij EAP method TTLS.
Selecteer bij Phase 2 authentication PAP.
https://e-libra.ru/read/593222-joseph-roth-a-life-in-letters.html

PART I. 1894–1920: Youth, War, Brody, and Vienna <br>
PART II. 1920–1925: Berlin, Newspapers, Early Novels, and Marriage <br>
PART III. 1925–1933: Paris, Points South and East, Disappointment, Tragedy, and Triumph<br>
PART IV. 1933–1939: After Hitler: Work, Despair, Diminishing Circles, Work, and Death 


24-05-21

|^|^16:43|Levensloop tekst|
|^|^23:40|Nieuwe indeling levensloop|
|^|^11:22|Eerste vak vullen: Jeugd Oorlog,  Brody, Wenen|

25-05-21

|^|^11:06|Nieuwe indelig in prezi stoppen|
|^|^12:06|Nu beginnen aan tweede periode|
|^|^14:45|Verder met derde periode|
|^|^15:14|Nu de vierde periode|
|^|^06:37|nog 22|
|^|^06:42|nog 21|
|^|^06:46|nog 20|
|^|^06:48|nog 19|
|^|^06:56|nog 18|
|^|^06:58|nog 17|
|^|^07:04|nog 16|
|^|^07:06|nog 15|
|^|^07:11|nog 14|
|^|^07:30|nog 13|
|^|^07:34|nog 12|
|^|^07:36|nog 11|
|^|^07:42|nog 10|
|^|^07:45|nog 9|
|^|^07:47|nog 8|

|^|^16:04|Nog even hoofdstuk 5 opnieuw lezen. Hoofdstuk ervoor zetten. <br>Aantekeningen ervoor zetten.|
{
    "21 maart": "selected"
}
<$list filter="[!has[draft.of]tag{!!title}sort[tocorder]]"><$link to={{!!title}}><$view field="title"/>
</$link></$list>



| <$checkbox field='a' checked=1></$checkbox>|{{Subfiets||dt}}|

@font-face {
    font-family: 'vollkornregular';
    src: url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAHqQABIAAAAByXwAAHonAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4bg4w8HJA0BmAAg1IIJgmEZREICoPOLIOKGQuDUgABNgIkA4cgBCAFiGEHhUgMgQ5bWKRxgW3T6IehdgIlZe1vWtNPxdiW0aw3E7IQ5N1SdcAG3QFelboFJPv//5TlSobCxxvw0cTabl0tu4phF0ZHCjJjBYmQCI6CPo2YTRcLGln1Wbr2AU1bvO5Ni9YONhqN3IU9kNE5cJXe/JK3iyaV0qDicqtIh9wNJ8VDolPHvNnsj391jGO/6N63/lRNaDUSQaJl0gcxNKDqgaq3Kml4/5xf3bj+qdmmsD3JD/SlixoKJk51ceMZPVuLpzfEF/dkjeuw5YB5Nv0YNC1BFjnkaRA/Zz/78hJCEpIQMexBArySIHrBrqF17GiQC5SW1qkFScu1VBw7p2bgVbSiih/99JeeiHCps385AtvBXdmJE3aAjja3yv2cHjD96YGKorqmElE1Btmz90hCspFECSsiRUAWjUTNQsalfBzBTOYsJSs5sA4Y3tu++yybkhzCtwTSqzNSnwLHzrIxuJzFA8ChdKvYWGMfxNIBxQamTAxmEowEUkglpAILq7H1W1avtO/3Xq/9/I9ANvMIAcpXoaeU6syyZY5jR5Hjiw0cb2yKlJimHLbpQQ+kWA+kB9IDdc2zHojnwxMLMjs+/hwOh8PlcLkCA5PJ9BXA/wCtzYP+v0++ooj7gi/gn6wn2ykGYfReQaeNMaOGseg3aonTubl8a1HCotX5dNqnjWThaGaEI0JbkmXZLEPs2OHNhpYg+w8IKyiLq669d11/8+bUl95u0vs3yXaatB7YicMDhqiqq6ba+HAHuqb/OKQShwtAif0xAQFIJ3WmM/a7PmA3ANi7dipvy2frOSsaWDLGsj9A3ESy1sJjv2y7wt25nckdJPP1n7X04nriaAohmzDfqcfiUFWo1jzG0M3UziHtP5tlj4905ukF3QKLsEdabYusNSAHQVD1u0Z6z5FTB4mTzEFmi9Z0QnD/2Q8ATBlVlWXtN3W6woyQhTnZLLEB3v//UrW29/2qkt6H1N0G21Ed4qQgT1gDJG2dM8sV8H+RKPxfkIBfRUtAsTVwkRyLBVIHLEgOYKuPqWTQkR3TbmYXI0l5nFZST0jrWezDZjfr1cA/tVTpWi912Q/KBJaOMgYkFGr3XO8Fpa+PWUhGDSlGwVCT/1tq0t231xq7ABLCz1WX0gEJgfaf9Y2tka61hjQz+/evtM1W1hK8wwnOCw2mwWxmrBQdstIKgTD//5qf9r1M5tPSTwFBuHZtgYQBFm7mvsnAe5ndyftZSGZhNvmchezscgqBhUlKzPl/SwwO2bWKSFbVVVuSrXCtMKLHlyWgqtP1v783dRdwxRYXNK1QCAKablmRjMe31fvu+We3Y8ZjDUuzVgSjmVhphYKhjGcW1zAiYY9gAEOQO354grbOAsDkAQNsYWahBY/zLZsn9bzU7q4oJhhjTBAmBM/c/O/+Ut9IgBhe/FHzRjA7HHvqsddYWsAZ6T32J+b3KPEIs6GEEM+xv1fXSB/Tx/ek4s386+q/zrXGqFVVVVFRT0RE1fjbck7tZV6oACUJYreH73qt91SmWoloY5DA/vcztvqi3F9zGbstKlhgEq8Y754AQP7L8eKX8acB6D4W3wQABp4IroIARAAVgEIQnyNowN7iPy8wySycU2eSM6C4/ffixfC5O1lqRwgagJF/0e3/+oep2+93FEJ8153Fdiii6JkmKTxiREjx3nwc5j30oitBCHBxjaj78fU2YKNddPaoFerae9Xsxv1FI7t+MA6w2KvkZnfwyW767KTe/FvK8k3+1WZt0mwK2xSz6bchcArYHLbZtnne5mqi3TSf363usWyZtOWPOWlr2fxl8WlqtnBb8VO0bsJNaqvu2iqNv0373XtX3wiTOtvpLZZGxUu2H9xt+5dDQRaa9HOrz1+X72L91WePZefz+cv9buwdt6tmFXvjWc0S3h4INrxKDqXgWnrF3DSKcV0LEOvGQw5TmUa+9goLodQauMxVbtiVsVsYXA31FdjpSsnl2iD6Tmp3C6GULroZZOhKRl4ZrZ0W3E1TwIbUA4000ZwjDY7Rklbs++08AR1N7ZzylHCaM3+4Ym7/A0gEagvq4A2f7+ORY4elLTe4xVLR7g4xnNG6TcVtEE09lsI5iSULPzYAqayM1xQ65pL+2pZxLVDmyKNsRlVHHU2Xo62pS3RrqLsMz4boZfpWxx80QjiRjs9kYvVsEhvAZDdxCUzClHZOmVmrmT5lhpNJlu820hbibnYNkKNONXKZ5vTQzq1zsWvHQqOUjWxiM2WUU2HlAqUK3Abb2cFOdrEndaX12FBto9B0t7kOOOgewsPhypEN4Kh4TGxJ0oq1rRvbhQ478x5XT7gn+/MUnlbPwDnPN/JC3ovipXXzsnrVvCZeF7ti2S32de9n5mDCS4fcN2vo57qPQ9PX+Ya2tYkHwWFXvDL/IkQcRSvqJpq49bUeU5oHpMQ0LCrVYfTQSz8DDB/2xGu2WYSIdQ10XVEC1N4StVND15K4QdxLPdCscwz94FFhAyjK6LCy7CfsXJaKq5wuu9WeInuhfzXQDzlPYMLhZKaDbbqGh8QMxMxkUS57GK/d9Sf0ocyLfNNjKCyqsmkjmkp0oHsSj5a+U5pLjeG0s9MO3Jh3k7GZMsqpWFX+02Ufiwo/oLPOaX+3OVTA+72LZtG2bnOpyyEYkjoEjeiw8SDYJbgdRgDe9MXTEXbAaaKlIRkjv0jGCpB9FCnFZhs5bG47kZdj3qGkUZr7zjOtvCeE817KD+J1eT5E+u646NCl5/K6bR1V1aKpqPW41U0p263sCqC+7caGvI0VNu1UJ7t3lxwtxrGa2ZKkladtXYx2YdBhZ8YzY1/O9x21z9Z30WY94Jt8LDy2gtozKT1vElU1mk7O2nn7cjUfE0g0KfVUdsJ6bKxLU0FzjvTCONZjbMmkladtpJ3CDrOzyBPRxqlu4mnlzHK+EflZPJM+ALiglz/Ii02JXepbUpqa2expKdJKkfYyHQR2ZlZneqvGLKDOSfMM/vTCnPodLW1+1ipr6/V1Tpq3xjw49vzUIsMbIYWG+FMpdmsZWcxVYySxFYtch9BDr32l9svXgfGfEl+aw9znyADnX7VDxz4p2pxtfHB5biKAiEyISdrnFnMAE+SMFCyssKkorZannd0OSae4nCDgTB+SlwRQ31bxIjVZOMxxTvpaFA4uV8PaSnAhUdfeuvY2S1yBxTlTp5cTVfBxXXsb933waquPUBFHCnEtIoP4ljFXiElsV7TnLcSiOh1Yihsr3ISblTLKqaDSrlK7safaXtIH9rsD5DNwsMiXwpDDmZkcVi/3QcIT1pPdNhnimGsWuQ7ooZd+Bhg+p4ov2v6l1yaLAG/BFYKYIhz00Es/Awz/TcQWAFGkJ2fSBGLNo19iyrEo0SH00Es/Awzr2oRqqr+obpLY2oivCvm9bamesEa9QZ+DaqqpptrqBYiev85cevTnPHfyJxC3XL38hkVPOOixF/oZYFjXJlixYsW6JrFl4hvk97bFOmFN4g36HFixYi3WCemG27MyANrpWE++jOnmfd6gnY7DYrz6/Y4QcS/juzUWJTqwHTuwB3uhnwGGZ0nDChW+Qaxv77i29R1XxacqVHgiPtW1U6FChQovAC5P3poJxMkAi1wHaQc67EnshX4GGHYWZ4nF/9Hjf1AFhMSkXMnIKahoaOm4cedBzxcrQIhwESJFMYsWI1Y8iwkSpcuQJcdU08yRr1ARh2VKlFpljQ022mSzMuUqbLHNdjvstMsee+2z3wE1atWp16BRk2ZHHdOiVZt2HTodd8JJp5x2xjmXXXHVDV269ejVp9+Azwx66ZVh1HWvoyHrV++WdGXeFiuIeVrmhGre1sQD0Zt+BghjsixG71SS2kEq+F4pF/lfykskr1v41huUSZb5taV9qghnxo+EcFtT0XaP7NpVSG31Uza7Fasd2275T8grb5XlMsS+OP8ZEiRHGAEBIN3JQML2pO7ffyGK+m0gR52H3cUGyMBHRroFbcoqVfQztie+bJAPMdSRuV9Ug7f+7bMQKY9zSb4+Awx/Cwb3NHkLEqNxl9Xll08J3RC3A0KtJm8wb1RgirMBcqokqGylIXiwTRmdlGhPAuc9ZZR5XxK48Xw6wsjRPaHaBRQJk7fxpaavl6uqHRYmskz8+CVqV0hrqzhpCXtHqOnIlCjO09JrWpY8+WdpEJbB+2CJ1sVmc4XFT3I3T+AZpURCDiSkcEVMCXy2LKfw5J4Xq4Xmyx+EHVZZNiMm/yPIRv2WGI7zel2EXNVqX0dRoAHqKByQckADth6egUHsULCr/HU+U5pf4f73kUgn5DRLcvBKjOy72ZKAACQUGvMUpbNxLBRlmBV4rmB6fkw9AOmDY1hrfZUQNYkgnbEaORcpnf0Of5hMGxG32MScdOIRzQt07WW1MbUNKsMiE4bA7M5ZkfJzsBdDmGyLTDQbqVTUPKczsiCXZUGWMRQVKqi7a5Hvt3N60978baxu2EXXumzd9PVDDC1y+xT9WEiQZ8k6GHhsbOY+RZkeEP+BUYHrgdTVNTuaODVGWDXsq/O1C3z6+u/qJs5ep9FhievYBy09qIQAwiXRXveWLH3hVDskJzvU8Fooy7pAVHyoymWg+TQrHAOlMo6Q+Jw+LpdlNAWumJ40dCdgDscO6jktpOlsUBAx2EISfYS+kzeSHmk5Jx9b72wiUQVvH9AXk8UgtVpuq1gSoCSvjLfKuGn0of5TZ7D9TwhICRUnke+T3mKfbNi/OS03etWljOiuoQlgW3Wy84RZ6mi22SmNof2VyXbMXjS7ESQ7oFmkf7kJI6lAZ3c5J9CjV3APMwTSA00Y4zmKGYg1X7x2UeNHuBtyqMn0ug2L2A5MSxdgxsPzyFMR1HOvtc5VxaTIwAKqSHYSbaU78orbQnecqwImVn6zA+BRI4c/0YLemOuzV56tpe5TQOyNjVCxG3OLVfdPZws4XtNvbNvtU6Ouu0ZIzYujVV3vPc1Qi9zg7plO9AsIlJyIQIN5Nf6JhKkiBKASfoiqeNjuiO/AZAr/Vadwg6/0whcrX/yYPKjlmfGHt3fhDkogUyv+wVbeYQ/gcY1Jx1ZEogMQJwtIIJNh8Mqp0XD9IPAAcyCb3s+4Nl2n+1LYTA2eJpaoRqvohFhFjlnu1z14ZjQn4RZqH9Gi/RE7FWTIALnja8Mr+PKWMHZ+u/DoSI1ZuxNP9cwA3Hy/gc1e8F1o8zb9OhmzqT/6jJgcv/FQNDMG81CPyR2kr8QTU45Z+uj4teSsaiuf2bwiBdJvWiT7GpPsHFbj1fO3zIlssHzAZNFaF0zJo/Ethr0NFuQ9SyjP9YTTD7RTI0vzKCHqSuBzJfS3d8USrDDbmaBMfDKBDw6Xz/1OajWYDr+nlnO5dkQBXKJOhwaU2xT6k8y2YfgTu1DW/bASinnrrf0RZeOUzDwwDy2mx/NqBOFUQ94Yp/gynOxz3ciGMPOmR85agJ5EYetJ6OMcVwtHoVLyLfy2W5+hn+uXtU7fGjSL4tMc0vUURPWJOEYwWBZYtLx12UbLR+TnMU3P0dvaAIUqzBrvDL3VDRAEw4eYvG5QR4ezNWt67ukFltZC9KzBR/C8IhK8bRGtNQGx1DejfVchdvZNCAkgFI0WBEgAMEj7kw/jLZoAMBFgEHirypmX4gjnRQaIo6DEl8SL4hpzWgbi+fAFaGis0L+WhSMYyhFQE8FNbyFhyuAedezM9xklTCQizUh8lRkBQgBzbdKHlBllwslEJeOoCsOtgIAGx5aQNRkNwWosCsWatipYPaSJiJLXKmJZwIMV/jKdGkbBxsA884V8PMZIS4yp7wLY7IVipN/O5IdNuMEpJn1z8h58ubB5SzYfATCHuoq2EvUeFQr0ZmcJlD+ymNRtksESrCLeMCACEF3LKCb0ET3+FGosM2UrpSE7mqJRKHpfIhopp2cEaC4r7YMQkpZT2FmLrjEjQBFIipUGnax5H2A0mNGCq6KNIpONaROFwXsPAHyIZYtQfTN6wKJcvtrE52+URo2C1AiR/7NKKkw4V5GiycWKpRFvNK3xJnOXJIO3LFMZTZMn1FxzRciXL1KhIlEcHMyWKRGtVKlYq6wSZ4014m20y9v2qJGpzhlTnXODQ5eX1njllQqvfa4Sdd0l0GBje1GGMs7959kX7s+s8bx0tOhZsdj8oafB+iUbPddS9hWwjx7jyOlk/7pF7TpDhT4GzNCClw0spZcwkuJfrjoZ2/I33jdd21doq+eNcEtVtSKHpYoy7uBwbjknbcY5zjx4N/GakpW06rhOxC2MnGw/t1j0njwCxqQzi2z1HXeDqpTQhiiqgKX0O146V2BtdPySf1OU1CFwF8BKaV+7grm+xxuN/mqwksSjB3Xhn4oUwrWXx2KB3XR4ru5OIKhyuBOm17teC+Hf8KwK3exirV/bG7qROQT6YVbJyjQFHiQKy3VDiBcxJidY9mevHT1WBhmhuqQAPRHoDXxDwXv4kwV7kJUD/d8OPwUoVyuUrTqWaz8y0GvMeysqtg50pfdvxUhvPHncKZbNX40cTo0SWCHVhMerntzM1dElUABplm1GWsRpxHPnq5CbYV/ku6cVvDpDNgGhnISroB8pppylGXil5FtVktFHh1+0SO8Q+wWh7yMhBUAlbD5Lb5/LYMQFkFVl+sW+dl1NBj+uEHXoipfMRYku+wIpAAhz8P6Yv7mvT4kIXR8SzO3E5ldihdHCzECm00TFcBff9RB0TXmNBx/D+Es4SNUr1uIOcmU7sqZLYMzqrdSSyWGYUvC7zTIhv9wxP1/IY2DyOTgctAXslSWTq2CPN98u2xscb8l/j5f1J5jrq/06le2WemNPMD8/LPms2/Zie+DjoYJ4QcIcoFNzg4zWrbbwxLAwcqC62n8J6NrvVN7gmeqp7eM9Vu6u+/856BPCFG0HrGbUtLxPzS+/avuKfvKOgF3MxqxJwKUWPxTZwV5YPr1jan8wIZ74udEmp6dtb8Rd+gzo+9x+aEJd8ABjkiqZOVQ4H3OrxOQp/n6zag57by99P9CvJyub3cc3mo6Sp5AQ2RJTRP+OvhUkWUf6T0SgBpXKvURPbqjHNQEqS3L7ELLIFOTcY79l+QunBNnzq7hnLphzA4W0/c7eoUw7dlsmWgP09nXZzMx8Uo2AhFfqi/vpZQ+Ah5fPHvQp1mZzGECU/Uwpmkgz0NpY/Hwx+40wCrm/TpudB0cbPfavnqDnY9tHyORzcKQxUel29quR9hdNXwd2iD87UJjFQTitHBxGwCfedmql6OsAjnVv6BOdNHX/Ru/x7Z8LdHLPPmq4TuqNmLsbZ4pKzqbgG1NOXRs4aXcv7pRY0+fmUyI7IuiJ4d4xSb/6uG+sdc5exWe+xT6cbsiA3gsAh3p2B7ib3z/HoAILNMLoBXpAXt/9QjpRlBQUAikpBVFTC6Wj48adOxUPHgJ58uJLTy+AHz9cAQJ4CBaML1QoqQgRvMWIoRcnjkGiRKxMmZLlyjWFnd0otWrFGzJkVChsm1AFhHer6bjzKC4yYb9zFyxUhBhxEmXKZVdr6LAxFvs4ZiGgPFkwUQrXVzuRjnjirJUB0mu8MX/ySWdhITh+3fhJLCcTMqLWk1aY1HIxISdw2TvJ1Zcnj5tk3pXJSZNarn4nZbxrEzKoNZNPGxAxXr0aaSYyD52/PXn+gcHbr17eMe6riEjDqne/XT1jKofezp7cK+Y9NKAc1n7o432AQXW6qpd/EB02waUCJXB684imjF7m4jtT8GESxWISq1xz8AC0OdbY73jSj9Lnh/EE/8SzNlFJA+mSGZme9myiPT8px8XCw1Nzyv/iYt2dJRutG492HjwT+1gxMJoiVYbAwC/bRcNdrMhsQqa2BQEIRvMQPjLhkWx0dTOVSSaJbaKU+9NGVSqECCFehVabSKWr1yYUgpo+QREhWxWYHby2lyipqO3XBF6dfczJmUlf41GAa8xDvuhw6ekUMdoSqy+g6Oyzr3DjpbtQUJTvE4mT1rsQAz1idriegTM/CYQmfFX9JZ7NSpZmFNvZQfLMFGzee4XJt1C4xZaIUvSqmjlstAv6MVbAvz3OKqvFW2u90arsMsYe9awaNZvqyOvs6Y7plOfE2fOccsZ8589e6KJLFrmCcElxwG7B+0On0OKA9kQpSwvI9z/saqlm1ppz1lV2+OrwFkXFrPcnhFhdQSxE4Yl4dO67NtTvIp/Fz/ozChf53vFFHFtI3U/ZZNOFXIQJzGbfIqWq3iO+fd4Fd+7isquuvf97iGUacQg9NPkE182xKmyApH0hN2EjJ6uswes4mPEPiuB7ArhecJnLP8E5/WkA9PX58gfIZwCQH6MBwODAhe2OEHbfazAfoLUZ7MytQ+NzscZI+THL52YM/EzmAKNjPBkfxo8JZmKYvGzTe8/fxsh/IOCCURMrmzNg9jAaxl2cRAuKe/fG32sX9T39+gnw+MfYtdjFWDT2duyN2Kux07EjseUx89cXkx4CkDrtDVlg2Up41DGEYH2hk5zS2ye1309qD8C+DHK4PL5AKBJLpDK5QqlSa7Q6vcFoMlustvSMzCzI7nC63Nk5Hq/PH8jNyw+GCgr1WbbjeqVy5dTpM2fPnb8A/vub+vP1h2+/fzU2N7W0dbR3dvV09/als5lcIZ+yF85fvATHnfMWDq6oe+B5+L1FqPwISyH/cQDAkmdw6OsNc94AwP7sy9kbX9157UFXd/9AT+9ZcPUbvP751ZvPUfrTZ9j8zqaP3v/k0+qPt+/Atk/278XN74oBrASMfPB+NDGaLlyO6WabL9hMWaYI9Q4/J30LtaINpTbMJ5Gc5iSWBNge3cAz2qYje5Vfhr4QyYOaDDExX9SNgVCmpC1fTmEZjmlBo1jS3LBkZ2gTne9YLNmZ/4qQmRT/3/pzSGbBLU7OhJKQ7MVvMlyTS25Ohmdq9yEVaTaYitxcAZ2Mk6nd8FxuKc03yfo63macTcxlB2f5UYTC8Z2cFNovEbhe5lbNZM6DjolZSHkQPNJZSKBY9570UoklhCbmqS/nTGRiWpyMua66mlYOT9X15IgfWKiLUFlYWlpFoUTpTqr0XZnUcA+L7IVEcs3caXPeioUcOv3WzETfynOrb9uTFYRqWauyLTHp9a3jhn9339wWg2TbSlvBb3Iq+vlosjQzd3quDs3DSCkga1ylJzufzJRjlMS+Ay3UdCg3aTlNOWTdxJPjklMbo/pTcltf9QMVpmtU682YhfqD01Lcq7ha0mXayCFWWzpSsD1GBEgUEFnywzpkcep4oSMMwefDzEY7dwDTV5qo9BP4PSJXEHAEQDiVf6BXP9bo5fb/PK7U5DcpgGucAcMwwnh4caJq2CxxW4zVxAvGQ7o2RKruWkWNeYYzrSY/RarPaWvV3MhEp9okPd31cSsVyTpXSJYDzngqKqjfRKNcDwhb5V5wwnTJql6o4Ll2riXRprMQZGiZ/lTv9BAyFAuavBOftcXIgoBUoKoA8HwriJgHGJDGVUyzQUgHgFPU8XqdzgdlOwBABzJCuACHcMdWXlFooWLgVDH2NV/Xad1vv2djV1UOqmK+a0Pr/OzB3boLq/UkT0VgJ/fVLFMYpeQtwjcKEJQ9kwEPpIPsj2iPYZHFMbJ4ctyrlf2NfUzC4WaKpj5QM/ECsqzyo484sq5QWR42AOhadyaZBs8CjIksyQBBZd6iAdb6LDBLWTZJxg9f81ov+GEBliyCyEQuB4CcldKzsFKYIVAMHCoGxKE5hlkL1F9haOhjAmqh2dh1VQUQgsiEqWwvtMoqDHsOzuG5eQ7AyIKD6N0GyBsZbYi8cWSg4OTY7LPMLEGJSlIunPksQ3oGMlAAtHcwgBgiTCB2IF4ogABgMQPZGig1Umqi1AAoXomqzFsrdYsh6I4sAIgDbYmGpToL6zC5C5kEgMIxX3/gic4TkZE6MvNO6uw/jHlWV3KqTJEBXEoIgD69OXW0g7kPSBUxV2pLlRwR16SGNzNTGYq4XrYBkGuQSaWCupxkCawDl6aSSK85KyE9pUyeouRE+ynUFh4kZcz3kPYd60BK3eTMjOZMQjwCoKF8EbEt0CuDA+ASNEYM7SGdk2HMrEUNkNbwy5egoqBJHcf+VVadn5QrZqTTGUAa0Xp1H8i9XIy469r2DAPrEafHjt+RRtadVSZmQV81Q+8z1OyjlY9UrzN/I3cyJskSNpw0PjnVtyLnTjzCfBLIz25kv9f8sCdyokP1fnRW8VJX1PjMJXjERAp1uU5RRjpsZAIon2yF/dmC1NVV6wzV9WZJCFPqQM1XwX6q6xL1sS+t5AJSIkm0t9WLCmAEUVXWtZSrpJtwMudUARtN6Uimplh/3IXUjrBVW9gQgL2FXX+7tbSixj4g+DAzmR2RMMzoKZpRCzUHbh+6KSG91ipOQSPGInJeTAexbYlRQU2tbxBSuc2veChhpgHzSk7F4SJ/BoBIjabkgCpnU4ixv3/z2/TY7cEvSPuIddFoDpWvFQ0BaOxMhqOHs+3hDZhbn7wcUqJ5RBJN6Tg2FD+35KwOIMnPCkB0GPU4ne9ii8ZMpZ9CPipjPslhyZF5nHisctqhqxzSAitWP1cQooPeluUY8xQV2ffAZPh0w+JIssZe47iTo4YH9Vy0VV8FAiDGTk4SyzDQJptj09fdJ1OASGuoMMs3/dw6Govuh7f/IlizVdwGEqHyyzspUxMzAcnR5jSPNHn4VYXAIhQtAPGhec90swcQz3Auzu76hNLSIN1F64u5AXSupq/Wu/ByLHNw1k4bRMm2326Vhp9hokvJKpamahfhbfMkZoa0d9Mtr4V45a9SPLi4GJ+dOy9F0oBHcDVJFKm+H05oSz1fPf1gW0soXr246Wy/UZGq/wqHo6MlQKICIBVBWhgZ6YZ0h1i1x8fKtgtmWR9MeR4+cZ1HIfrFrUJvLBEmBH3iwbFbMgWtoiPUbSyZVn1OtPkTKlv8aCdcWpXUdNxWvW79rLbw6ZbfSJ1URxRN/0b1s9Y90TF6pxygKlwLNa/GkKPq29/YXEWR712+neEzzo+Qr4nHo5l0DE7WAJx4qDaAcSZKcqNBpAzmFNL+vINMGIx+AZZsCi0TF2oYxF2ijRqTkockR1+scgricpR0AJ7gXBEzxaTcWiD0E2vMzQeuTRgYYDZODsZxVfsR7awgj4N5EPPGNsePkWtP5Iq1UUni2IQuE+92+xLW0ZyXMg328gsmjHsSy5M80aja+/kfUCbxSiD1kktldi+NwSA7AXA6DUpeKcAEZqCSaaQgKxlTMxbwD0DGWmWzj7G2h2Fz1IVFiIECjQXMs9VdVmlZG9zb8b1ORfpdsjgYseAQYXlrbk8ROpDZdNqoRwhIqSS8C/KIo7A9IeD0b6toEz8OXCRzBWwcKtGsXjflFTpp5YFgyFFpUGs1fYCnULfAe9In+kIf0/MyrhMAncE1vqeEaj2ACvhMa9xzIcIGIa3YNuAtq2/bVVGvWzcCiQP3JCSF9Okx+zswBEAOeqW3oYAXqSCrGHWmESCn9kqyzchgUj5JXJXQXBSQTRkbDUfdsMN0+8PZ7uRsac6MGSFi36b7p9bDw/NCMcJSayT99Ma8V97RahWo6o53t22JinZ//Oj+iPVDVfwUFTWzA7BrB/5LMuQn3WPSoMDuGhnC9F4NTaIM7ZBr2uNjZlJNVGFF7yeCoGMrLeeBZjJVrAVEpizCOnAhMT2/a9RUahGUB5ZBpMLNZPlXyDuBiUPBSKb6dJSUmelazvutK/QO/kmFS3Xd7R/+wpo9q8fQn7NGCKFeh8lL4jvMEk0/zsPF8AX+kom6evZs92664zphJW9+zUVC27055R63mqexy+VbZf3jjL0JWzhH1ad35TZOtPzWStCjmCLBfU5O6HHw7J7jnGyjtiZF8Q/c+6pouwyrbmEPRqyz/IuqxAydWLHm6aj2PN6ZtEQOXsU9szawK7gEd2cNMSBaZg+eig9Tlz7bTV8fBp2ObmZlJYQ54Nhww74+1Fe6JSe3sG3yrq9+1x45KbTUI20vXkHuOw8edABW40xpjdg4K3UG/TRfF0WltOEIk3ZYpGj6bFR8yxb9yojC1RZtkXJUJJwPHUdJpMaHHiHMJplOzN7WCZvKPYfTwYrrBqj8UVEmxZrfNUFdMRoLzueQdA9PTsAgSRhqQB7pdLDIGW8piEWctPaRG/0QRsN8hywUA09mVMkBYztE60QYqLqzAERPcj6kDYgo35TMa5gvRlKHLeOcSC7WDwUhmzW001BF6FoQAyzInqpBvc6mx/qSKLFxoe3niGjO/tzzSIAYMOE6DsKGVXDpmHCNWAGMgxvx8pYS3Fwq7YZ4F3uq643P0XkqNK0HybgGL68bgyoZ4UieEJWZwLtBvgPDgbjTaIHRwb6vshwg/+CD7nKHjYsfacRBuCezAXGmeKehjGWOj0TrPdbb8cAmMfxGWnE9lbPa0bovugcQTiazms6ooBwc1s3H+4WSH6NOhO4sDd/XMvkuBcKg4jflB/4kZMwMW3g5wqtgt4kXPeiPoEVWrFreJ7+TKainIIw2J0Zu250LIE3n3owM5GbFvGVtWRjZhEZ5XG9vBUeXyisjRqBHIJ3kRgZE9K3rF9TQHE6lZEygjYAOnmVJAp7Nso25p7Su/vD72pqYoG4ZpHTXUuvTtbPGI6vDu18lgGiUFtpKoN66DxvxqEoLdijK0m+zyn6YdtrUw1L1hMNzyo5SGoRpN51VQmroBxAWWaCj1Z98auffKWcFcqJq+4ETKmpng/lDIX5OmMo+190DvtTKK6Vlyog7jcWDz5w+sIOFmawQZ8ghufcFqJrCzV14qlfgrpKiMZg2eA0OcPauGBoxqRWPHOEzv73NHUTKP6SngOrI0Vn3ka9dhiVskuUQ+N5mPKBKxvAIIEcftJzuZ/KGF/dUBzSBasI7Ik0NBZKU6lB3ImmRoUmNdn/wjJId6yptUeakvoYU8As2FypOoRnqY1vNzqPvUbvGibUbZhqXj8QbI7TpTrebA61dvXOi+aY/lb5nfYsE8x5J+bG0kZCDG/0Rd4e21PuhNmqK1cztkDNogOQmAVosS2NOAxPWwk+rfFBrLHJiY/naJ3Eaw7JdhEPKXRuIJRSdqM/70GAasbKiYvRrg9pG736TFYvK8O+LKe2uEZCFviGxK906jSCJGfyDhJ1OcJpR0Z+EMaN/ZXinTyZXZW+4ePphEMBnI18gSfJoefwn5FACEVvMyDf7vQQCsD+VuH6uH+uD/VPjRZpRJ9H8cVAXdAB1VMRVmt8vFclCAfNGC7KaeeD1Yu3RI41qQRvMyXIxlBymhxSY44himnRGu5mVsosNkFoGY+alcbhrvg8jxjOmr0E/9AmuSt909gKi9oxaGxqNnDAkpuOQZlsKhSYnEXw4tJVeHtAHXLm+P+S5Pd8JohUSttgi9VubfwkvP2x21BaAlH+UkH4HgTqJFxtoXL7AdgwD53WDHPeAEOOtkDsnT8BCdMAMA20RABVR4quhSgDsiQtPdVrzuOp9Wxkgvde+fIXhT/Di7LrrK6TBwL5vomZHjxj1rbXwBZBw8fTX3c0EhxOtfvYBfQAlWoxbahD3JnPwr9evEEchO+Fy6n0UcsrYkHkgh6wRXK6FGLGIDjBQftBw8aYv5avk3j1HeaV+wOzPGkumTKdSorkGAOFMmSXREEHpIlqiaCSOHNaZILyP/TY9JlM06w5qLRJts1t8jVRxxyWkTWxNOEkFBXhou1h0B54DAhCCxWTVQKeyhyCHweZKSmuan8zB3PeIewFSDoDoh2TNLOr27SQ5E0QEGNVKOljgwwjWQz0WsFhdc9d+rhBHKo1UlRSbGVW+vWIx/VWpv0VjH5grZAZaopuNguJo8pBmQ4CEVtS0MPeoQ8wqhqha6AwqhRbEmZ6EadLKfTdM7bJRERoApqHcp2U40p2NAfzeLOU41dMK3TWdxxFxTW+ovty33fwH0wkntfILIhsQzZPZlko/GuHfvDUgiEAMsinGVZKAsKWDLBIALV7f9Q83CvTmMAYZ2D2aXHyuXiCYuriLE5PAiM6CnWa+gLSuJORj4EqUET6jKwkzG7s5GBEIUvEE3PmHZA5t5KzkraGgTIF5HFFppUHjQcS/03a1JB7m/XEIZT929wG2EDdGdmZhA60IYfPZJJmsK4Fudz+lYZTHgpywBntkTCJsbVnOyeoabWUloz5v6r3b+5Fwo/Ck7VTx+ZjeczDCYSaz5qC1lVRGGtXAnsTAfU6rPxoVTk5fG5gabtPw/qCgFeMwONYiTeQbupweHK8Ntjojf6OFiQkXUhmZUEmERgYH8XwLjX6dl2hN9UTdeybozTg4ivKYELvoOuJfPFefTswqiYqxPrZ3i1yQHer96JvJ72Y4wkyJTs7RcCztJweul0g98ovpLAEidMvd7Swwr7WyW80lYuWfvDpDpWeNVuoJ73ZIuvFW3vLg+lrWFl4+q9snD2tvJF7poBa5n4/ERV/ssMDMNa0ptvYZL/0WJ5fzRjfEJBvEz99R+gKYqQRyEfGaJ5VvOhtbb6R4vUkPHt/XS2jGsmv/FOcCZ3hPnBQLnW5nHgzBnHwSh9kZ2TwZjY7BXqu1l4O4yOT8+qg1T5Pkk5gjmD35OFJj45uTj50U098o88ODskHDOoP/xwAz3Vz7s6VFcMU0l6R8fH/TqjIgm3lsAUp47KzoY7rmHyh4BjsjL0Pl3SG3k8Ir6F+VnYG+1Yc2fpNo2qL/Mkp+feDYVQnp/MK3H2dmrbbwZQHQuzfSzHeeuT1Wv7Mg6m9ePX7pptsXkQMObCd5z5Orar83NPTa6ceOXmmU4cFGeHiEW7Fu4FYcmV88xieWwJABIRA8W+lECOeE7PiG1djFcDDfgiWdmBvqfQOk96F5SCtfK9CioHexPb88HhsClngwP89LnwQFZct7iU4V1Bjrzq0XEmTelgS9qdTJ4HkHkbJQlTkv+o8e0xZukSPWdDwkqnZ2+ynYGu+TS8ZWL/eLf46qpZS3uqx8nRQWTKfa23srbzvOutWjm4H5PT+4b7sXtcFpvNJxoY00gvKHVlGz0Zlxy+NljzhmJl46vbNLz1F9GOS5HtF6h+SxjZdFEA7GyxuIRoa0aWJMvIXsqvG8Q+V+sZwiOVs8H420j0gG5K0hKPAkhqJ9r8kOjQc7X+8ulG2t5FsZknui3yqZtIfGqtt0UJjfEuaRMRUicGJO9vJFyZHp6Wxp/15uDrkQcQIraQe5/2UKAkFQqPpY9cpoC1R05dmExoiPSK6luFasJg0FzwpZ0iZ73LeTm/4Ups+iLP9LWOW45zSAhS+xEQ5tYn9Rkg+xlaLq9/LsU4RBKu+BuihzXW1wK/fQ7fOOYvf/v1UcR4UKDVSx1Bl2c2d+cao2vXZZ/uyLprjuhJPIefNZZx6PBkTwzA6JaHIRYt67dNPGgUS45ZfpbMmGG+nGCA8yy+N2Z6h3uWz101+CwCP+yWFt9tTCatTB9f9/SemxkppEQBxzapCoaCRICirLAvtX6SiQuucegfciXeWHSDZOfFCI5/OJQ3kVRPlUlSorIqIyLBic1XQ/X5UdXkvOvYqKIKam1nm7rnlfNvAaufenyjCUgFR0R0lOguRiDQiUOKurvNXXa4UHbnLJ0IC8BNHzHAb2JznoQwh4P8ZAOGIJBBvzqZrUnScS29yQD3cIuN+/GZdM8QfU7UpW2lXuDWrHmUlocpC6cenMpwoHM67JMk4McOqwqUYR0NRq0xenHfopKtogvFTBdp0TAYZLQOQ2NUwTnnsd2Igj8uaFmBLMp34CHs+i9rkkNI8YNu1928TbsZhwbUlkf2cHAMdD2Ngd3ApmU/1b9tWyq8rIkY/aA88f2ECvQm6H74v3TdQjE2vB7cjVCUYSlka9gGXaSLQv/bZzN/7bXjvNiE9JMCVX5sAHnbjUljXqG+DWsZNgXEK8L6U2Hz7lxKW0ljFughVVX6F1S+oXbANKwHwN+jpvovWLHRXPDgCs5smXb3gWTb4+H7iWPPX6PU/L5JtceIfTWBzvp+//CMllehwig/uETP63X1Qk8GtUPqtZHSyXZvJ+1IGMOL/1wAPU9v9uMw1nVfJ//JJCoV+tyjFpVaVhQzCziru2bfI1zyJgKULCl5KvDqKdW0GgclqtekP506N8n1dp0kBytpuv4PndCp3eJee6Va+Ln/1IuVb53FUt5W+j0i2m/GUyKl0C1gf8Y69fd0D7lv8IP2f4MFDUcyn6hTzXbBL6IaFI4eGU3n6nRm9LDwlZhEDpBqHA6ZXqZbN3LXTkuQuIrLCE+56E8VAM1f7aa3EUVpwCLrTegJOsuMGyREfZyklnXrUpRC9yWKE+CmUTADPJxqnHLUvafin+7X2Wu3frb16JYbft3A1wKxcfnxRfkVybCMGXu/CwFgf3USl/T97+rMrzt4eVbvMU5UhTC+1k+nalr1E9asktmJadwnFhKp9tO+1kSxPliHlK6W76c2Z0Zd5+/p7Setmp0LQ1txfC2ZYp4q6H37zsTLIn3xi69h4l+8zA9c9WVrlV8/54CBBbXntf04X37Ft9ZsmVY/l7v//46Z2h/haEjK+jRe1zTiuPFwRCtQ9TqoFqf0GWN/5QA/qH8B9G29GsHBOhrR+uT2/c+E8yh2HL6joCI+lsMezKThqmoIvmB0LwQvUrfRWbJcHz99HZOi8Q95/9G1viXr5DEz1Jl1f7s6rZGvuQxdsTCmYPD0Ju9zOQd7iiWkDN1dm9IqXmDK1IwyUH1M4cqVI1zy70+OJBgmT061ucPzlnozNkITgTA3QRYbpuDmkgR2JnOX9yzj2KSAhgDADbnZGs2KwREh4uze9v2DJH1Z6Via7CC5D3JrFMpuZSEdWo9JOvaVmh3wZf+ezVH0/Sr7wKohomhZ5K82PED42A3FQLRJ9xLNcsSa1rufZrmCiPq3frrTm53tT48ILJFKs/1D61iEEJ7IE3DQ/GO3hYwAFpwPRM2rALTCnp1EDxZTJzudOa1bggo1Djo0x8WHQHMdW4GlH6HbYYgu9FlQk/zR5IJTaBN/XmNR741cDShPniczrb2tRgy6U2ptgplHg0MgnklIUo4cGx1PS/2aN6BqMDPz4GWpk8kxePMUcxEVJjMXaZJbsyx6oo9aYXM8WCj6a5j8qVE3kV9eZm6l13AFGTtiwfiizIoOXtvpAmgXWzIKXbTmVSmER+zE0TlDRWl2vZwWN+piynwazp7lJVly/TgvV5QLo+YyzaUg9OqIPyIH8pM4TOTy4zHOs6eeshNsu8v+mKc2AXXZK7FLPCrFmfnVeWLU4Vb0wW6+3pJlWTUiBzWlhvHLjNcVbl5hfVZ2dKyo7EjCuTZKqHYsE7icmHss6VOBV+TaC3rL6yPdgmoho5BZ8G6cpAvU05VJKvW1Jc22pvE15uVYFtojXNztXlC3Pb7Fwjwy7SMyGgQ8scNqTbc+gSc5XKVNRuy13pvIY/14jJWteJob/iys2xf197q/VOy3fhm1WvKuwLwtYr3YC5Gqw1HscYKupsGVKZ2w3IGsBu41H0w2e9C7kARuInG1Q3ex94b3v5w/ZBV7aktVrRcz0BWDCKG5/5rIdqzim3Z4ref/4lOiRFtGUsj4f/y3DKxNurvbuZskQ2RVJWjUr0/jJL2ogJ/4K4bPH9CuPO1uFtjoa+qZB3VWFIvMLRkGsQii4qqUAl6YpvSURevDUeEQre1mQ9xuD3ypZUeewLJ7zhvq0NvhPdedINpV0TWRWFm43W8z9K7zTalrLcq093l1x4szpf+UyRy8T4/VuMI6QmsRekFblLeU4yFi4fTik9HO+lrpC1vC40uaovjsOFZtxA5zcfpG2KQ/zMSSztuZeORUQisxjEHGY6FSEwTyzBJWPurnV9kHUr6UX+qj7xvyQYYWjSLEBMz7GxlNOr78yRD5zb4rz9KLxo39fXRDu5Z7+eFhER6jEaeW6OWGtJp2xQboUD5ihjG3IyjeryNn0xPTcfcGLVwFd/jfpuvcDn8tlVFb/4QAFPJrM7eTvY+u9cRA5yfAO3pMS0rKZ4WAJltVDaGhLyJJcGMHHZAr+dJs8qV5gD1HpDeXqkrzCoDrN2FO1PPtkvDVRvLAvtydXllp0DIBXjNMPQgaoXBjyy3sKQaMCRG1IVkXJT6HSvD5jbsGxhouCTHkF6I93nEPcVh9T9BdmtbDPR2FlS+SstxaIYBZIq+GSZQPG+m33Zkpz8XsBDMITyBe7hRhTzVZfA3pQu82Q+xf0CZCqMSoUoyNB+3YNMWqYi2eOhmz69b129D5XvYNsLgI9VT/7VOc6hV5eABCIxeRpWRu+9K8KjYqOzZF4QWLSqNL8vJ/5hASuDH0nXcyuKLEsbCkekDs8I5VxDgl9+djkmzq3weKnK4u5c/WJPpWGqoyzEfLgwBSHUKo/4gyIJgp0Tx2K5gTmY1qK2tSkUBPvSUytkxQ1TpaG9w9q9i8auixCIvXVqJEEUeXSWe4hz7pdNIjzqxiyDYQdWZ2lsMnpRBVBAfeB811oXqWIcBuqrWp2bWpmV8MZ5xeqiRI47DvOCN/roIvdINqJDVBLw/hpeIij1Q3lp+rsfl0ixEgII9HniISAKJ5mDG+//2nKGPNU+mp73bHlSQypJihNv6sPSsyqCTYWVftfvHY2gSo+9yNvmVP2TzX+1PB7zRJYPEFjOVdTITaFI9j+gBVhhBByfUXiDLiHBIpEZBJIyFk1yEO87ZiLTyL/8ihBOkHJ1j0QIJK8b+uNyvYQEn5kFdHHazDQA60l+vfOPOgWGVwg6wE9SJ7SIOVDAKZATcTRb8gUJJaUvSkRB7IF+JF5MuwNC5sO6w2YQukMT41AxNgaNCrIRRyKj0wgcJ7oRE7fzZsONHWNS0tWU2BxQRkgNJ0iJ20+YfunvB1PCEdMbd2hszDPcwlztkvLKBRp33VRJ8Y4Wn2ppWc0zem94srJgd/OSLNZQZmWlId1e5dEsDlRAm3uKPbYqh2Ghbyhex/UegCzWYRGFYYOsVG/RtoWdAelrVLzkwmaU4B+RIyuY11ABXtjyy88TYmchBWc7a79k965VUxe8pc341kVBzML4kmsTwTZC18je3n6QINHq2zvOfU2T4BAxN8AbVRgnDdTKFH61UuYLahf73whL7OcdqWfsiASpoCDerd5lvMKz/MjbFZGrVTf6kKZSps6ut/l8FSSd3veYc+6DMTERtM+KkNRs4HAA/c3bVnLywpRC7kwwrlanqw/FTaPQRBIha2p5DJ5nu6JGuRvBs2OJKLxoXnmJA6+Bc84x50V41LwDYCtjMz2SQ2oojoVmz85MwwnS819sFqjNjEqv3kGZcT3dnOo0/K2eunpDiYXPzLHRJDs7JY1dv3VKM1dCCHNfL6DrqtuN8o7cTP74+nEpoY58KDIDcKXs8zMwITXur9u4hHhCxgu6Ce1KSg6aDumXacdJjk9oIGnJZSkpNTY9gyaNBUG89Jt0jma0NcEwvikOwavzvOE8znBBy2qxMqKcfGgmGmMgMJEoJpUow/75MRaXkC7fINvIIL4u6ddg2MXut11vMUrw/V2/MtGWk0kWcSoURyNp1HCBNWHNCHHnz/0OkFHsfNX1GrsIdpZivxdLFS0vhMnGCdUBrIR4oD+Vahna5Vj+5pWadYMLxCmIlteTJET42CgdB2HijmAi0ziGC6hzJlBffHUYTCYVD27IG/GP5Dp+bK04LRaCs5EoAR+VxGBEyqaXVyCSCIbtGYGRvJENRx4bSKdtBKqsZspLSYjL+VhKSgXYDBoNsWfgSdL7Hy35cmnURn4ehYFwOB0QAzHSMIRLSsMeyBxjulNZ2eYFXV58UkL9kFQLYiJE0iyAFOqh+c0fMfNO5j75bMaK27sbFIi1zF2q/pomQwSNFwsQgJ3QiZCqaJcqUL29envlDnnusb3yhqRDSNyWZ2GlYnTUA2RrORlZHFcIntGxaHbxdagx8kKmCys4FK9wDxhhcYVAQZB7EXDXlLGAi/gtIsVRIzNNetC52yV6ypwo62vWouwmPMWUwbxkv5GSeleTfKkhVE/kIlDa5jHPCfZTf9eGQlDfFB2l4oHIb2NmCt6UITn5/pOm/58/ktPibfluZdJHp/4x2jtXHTt6jsnaiPG0fQbvyanLdUsFTiDgYX/bwpl4h1OyeAKKENKDUk2DKPugi2AHJySKtWve+gXHKfsjURg/AOAEcJR7eQVJKHDNbZMEnd300T374GTraLTz4HU6jCyJV7mQKK0gy26ucwk0ZOIXP2uF44v+uH0StgLU5KDbsl4eP49LSjNTE8oUH3JyNjYs4NgKlPL63OyM/h6XX+HFLtWefN62grzx6aBK/yOPANyh+9MhgU9NZAzyCrP3Dojupau6qtxOZYDwUrqIMXAALF8i11gqS7Tssj+V7A2VA1+Jj+XLLLoafUZruehWqdvBOLoqt6xKZiOntzVg2vpWrrWQA4/1qyrPj66rEJiTEidHK6IFufjusJu09CStlfcaO6Zz6t5XogeQpqPKDtnzTMJqs+4k1lUMlFN9ulsOVUhO/oLhcWrIVT9ZOY/XOe6l0MsEppzqLGVnkLcZ2dQWsqzUg1tW4k01VgTDjQdXADAMwv3pjbUavWjpP0wq7eJNlMQgpQE/KySph2w9cHM5Q/icuE+4Kh/XR6LpeBkOn11G3ZCNdCtWJ35I4nR/51UjwTTOx5Azj6CScPnZdmsF35gRYNrQ7yhFvqDcpnWxzxgJSnEgXn5VIU+bU+nINDjUnK16gy6gEgscy5tfSmdjfrv6fOxr7pCp3XHlsVej8CLRLe2V8noEA+JXlSb71AYhxBRlZ5zQX2CKcahQLws/Uzc3cqL8RO22HK2EquZ6Mjq0t0SNpzLbO0PAz/RaTbCKbQd56xRf6XLtQbaEkgIEZ+Bwo0EAbkrEl7RXyBufps3TNCRaHI3EpVCwixFfdEiyMX6N9vRwP/jQ1xrpZSr3gdnw+4kHmt5aUN34kLD8TWyKMG5w9Cy17WooV16Bp36LkvDAIMRGYjHTAfqr6l+zsivM4nkLskzX/52JwovIm/oLG7zVoWpHr8q8zcZRFjRuUkD635WrACPxRD6+zvvTp9ZL3YLHNkLC6lPJXrVe+ESYnXGCe+mkpt+GGGXiI72AZUjbtFwJRc0J6OdCQ45BAMMjtu+Fst2T9mo/6nMDkUgadibS6Wl9F7RXyLufHqv7WO7m4zrGLxDLZ3ueGztrw9C9wSZFD1yWjqYMR06jzdCe4zJ3NGa4XE1WU3tjlZNdMyNOtzTkZ/IrZgVWc7VPg90gXdvXv8nZTU1bhnmFvPtps39FmLVCXu31ZSzYBP3ocxM3aaAHJOx14CpfL/rYld7f5fa6Gni/dCGP/0mxF4ZrMvnejXRSFs9vx9UWSNdZvAKxulClq/1rYkNGzJKrKANTaSnd5es8zK3+56MpxqE4HoCtjI4Od9WozdEvpK6e8nruSz5kPqHk+NmOgjdFwm9ZFlja+EMs6yQeO/y26MQIC6lkDV1CL/1SL7lIT4PdOV8MCS6K2U+UeygKJzaWQkuIJxu3bEHRzj/lsHIp2O/lrsJPNvGlT61cfXp2Wh9uEqn1Zy3XN/00Wct+Zhxu9KlfWv4v57PJNMKPn3+A/RWisG3rXegHfyaj14Fs812P1mfqvpOfo9Q6CkubeeMYEOOp92HKSy8zN5cfIB/bvk3i9Oc2PsfTppeDorB3SftaxVXUe5CdRYiOzoERYtw6Xgrq3e5drFxW3tsgBZK00BU00LC9wFsMV2NJJA0Gqff8OtSRslI/sRwxwA6Iq8UVTFfVO2TYbDpLiXpXHeVwNKNwiuhMV0pDm2aNNbqmsS8EZ/vz3ubXoDLf+InK/P/zcWs2nD1PpJ0GkKnvvssJNPoU3JwXLNIv1Y2sjE0NOc7OgxJ2FbeCW04/3lJiIVlugEQT5ol73NMUU+dsxSckFNKFIvB0JhqUkN4NBhmMjDG4gISpiUvATK078Mfb1UavvOZsV9QSj7yrpiLpjNkYMkHM60pLQlEuPXEarn09+cXfq+ZM/IevG4sGsTi2GQ9n9zKZwnl4JCm28ESgdMSGejcaoVL9QAzJN5cNEVJIvi94QU7wLXnboH5Q1YGvv3sgXiwgjyTJ439Fe/iVt0yLmPmukzAKwnz7ZSsfrJuj0zFBeJIPN1H+x+ZpNKe8sKOHxFRtlWETbYKAtcBelVmm8VyyPcPf27UTcfEAO8ErhGbdANPTAUTZLaXglLclv9sTjoxE+MuUKsSm+xgMhzNOGtVE5Y4iYLp5+TLufRjSPMl3y/lgvohxZf7O0+z0FDYXkigIYVRcemcgvSePr8E1q2Q8lxqOcKv+J7zHFqb6uBq+X2abO9U0gLbsAF6oLAcOT9nCf1K58xDXJVPhmjX8vGXy9MVyLooQVki4EDslYHx653eTIQLz+XK+e9KMhF3g+zXcVJ+Q/R7hf5WBblZ8UeIUs6nAn3M26eLqyK3mie8iOMq9T+5RKR2/T+3WRbYhQ4yEEq1nXAu6Hkl1we5rXfFO/0vMa8Rv0BNb4/YdidsJ/tk+tCKz1sE3b8FBco20pMCYzs9+oVLJJNzeH01wjRgEfjXftcfBYxxeVX7K+eKhFgK/7dW0VNO2acrqce0FzMHL5akXxSIHE3sQFYfD2CtVaIcPSA+QRFVv2fY2S6PO9814uwt+PPYnfdGgyy2QqjX5cnWuTsVxVX5MNxZoFYVDPK7jXYEhK8fG40CvCvV2d+zKjz5PiSxm9egvpLa+PhyIrnN/RbEBD94snlN574Pl3mOq44uRpZaVmZWBgPTCb/tAdQ5ZWr5jceYWdJFv2rbv0AA6DmgK0wKNJPwnGDOYzgMJVAYrgWrxpxQ/fU7L8Dkzdu9qI9EFn0soz39QhTizn+1Ms89lWt0ydo5UQnW4bD8P8M49T2AufaKP+3T2Mdefw8U5v3w36crvxxWU3k06kbm/zso2cj35FidDmPQNmXVfzNyD8KLDF+VZ5KzvtapsmcB1OCGbuJnBfIFEekyi/H+eRv6BQvmPRBhgMr422B56dCNVVSM6T86IzlXoR6j+cjx9jkeqn7A0pyhv5crcoqwOeSgo78jK+mkKhTrkWfgLfzCk6KiGXIbGOlOm6pbAyqeFN8OpzlmZ8H1cQKmkFEwpGQ/eLFok2pIntqrLNZaGSc3r0vpqxgJJ144kBmHtyzjkvUkcXR3LwYn4Hz5Ku2cMsr6dhRE8wc6KzbNYkJ1svf3aO0tpbVWNlCEM+YmBdFaBPGN7BFOJp7Jd+pm/mhP7VTMlGu8YbNOKN/J8a/mgGi+w2G9GkpvrpPYsvjRPKzmxfKnNCehZMGg8s6n7Q4Bc/0ny3aGtmTj/8LEeg6aoSGMwYFRdZIgphWqDvljtTkAvFblcIpncKRK6pDJATl2WSvjgKN94Ge9ECBEM8ptiA3B1618FE82P6vy8tBYInoivJ5Lr0cmnQ2dZnuQ8cxhu8GFapwBSrJ2X/ILQ7nLp9R5PRobL7fYorzEIlwTyEJv0jdcD1hjPoAXthKjWxMpqpX4DqPnnUMVcTC9lVdY8x0QkC0kUuQ11qAFdo8VrINErTzZ7qf4Q0G8QKP5m8PQkySK4u1RCxqRwRff/97q6Ikj+FAVy6qlsn+lHJNEdxxfcwOaoF3OzvMcbmwIMMhnLE16Sp0TsRWspU3q7NZOz8gHMFc4UUYCMQLkl6lGCazP8/3C/WCyXyT2FMqsidZ2d3Mcs3FLqio3etye5G94f5Up5W+Jh0zLaOTQey2+7PbY8/vbm7Uf42YFAE3wcwpuZGrYA5vRMyjua+09aGk4oYUgKZPKSln44CydY0d9++cr47x/xfjJoC7rV5SpXHB87A4E4a/T8cibhxQHU2JcPOAzIT2GaNUseCzjcC3aks56tD/y7fzNu2eXwahsAjd84yvxMTZ5WZR9+xOfseolq5KQwEVRKgN60X2DYCuIozPXsrcwNTAoenIZ6kUg1FAXxlIdrK3s9U0sEkP4sMJrN1oiIJnkwoFAXFjfkh6oa8/LL6irDGpyricrjZ5s92nw+j+tydDw7nA03rDtaLGTCSFDw7+WPsjOFEOexrmSlYNgIGwZlW4ws2ILcwvLBt0XPKqHCS+5n2KINIF6Cy0crbo7i+Jy34TfEeFAtjxJY2cAMiCff9aE5b9NfO2ofedodqml52v2Q+9+U1l/jb0wbBdKKA6ydZRiCDJyGghjMKBQBGTjOJ7JU2tS7E4mI++7O9bjSobj8+I9wJ+v4xONWaoCyd92ufgYvgU088H8xevNZGywT40SKdBDxf55ICr377rBwRNhFu/aTbObMQbm41OoDE2NsLs8FjL73M0MDG2i+9gZdC8nFfAMfdbZkC0zgyq1e1sPedx4cHKpSoiFfnNDgiANK58JvBMp/fzQVwCernG2hSs3gQryxW+rTpmXMhWeK5aip9NMXjE5lrMn19MEml/+QUWx2BWK8eDHHjKUm9n1Ad3EnMMhvA97yXvydyfF0554zAwhqzgt6+7dIzMNreB2L4Ld92adJGbFnLcuh7Z+BhO99bLN9P9hU9mvzdN3lRVTqTC8B/cZ7UJKxrJCRRv0fLsOp0I21Q/cKUHr9FiceudpAkoO3TsIbF3I3SPktBvxaEnoIhw1TsGXP3my5+Wjmqe8nm7m/m4kgNVqHPXk/DfE21JvZrav8oWPZ4ICZh6gfpWDUsfvCZzPFZxIo9x1IeDKYloZIAZHBA5S/b6srFgPFpEoMCk2Tpw6LNpPjrfYiqjTlX4KCD0Wg5iXiup3ALAde0eN8OO/MjvT3jSjCWf+TmJahxPIAufANc0rM/4rlMaEl/FBO0s81Dp5a0iW6qJlomPCndFSbasTaN08stF9UVqPPKdt/8yJzjmEza/R1dkIn1qYz51pcU3Z8SpgS6XsKI41y4n5bPb7Js7wTZQwNwVvMovj2Mxv0wvl7yb0m98Ns76ah9mVn4UVTp1O+Vnm2WaizWEKEwTxJJP5HovyHGLn6k5IyJZO+o1D+JeB7mYwvF6lNYNA4xl+DNlX0ikVUHkk0Q7axrMlcSk2Ru7tXS1ZSRVvVySHVtXN0RXLLQBfYAx2aE+WzzLnQlEfac3tUZOFXypu377zHB7btuXZ/0aLS1p6+pZ0LI5hPks8s2oXZ89qi9zDJTT0t3a3dQIU7Le2vvIZATiVqfd7Smn8/bHPV9deqrhYk2cvQW7bntw0QX+rqWxZRPg1qEd3pJCV0og5W2U4J1UEd6Bv6pO3EHALnvqJ2raKJlC7CPZuh1O0+F/mBwsoBynRpvRBAT6zSyIt0Km11OCNAENwkxREvbMIIHKTdVl+ophxzYcsy3iSstc0htomK/vJReZo/EAZBHZbWRaCeeYd26UUJvW9rNkNpv8hKSAIaTyBqzXJqt5Cz4K39/VLu8WVLDtIZd2u4zNXpJlgUolJn5xs4INg54kXGKx1kRqGNGyg0BROyX0Ivle2bTYMZo4mu7Bnlj8P8u6ooSOrDJh/0lrxrgI396TfOvVj5y65Xmk32ExXLXqjmcYjk7zop5LMHiagvY0l49wtaCoaOkePSgu5XvG9d1O0jk4ufAirj1ZLNiXMTQvZhLYcp1YkvywTXFeIrcuELqVcuvvopbpBeoGDWEAlrqLiunzVhdUaIV5qmoxckFyoN9LwfULRxkj+dERLnZwt0FshAGpooIOvED20k5a+1NNH0CjzEgg20eIDx5Bfpy0uT1PTHHTyxwJthYX546AZHs/WP8DwJUSTUa3LESgchT9Ci43BYvD8scG6YzDiEoTJbbnrbAmspT+2izQmBoAJ4YtDaQ3Hi5CsdPBTKKPX+RRZMomj1VOFYtjPxck4Uqtf3xStcjpXO2nIPnb+bvMBU9JPLs2lRS/+ryeUB1MoKI1BYbKr4g693N0Rbaev/R/KrnaKv/abOJquL+bkiDUpzkViZWc2F1Z5GS6a1v6XZPD0wWMaB6Uw0/IRX3rMy80jD+MBkd+PQolXPE9d2LkBMPtk1lvtJxd5VfCUXCqw28V2jMnUZd+gw7gCzmbQiGhRW3hwvP9/LQRtsFPMkSuOrVcGZT7YZy2yX1Vtruo66BmYZP2TuS3H5D8pq9U9g0PgaWtQuUkvkzIxuoGcdvpNKW0giXscT380nPsDjb+NJ+VT6bjerqLY5UIbehv6v1tGX6+Zo5+fU2FP17dF/F7tz0Yeeyy3pJj+1Qz+u+E4nF5rs9xXCYxuGF6+5f6rt9zjpXlfA2F+V1/ZHlPL1JQz74z/pp0hC1PL/w0ULpM10fu+pAn7xb8chG1c0FE9p5kArOkPe+LQpu9xWNL2oZJyk95Y6zg105O2MFIeJJfHN8QplJRACU14KlRzsupvv2J8tztoUX4ayrRXcLADgLiC0n/rXbVVKQlFmxCF7LROik1CTT0wRoBnfnVCdqKjfWBjY1jBSZ1rX4s/RhzLUS+rabaurHDqoxq1dckv0wKtvr7M4aluXdXe1jtY66iz69nB1vaPPojXWFlRDnVaNueJhg1fWXmSxZQVMgm1vfGVILFNX5NV4Ou2Mn+++r1KBrrJp9NkEoijgLKbzinseK3X94oho3/oW1U6nJQr8Yx2fo2q9Z9HWdkNNLTAARuw3YKNxCdrSLn35bSyqSRAyg83F47coZz5MwQ8UboQnJzptvV8i6M9aO15+bO4ZNqZcVJHYO9T4RwseJxtDGHxbk77nTbK5c/Hvo3MbHw7Z/FNofc4lP/wjr7P1XUcwr90jcR/xLCld9S+/8nDltgT5pxre/0toyg1aIapPebDIzKL9pYKqa4zsvPHGvN6ESHLzo0buMrShuBa+ueiNkgJixySVNLvxb1Se9wba2m5pbAZGkL383f75ULE2twFL0AkPu47bnnOW4nARw89gnEnDuYzf0LX7GV3syXqwQf8fjCWc72fPF86zG84TyLCYmprWy0sFYISoEasRm+nniWQCPKWOlJpKCib1p2LCqal1xJRUYjAFRiIRnoag98javolScPBkaJoMA2eodXAicf62QIw9AWsHQ5zUhWgEejv0iZ0ogkXmUOLgixHqprBbmzptfpUH8zMzFX8nNUwThpluS7Y35/BcTsqr5zbhJdr982IiGFVPE4kR9SwSJ+m7oL1Au3lagXdc3pzCvvRoTJo0GAQwPb2AJk2NAxAROt6Y3ddXH+HxHDcXZBMXO42FVCn3rX9gqwTsVwU8ixnKvejdsDGMy9VUaPy7ftONpGdnX3w92+9vyA3DLd5Wse13BMC3H95t/0wMl8Yp+y/I6r8g6UqjJGjRuRJnkv+F9+y/tbnCUYaE9pCZBwQ1gGJZKZyHBMcJdn2FkjT+xRwzjEhocw/sISGNQYywLBjvRmMHQAicaAkhSxiceUZAQV4LHhhHlKuRPCRckGrQ9UOVmMNh5FvmQXu60/3fY3hHum6e3jTG0diZLxyRO1DUMD1EOgOmH/zrY8q8IESBWUSWEbHoo9vP9nk5+McZLf/kmfFiy9m02fnHPpfyfT/Dv6lR7mF5xpB72sNuzAwJiPj7/26zKuizK3XcEPQAmlkayWpRApcRsWetNH5dIM4ZK6AckSMjkvLf3FDLFxG53OYeiscKk9idNGrViMRi4Bk2zMPzjt2q+c0k2Mbp9ehusVH1naokNDobhmMrleKMUQbx2LabUf5SoO0pt25cFbFfp8IsWB+3gEEq/gE8Zf4MM1p7dZcHtkpLGPQ+AjSm/eJtjFzvc2/KZhTvgRqhe8d2V2Fzi6wXxPGgT14QMVpdvoh6fFKsihJ2TpJ0oiuprSUVwHqVHkkqvjUmZwSniPiVV+1grOW33QNURe5Jq9uIDKXW+qMNeojfDXrHp5r5DZ4FjI9qzovm3QucpFflnk1xUetMChcReOtckWiRZa7A5Hd2dkBQY+YdpGVMvdtNEdWI7DQtU9l3lrmpMCS1aD2DCZASgRCi4LzGGelDicOINEA+xPSO4iT3FKRiBgcGjxkc8sEJEuhoeZt0iraEzMS7oHk4CKMGFEiGFwEdRxZKfbQdNctM+0quRBrBShUrSb8UPvCXjquZAxRC5UhGZ9mf10wQFBPwnttyDbBA4THkdKygCmnb/WmGlDJehU5zweNiRgx43b6QYWKuUENHPNgUZSibKEAHMkHJKXoOGifr5mXYOS0IBtGhcB2RFEMiff+9GWc+JnDByHxIE47ia5Oadwa1qnZGtFaQo5mRUgnykJbuoeN5q7GI9b8ZB+hMWQsZyEWkm+iLwZMi2ddyk72vDLmH6sGh6OLiZuJwUQGbE8/+oFqMvWPqS3PUbHCciCXdaJxcdmtVE6KNWcNHsseQXBDksLV4F4S0KZ4aQCKmWqh0x4ghfpad14ez8tRaedyL4PTYQwtUSUajoRBrh/bTI7jUTJDbGjgTEQCt48AO0OlgLTv1yjOQWnmKwouYKIwchEhb2zCHeNQg0funzxcpp2woq07kXwbmjLDlvk+4iNb/2r92D/7Xg4Pu81lXzx65dvWyZfWfzZVL3bQHNst+tZNK2v29U+Xl1MNHRP3zeTNH0qcEYqP+iBJq/PeOo9hTAgGsWfcRA1CQX4IMCjTSlgvIwGRuZkY2brfZMG/OtB3jT0LWrdmx10kW/nmNPiTgjNmkV3JXH9oF+hFJUlm5Tter+uRm2wWYbVJKMVHYXku8MQtIUqnMCdjjOJjstfCMXMZFJA7a7LDNRKaSHF0+nPYH/3ZNoN71JSVbp5fjTGJsF6cOEFS86qL0SGYiGMiPfc1PC4p90SeyNDLROjMEPitY5iuT5DV0YW8IHVeHAQJoaF0YnpBqXFhbABb7V3FeHa3QjpjwQYRmo1IbddrkqIT8EMPxj3BEsTvKyw5hyUGTijNbX0rv5xlzO2pobgTEMM6IMfqE85jIfrMzpUA/kWvMp3OgFVHI+OBhCXVbL1NNClQGMgEuMDSnfIgjz/5U7sW2r7rjwPsFDZpsTzk+3k502qzjby6SE2zc9nsScQ06vfbwo5EwtsSpFBVRtFQaN9doxK2kgQJ95dGIRyQlCkJ3Hxq0GF4zAk3djpAxWXkzvescFau3LL8vET4MzKcxcQgY9gp0EQsaDWb85BwXBZ9v37/9ZrJkB2fnDXd/4r12OU3NJxFWtgIaZg8WDRchBJMq6Ovs9uyFQJ4p/Z89J15EdDzb5575WYw4QRw8JGvdbT82kpkVVL0CYOSyPfKgsTJrfnsJSsYu1UrUgK8oHV8RKoda05TjVJywk9KVXMVWhSnH9jxObKl36mejNxIhXe0y5PFrZDCKEWeWzlE4J+gLYrKYgIvYWUcoo96KQiVuCkm+QtKyrKYo1qwzqDmY1cGEeAFHV4dQq7KWEj8u8BKp12SZbzSiCpVfUBFewOt57H6CIjZPbRkjp0e5N3N+t0VvefZWlYYtJbQoS3AIFy5rTEk/4mB2v6hy74MxjIhjeUVhEwBRF0SVsORJJ8v8rRwwBnHt73CMLRigkUjFiMzY3Z5qH6tgfzEOzLUW6wQvEt3DXsd3gLccmzd1eCEXjAeLPOaWF49Q5ItruVd20v3cDyLcc/E2csPUm9ve+hhjbBCmxWVYSEoQDRszmttUBdKRVdK8Mh+ceK7k9mbNeSUsrXCBXdcbTDir+tXyppZx1Ybd49ghut7VIYc83EMPzIcnHqlK6xtymOOogFP7g7Hlm+WjEJBPMObM9zFCJkyKugsFx0qMBRBqASltXdRZvao3SwcYdYVj3s93X5/qpv44L2Crpf0AM3eZlx6+STCgxhNnBKrOHWdMDblXgkRtm2yhzUAhQn+AAUJsLvG1MnZ4qouDHQQYbXkzKYmsxpM3rMKvacCrn/7hhr4Cxt6IUyHUxfNwOPN6u6GDiC6cMSzCChPngiMWCymY2AUTTad7iAtu0ezuHaNnbvoMlsBNA/1R8bSLkP3tzN9vEHyAheCGtzKEL3uEGmFCTHfct1jKQG6mtU7jRJGqH74XlnJjX0aBRihE5dv1LRrvCOa5zxL0GHrGX8xN73WFCr9TSLv+PeL3Yc2Z/37z8/zfE/kN4PrKpkag0jf0rkEct96HPSkX8veVO/zAasXBiMn1ojA+oLFvUKJ7yeldrrKt0olFDRHbLtuQLnY0XQiRjdEN2GJSsst2/7Rz49EiBkbSwiwbwgr5gdvAqD9JGhHhzN9BOaspVOH6qXStD73iZqmMBQLqnhhkx0FwnihMUOliTqd2klEqu1W3wv1z48OrfpTdMZLRAM2Zd6dWj9KbSfztqXBiq3KIwXc9VtIHa2gwr91apxCQPaeJhKfc+60AQWRlqqXXhToYvLJv9wXNGJVtTO2N3sFLLaxMe+e9o2tc+0sscYlr2hd2It9zBsphrL4fcP9kwH1y83w4W5690Wxt2WjJPPqpHWdCMeK4UA32Z6q6SfsRjNd7xWnM396Kv6AlJYWUaqePLG9CWsTltBSoXqicW2ZYpJ7UbRnQsqdjD6S0ywMl9ANC6We8CPRo7kxKKC0559kcKez0ZGu2nRSxd7qWWaoEnVaG2hNIcdhOKvvhHMeMFTC5mOhkSPGNTSJ3P9NJ5neYFD3veMCUPLmxvHQ4K3LsB0qzs/yMeA5u5P6SCWlgR+Lqxplb+X1UdFsBazzEj8Xg4/9L/v8U17gk9Yj2VdLswV436a/N4jBdPVGvthXUfz9wSGoi8xG6t6Pp7+G26pP5/YO3NeJhX/Z5K4/I24c/ZRYXxWvQdRBCGbp4AEF8By59U8k/5r8l/k4t9w3C1kfin//Nwqm0wjmG3u4QTInSuCjInO148Se+J2wD90o+ROT+Zu6lnw0P3k9YOb1ldZ5IVAnGGbqhvHM0t8ERzaBch2ESGIeE3grLOEylJpd2TA93HVM/uroeQu5fUFpzRn1Oz3NS0ziKZyY1xxWYaWc0ssKGRj+GaLn3WeYe0gaCPzAkpOFWWY9uBoVkxyV/hJSOoy88oOfzaYAaBM43K1znQ3FVmjGI+kMPgTMZFQpt4EgfZhm+Cj/Qb9QvABF+WZ+1H5AxMWBhbsa9GL/3g+za+H/YOB1W0BY4AIokv0dfauyj62cvcSASL+7HXaJXbrkKaWphEpXb7WD/DMByf9xjvJiuIH/olswxOJ4Xt1Ru8mjRUZjMGdxcrDkWdwHFNC5R1GIyXbvNsr38loxU+oISSdT2pWExQeOiszgo+nGXowNbdHljCpGte920vHIpNkia3YR2vFnlxkE3ACamaGQyOKZ2O+HBzSuxLZkIOCRBQMQcGShoCVpRVO1Vk9UsZ2vGFJdMTh/hHIyLXRKF3DurVQN8hptVSMrouIJOEXRxwLmrp5aX7dD8xuXDcDcSSp9Y7F5YxwuVqY8bUAlO8hnNS9YuBC6JitLNEGx+aQR5UduYg7ihSfnHO1f4XTHSPIciMbVJM5tLzu/eeCzR7ON3bJPqD1Cpm9/9dsOxdOMPLSqpPTvSLJXeUnq5iPCwyIVbSw06mMdDuY6DLDRiqsCUaMjh7HpgNCrpDISSFyTBtBHBT2nRIbSup6f5ziWDAVJ9HGOM3LTL4+TaOACxGIUtw8+nmn8WKSfmcYP3aE57Xqrj4Xs2F7lP9jIuSxSPlWO/Z0VuC5HkJKJrc2vF+KFLZFo4xF9AIVtktuJ9sZrW5h4IL5GbvYQ3aDZPlKCGlxjvHvwYZofGCszYf29PUus92Sq9fHhrnMyNfJulXKdiTfkI2/PiNiJ4ctkeTjthcfzBtIx47R2Varg7ke87uZmyOXI4DdEuHtRnm8NrR2/h2ntNSaqdRkKxA1x2perwNrR7km6HXtWfHoT7ZSmItyDj4C0Hnpn5ObH3hSP3Y1AWLjkDXJX1jMZEeVbMccOPymtMwWzyniAf2LMYecddnntZw/MGxNlKkPaHqGAucmaHBnlfCpl0XLv8e1gM7ABoCAUjG9Lzg8KaAGJyDwmSU9u9TGV0UpShrd47jtsJJqPEtZt95zM17EIi0J5IWJXZGGyDPAhRgCG9wuRSlUiX+bXvwfMTKllXA8MTzxg3s3mBL6QlcEXuV4AP7N03UcTR+PDBSMATGGuj4zEOdPQCGju+1ESMH8pvPlFFjgYfl+bNT/bY7+Yb6CVfK7PdCnMLgTPxQi0l9WiCmxSFPkbPBLaMjxDj6eh56Wf/YfafMAV/KbXi4q1WslMNmf+R8JvgVyO+QnS3TwNOOyvqlf7kvv6vSLUavU/hLZr+6hpFcmHN7n/wPlrlcyG/G2e9GlP/lCQ3u8c3ZY3pr0suFNE663QsI6hnjkE8Ql30CSqybyJHPIyLAYO536YUihBMvGMMqjrsc0uYlvRo9ukWs9KUl5i8MrwjbJxfy2P7GbFzfFr7/UAjhSKWTt8VoKN3WPuCHE8k5ROvzgT1CGAFKOnmAd8ZGoYril7lqvdFG+3MJh4xvNvqhds8DYRXeL4NCDwjFeiO4bxcsvVua77Qd/IMk0GztTOZHaGA9TEUbkFjUyzeMDuZHr+KsN91fPg9jrFWZBMsOfNTwwgCkrmrOA2BU6PandkEQqpqeKW361Mna/YXBQoPFfh6W0h2xwm+Ve0NhlZt2NabucE4kCcQqS/2WU33lXzgHW4mkfioUvJ1yfIV2MgwH0Rch0Db6IVt/62dajCzN9iiAxu7VJutg66MjeacYRe94cQOLTqfNpIP3V3b4rg/Xqzf6hWIVQpbaMm2ehqnd6iilaO4PeDYMo7GnLaDL8rf6KKb8dy4VLfBcet54LRciva4E2KtUXpRzKJPQMXJpaO4edGYPm2cva3F7cDCcgsUASMJ1wMGDdICHfSKNIDhtWyAxOjImqNV7o85NCTY2erkxHGb/RbWTvLg5jJgtrGZFok0ZmG+DHEPic7BGgqIg4pqITYQYwxllxix4fGjEvYRRHVBoUtlDKjLf/OANW49GMxox+LGgfUfHAlWKoOTjzqTeSIfUKEBqf28++T4ojX0M6IGSByDnidOujtWPhWOnx0PZvPWNc6ZtsFDGvNiFkKXaI5OLmHuNG7ECxZuj6R0e/NZn7MI9V2qxTGVkFZpKF6ET2TJu1vGpvqmX8jOf0b8eQnu09357P8BSkOA5FWF89UAV+QlgqhIy/Hh9SabdDfeenho+vQNL8qMP6OArAvLJ1VJfAxCiUaigRhoC5AwMASfJWgl6uW3yS0bt65vCkua7NvkjMZh/ifZOZVJQ0d+CIBgMjvSMRKmxwwCBFZiMBp7h9H4DVnHcOtCTsysex1Q/izI6GBYKLKc2OgSwD4LmcX4ZMgoAP0FLVR3LU1QnPp/ib0vqrehrjtOvENaEh+Jee4Tg86SvLWUG5yWmkQfkJABs5enighUNQMPd4H3GS0XRmIBF5oUJFgYt5lO1DWUoTpAFVvQUFaLOVw+hByRP1+zaCMMXooBTh1vDHOUTuiuwnHBcQagHtjTu33KvRjI24UGrx0fSMSXPD2sFMn4ir11uKvp8ARmvpmmE/PWXX+G8jxoKE9eT5tYgl539Z5d/ZZmTSFyIj257NLrhmi91RQ7LSYet+ix2ufsy5SNYrNK8+J9BgDAYeKsBC2rFAQUowUw/loXdk5HT/rZrxepE2dKH9yVYcnAUYWnSd2mehdunVLGvSpvDo9GgRs8W8hVG93e+IXrgC2pC1Rfrbo4GXDD/mLyxjFvo7escykDiaYqLneKaNHBJ1rd8JkxIEpduINcfGvlLCQYqqA3M5cYu5zf5/L6EG/Q0HyqUXSZcfEtd1w8mGTAPgfeM2qr8Yyz6QMH0FEccbvo0MMGgG5DZ7pOnlgUKeV3xI+9hidHBQ4T4d+XhktXIVSnmxRBj+izJAdPpf06xK9jI5wiGCTvnrNY/i9b4Ene283X4MZSPtYlPj6DD9zM5LKVydWzTjFpr96ufMcWIOnhHfFdbXqH2qed4erTsKN7H7EWQhSXYThCOEX8u7rU04DZFCyAgmNbXPAHIKIlxXPSXuIOIVUIxQoJN+rdQacn6NTjY4VjzFKNH8W47See6HhPAuFGeYu6191HL1GHop5wBj9pHlFs9k5M9aTGWXPsJm+o6NvGXqRQgenS5tpwQuhqtFgWaAHRxofUsaGfQ5/CnrTOzOI4uXcGTyxLQhLMsFZbLfmmXNM20hR2XCqx6GgZWFWhExL6VLv6SnOUJmKQbsDGJmrUmywG1uPmL8qQU+TRCiCpcNLFxYUfEDwkVXkbgZGGkDopHYdwd1copHAv6PEr9m29clrhF3F/Btn9rqV+N17fVPBKnKs1VSw0c6bmEd24lh9oG/f+EfdIecu/UsfHx28vcr8D+enDRbfoRJCEKSyPm2d5lhZlaDjg3jO0OTxzzbcg68R9oyax+lGhei0sz4rL0AHMQbR2IyGTD5k0y/1N5yVNaA3zFANyaQI4rdoDSnrSUb16NEjOV4u8mQXyom+clLDqlx3l39rko3YYZyJIlWYsQBDGvvnGDTaRvQV2U+rWi1S3f2hh2AUzO2pf9ADbc4eamyEylD+K1BzZSzsNaVwHhlAV7QpWyZFQ+49xKqB5PAX5QkXr/JDfIxahMIlHhpbsjLqkhbpFCt1zNLLMt99O7Bt92tn6i/UhiohEGEjjsguVJKwCSaB0AsYpsOzUD7IyLIUnurjzIaC4rHl+0iYTj6MyYMwPXim2tmSUEQxstn2E97NGz9vHfd8V6ia2zEjjtKKWK/YwDXezbcNwrU+16tleTSJC86Yf7ZcSPo22DaYefclWLK/aobj3Uf02M5VUjpYjmc1Rwil0d8NgJevuw8C2aJEbKATKb273r61Ga9mmhMYYays0Jn32x6dk1ibr6gHVtrvawgZpNkc12wWDZp5sonslPfqXvXAznOVMnkCGCFmsYTocdi2dwiYsCGZit7aAOqgriwTLUTYBJVh4CiRsuqZhZWkdKIyKmkxqckLR+2NLvuWo42PNFXJn9MkoCZ6m4o2UZAPtGIjG2XMHRWNZMObMSUD2C0gDQrwWMnIEeWqvpbVkZtJsdbJfgRIxEUxoi4ChYzbTC+hMmCLOGbX2EQbYgvnem7bT+dskm04FamN5LazJiln8dAzY7hwFJ82SjSKxtVjv6mg8+cCyi5mioQ7JrvHj7giIbmtlUvUts6XlYm5xehFVUYeCzaEp7IDinkFpGJCM76/onRmaSK70/gQP8RIDdlep9YbpNJNH3jtI0zhHERpAHzndZO3MTunj7vQyKCn6fTOM76O1IcmfbpUBGY265Im9jppbhhphVEREHZh4wJ1/ASZOrdbICxsvWMcKPWEF+CSpcUHNDUihpeRrBI/1zEYC2cqxuLLB88r+dadX3CIeTKWrhWZrGj0gMTq/ePpzUkunk5r3bcRkJ0IZD/LxCRdSPOfU1AELlI/eTGaUo9PO6PW62v/2XuQ3MvuzOWRBxVT0yo6CWMYxMF5I0UIrE+0SZrGWqPH3D+6TsjSsp9qiy57IQ7IuVTAUFUHbNatoyqp3x+QtrVOO6eVLCZviSzcdOrNrPmLuFI3ptBXr9k4JkPkikCdUt3c7d6UUWOfeRnCuwwE+iRohKiVF8sc54Sn8a49g5h2S3fJz+g5w/z4lpfuNaZgVdjVSCwZaBhuKAyCyjMfyEsIuTrGUxY8Th3Fc0iSfNpp3ZTet1a35qbO+wh0ADTbWS12BdFkfNsZgkHtaHiMjAj8CLtiOS2njXru7/S6C/a0UZVHIivIi/OGthgKHR8TQ3thXfhskkHz+QUXpX1wMKsaJJsfJczNfMVr8U1g/9UcjmlR9T3FHn0wvvmVse9Y0qynJPZrZsYhNMEj1KTugf3t9CzndOhovAF3Etg88pEjW4a8l+gj8iTAAljzcT6TRZ5rXv8N8eNtK/MGHnymCWgSm+ulycWny0TVY3corxEFtqvKmO+zWuE/MMCQOxAEIsSGdEXfDdixrtbthml/6UHqto0AYYuf2iwNOH1wtxym4NQ9R7Y2dVm5gzSv6BhU69Yp+qVIsVYq3i0n8ClXqKiTBJhUqxX6XLqlCqdP1Lo8qIUhp5Qutz7y1iGO1JIqb/Xz+0loX8Fh8xpWVjEZXsuSgQQmNIuSlNgV+zZs3+l3O47m7oo7fW8z1hBTT9YMNsZHBtp3cx8qvCfVOnH83ir07ZVbwteYL/QaVNI/1yxW2XGE3i3nyVVLrVDIRkwuXEv+ankklKWvTX1GG+dl8YfBDb8wFLO5HieSzfE26f8B1RbwTqgyuoaEFlkXnFXNGRbOtPzLKL5J0bV5M/Y5swYc/FV8wC7jc1N3Bh3Yy+5US0mqDV+jAdet2jEkh94S/nShCArx+RK57B2LKk1yAIDscgNfv3nWSrxEe7Q1nYoGWwYkdyhEJCet0TDV5vP7TKRoVazFFsyDFGi27XQjoeBLpsSC0wjyKL/lUf69CYuwKRjIlPDwOoo7Zk3lMEi+B68h597zFOoqZ8r+zDRf3tfL+cCoj6dm5CcGSrG5YsDMpufgB7JWVn5hPKn6sezz5pmvJCFx4j+FHgQsnjkoOw/pkMX2cj8SjMCehoM10jRt8PGdnVsi5nC/yZXZ6XYgQl0KFKlVa+4ikfefZmNSu8eov5tqgXLl98x4RvBONk35GESE+fZaota+HKWdoLkgGFJJJ/ffW6U5KWpCuhU9Xd0FUyz8tPYUHptrt/urh7p3PkPCaYhW1Z/OMMnLMkaI+dw+zr+OIqrRbIjWYcCUiuE+oirbbBwEHRBI7wzaAKhXy4HshF4/a6W9wGgvr9Ao6eMsyZyqiZSx3cmXSsVvGNqPK/MExObCd6ejtbj8IWc+oJGgubJR3OKXvdXpP3nkO5YJufUuUX9ubxv2dKF/QW8g/J9aC3YW+ngNbLUO2w72T9nt8mHmvNpIvGrj33I7CTKRDbX9cBhhbwUCe5NUeKzPcZpRmdhsYrt2iWURp7sKJ8JwucEhvzlMg2jr5KT8atjN/snsH9tv+zYbp2yAfcSkA/3DbW9SEUA1Dyxc7/DgTrf+NaL0c78mwh5qRHV2B9be1NH/YH75jVLBd2h2O4+q9amUNofLn6MDYsw9RJKxxhFfOzGbAWQaMbDXHCq02yXqcNZRBnrLLSw+DQnso4zBZBhxVLBsq6qivSBoJUXbts+4RVrzr0UA83MsRCFfJ7P9PZPvFPOMadc74mtM5Wip2AwNlZq3ZGXFLduT40e9TBZxZR5If0yE9h2Js5FzCEAWx/+gDd+wFQhMaZfwMNN+hnCD8AoUiUywhACDVY0crl9PO3fpebjDniIxFOPXbxgHii5pAWG4c3hFfnkb29Sx98sU6sebMi4UwnwBhEbWa9iprgq6PvmsGsOQzdO+Lfv1pWPhhXVjzyTsXXo3X2C1zgreIzqtcdDOa3PG87UHd0BvvaPGgkbX3Q7/7NHzut+vaJ56+gEtm6w1TTfzUrMg8xOldmtComlAXCBfRC67WuCTEe/jcC0WZfuDGmwVqCLlT8JZo+G2/P/9XL6FrAk/B91KsfcOVxqRQnqXt2yBpNuZcbzFJWoP3HZXwuTLehcjNMaip6fXlzpzps4kTOg0kZSRDAhcFpjrtvK8HFcl8czblKzCH7tDAVLGva/sji/VtGdlUjYcnILhpO5XatlS63TZyoKm2PdQFGrxpiHYLSbP1yL3honkD9uNxjSVDCaJeggyUKWjZTHPxHDKtdu05TTunFW6JoCAM/l2qOz4qbK397rbCsdYS7pkbtWy8LCHXu6P8KArbU0mPRMrh51+MEapjkovL8wvQGG4m0GGl3nD8hupo+1d+hbLLi08ikTdyTY0Y2rnEet9amrHAjDY8y7o7RqzV6s0BEjddIckqRoqHYsgxkTRmLlt3GC//tJeikNvHZ3nTdfNFLO6aqrrlOV7V7c/pQTHq2KEmLV6mpihvHKZ6TO0Ka0kxzHzvbM4U42E3Y835dQ3mlvt2sWNjDQxzf3vNgRbqkbDwajKiTFDsAS0jRp9IpV+Y46MbNGZyPCE6rT+eulwKNrsB0Bs0M5WV937L/NpgBn0PteZIhmzcUsWARkhOkUGgY4kphZXpRLp9WsnQfY5u9R9vpb5DCPJGg25Qib63Io2mr3XcLd3EqptE/Xb0j/YCaOv3K/GSRgni2suax8Ka/39T3LIjtdV4UqgdKXlAcJe1jmV0PMsn9RTpaZIc0CeY0Rosqg3Z5JZJRvWilcwkATJ6EsJzVNK4LptdWJ1qcTJWgWPe7LLp8Ba+R3p141x99+46+ObN+DGiOPgJKW/e7VSZ2K170fk1rviPbM3XHorYYlUxy+/93vis6eWrTypfa1PO9vDGQeRV5MEL0vP9ffKAd6UokD3sHhaetFcij+8Aw7zgIGigZHTVaAO87aGZb6qvdhL0vTn10AsaWpjedpZ4sbvBEmSH5xcPV6xDOzWP33JyXDv3GoXsjzWfVUlWDyK7BKQKVTCmlVfRRowfrV7WK87oQ/OzLzAvc+XUivyq298aCm+yPnXSyhsNzi+2TvZ42CJrJt1OzUJ1lMypGlbE0d23jfqq0pNab1RhAqq1j2rdzgN3sy0oAmQwVMtNq45b3RKFjYOB4LKRUNy82Gi9wMC4FmMonVYlQAWpBxSIXsC2nSV3xCIRxGMomDDRYmgMB1uJWlF8nBFt9egaaM3a9lMAjF+6OzJR+yjb9NXNZch1tlZFdVH1p6LPWyHO4wQH3q+jGhg5U3W8h0K0NuMmJ0b236Yz4oJqzeIWhtTpor4o9alY856R4AlCwKmvoh7YK0jdfbQ3vIOAFE9jdTl92Ra2oL7odV1LmItynkowr0Z1ry7qUHwHZhCOLFVv0LCIMpkvblGHVqd3n7WG7qkemIt+u84T1iKaCViIHGSgvWbYunhf3v5jQlwtrWt0kyiKCsnhTqiAdGU6yZ4sZKh+E5aIRO2GUy+UObjK6dwDqi4J932Kcq+6pXkFNgFWe4EeSA6s+d4RWE4wXJGkV/ozSH6uxcT3chJAxsqjYHNFQ7F+qFOg+arxZh5wkoHnIcFBAXOFE3cwbB+kEItm6FX/vC/Q7SxXkwpIS3TcjKREOTOHwmhAqZTWTDVdgXp3pLuqbr3LqDFWFKAPZcLEhTmHd0Zx0KJYZyqHW6X2wpFogR3OKt3BcvVqM6K4WD2gF7fTBbKBwcUPBmAh89aWN+fKw8wurwXbOYCMMcUDAj4pfWC5/G6mF9zlBKp7mwBu6Y2bJACf+g8UEG5hwMzFvlin2rJZ9CTfvPgsqy7fXc4nSP5wvQ31s3l6X17bBPK9++ewTfCdXZPecHVTHZY/Q60+DH5/YhPOrmtRVYKgqfT3zYZtKzKImGGhi0TKC7mq7Srcn6nSB+W5nUhU6GnG579cwxiDSmFhXGY4hMpFvYnq4nK/YfphHhziZ3HCuX759O7UhiZ4WaNQ/wItr1X1/tqMr1NcY9S+9/HayemnNMCSbJ88iU3iN/e22TL3dxOV6zJl4+vc+NOHP7KMwfp+sW71AHRM4wYhWrg5GDF976PKyWaAhZNObngLd+Bo4EyZ6mrE7rdRbAQSxCoc6mZ6LVQeKNBoNVVXQJyR2k1YdH+fkhFNmRtwsRBSsCIImVbJtEKYP2EZtByouFWSKYmB8km1oqYfto5sha1/JVo0OUZy1//SKIhshRB1qbOBYo74RAk3hRB0wvpzF1ldDxVIDHqVbcSqOfgzZHXNniOVR3YZlvvhDN4mCeu016n13Zah6rm8Ipndy5udxfo1BUsYN2/0DKiG8pT8P7F4pVbcpBCXhpczh2EMIC4RhQO3DudOIjOmxXoY/MfvMAgh/GNttoTeh/QcVLK84MuYdwqZUa3v59D0MuiyO227qupG5POmmjw7v5y5ifIlqUN2zhm5o4R9REZWK1QTphQLn6rHOfVwloorDwnO5jysqx1YPEwxRNcxrTtcejrBQdyk15QMHJ4Ve4Zf4LpJ62nKS4tkBWm02jnE7x/0lw4OcfSLKehLret+ePxjpxr+2REjvSdiSPr0UURun1TvpDvMXZ/p/xzZf1gWk6aLIBRxapACp4KtGeifTEQCuklxtdMfqLv2MXc3NGxzGMPQodLv2193/CgvH49+bwnz3LDG/xcJgAsVn5+typuN+22J1/riu4g5dOTp9xE9rXYA/3U9ABA4nJNIh/9jKrP3tPgii3kTSS6Lb5/8h8lHPs274iaN57DGrTw580aUm+Kipx+0z/U2/YSGk//b68X5RkiW8J5sbDZJGq2EIQibTIEZ6n/mL/oMt/+BzziB9Y3lqKsLROv897N8DVs9l2mngHk+pJ8+185GCm33p/ixl1mwORlnmvLNEOZVX+u8kXXGpziqzH6PmUw79QKmhXZ9HTf3YKcEj3pPTKT0WcVr0Bu//v9UP0xMxuQnYaMnyCXsRGDTh00WQ0bGtpNBn0CGuHEZb/oY6dcyhslkGAV24hnGB5t6hhzFJo9iIkhHSrJ4kIwzPMeDJL8Kz0R6h8WR58ZPkNsVZDmQeSSIM1PJDxmp+Jj6B/nMjjqF5T+XmUi39/L9z7apT8u6bLkYmyJ6O3ZNCsO4M7j6/kzSEiEqddjhYfFyx64DrMzyHK15Lr8l4fWx9oOX3SIfySwKumqcPqE+uDlRrlUp6vdS5Ydnk5iHKZffMuK5oKKvlD5SDSQhA8muSkYE1gc3J2U/oaMgi/YQRfKJo095XUmXqGg8G1M7Kz7CU1CeWhEO9tCPQTUtoVaEKD8sE54o3oDH/ORUNnixZau4lStErUfuqA0WWKyz4GzEW8vX0w6GKWBASugZGzkt9Vakp8JXyTacrir8VqZBiPt2HGSDMwA/3OnrEVJGFLFYHFEmozHW4tI5gIdxBp+f3nDOEUIx8Q1R5nEJk13EIuaM21TzrTtCFsdd4hXe7+GthIEAgjXx6q3QrWpofamGH0zy7Icb371KaD34PFqW5WYK90DkbeY8e/LGyqutOx9ZJXRYBOpsCxxN+VYI+S9zkSOWW9bxrAKLHshvDWD0tBrqj/GQseu035V7WRuj95KJ5WPgxiu7d8Bhf8cjkT5B5/3D797duDWunEHQbr15QSoVvwUqnsQG0Zn2BikwHnI7S7Xb+CEN3+Nb9qt14B1Fyp4pKLKB5mjWR8TX6DtJ2E0U1VmONc0sfNVaaCmjUm6nI5pcsKxR+SA1Q6KJT8YefGBfehbqv0owARICaUtaUylHfC4H2QNXzHjH5ABhoIcRjj7q3yE1qaz8Q8ZuXLq1WLGHUbYYH8Rsh4KAcXz6Mh40KDl+FuxJu/Yy+/Ab2DbtG9kHeDPLU8YvFfvB99+JZ8NOl/G/AwoP5QsAyJRaEt3bs6dIIJIAMgh9wSLGgixcYumbtmTl5PvUhQvnd8++A4eKSo4QSBQa/BJGCk/60XRxRWeqJDV1MoVK06AzmCx2iX66rhaPLxCKcM93e930lXW6PDPMDBf1Ntnsgu2+UOYj79vnkIbwUKXPRlviRPj40A4VrhmMM/Y77Fe/+E2dY+64pcUss31ijnvmuu2uR+574KEvzfPMY0+0mu8Hn+ry3Av5vvatSgstsMgSi9nVKFCkUDGHZZYq8Z6vLFdqhZVWW+W0Wmutsc563/jOWW3andOjNwIiJCLiQsREQqRxjSzyKKKMKmodOp10ynXHnXBDuSPRuOhStNH5IG5x3zT/7hWF+XjpYQqMP14fKBuS03YS5Zfb1aDI+JABh4NEpEUoMuKxyIpl8UTkROSX2tFUhJ74do9qr5PBfdIWqjFWHf1OKuHIUmssGF1o/g/afPHAD2HCT7NdEbIxu30Cr2szpNmbKKzCWVfyIDuFXK9AzHg4xnE1aHLs8JjxHb2ZMrZzJpScmNuBJ0VOw9xgdO0IoIjfq3MqJZU4t+ePiwcKIwA=) format('woff2'),
         url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAJsoABIAAAAByYAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABlAAAABwAAAAciZAbGEdERUYAAAGwAAAAHQAAAB4AJwDuR1BPUwAAAdAAABZqAADGPHshmjRHU1VCAAAYPAAAAs4AAAg0Wie5sE9TLzIAABsMAAAAUwAAAGDJV1rFY21hcAAAG2AAAAGCAAAB0g+DUtpjdnQgAAAc5AAAACYAAAAmBxQEEWZwZ20AAB0MAAABsQAAAmVTtC+nZ2FzcAAAHsAAAAAIAAAACAAAABBnbHlmAAAeyAAAc7EAAOcwVnilE2hlYWQAAJJ8AAAANgAAADYWjBiiaGhlYQAAkrQAAAAgAAAAJAdtAuJobXR4AACS1AAAAioAAAOg0KklYmxvY2EAAJUAAAABxwAAAdI/BAUObWF4cAAAlsgAAAAgAAAAIAIHAZFuYW1lAACW6AAAAeMAAARhwHGt2XBvc3QAAJjMAAAB5gAAAsiaCuT3cHJlcAAAmrQAAAByAAAAjmGjMmwAAAABAAAAANXtRbgAAAAA1ymlxgAAAADceS+ZeNpjYGRgYOABYjEgZmJgBMLnQMwC5jEAAA2LARYAAAB42u1dbXAcRXp+tZb1sfpA2LItf4k7g4Owj8thuIuR7Ytzxfl8HLjAB8RnTHIBQ1wcpbIt7gpcFJXiQ8ip/EgpHLmDTWIbkEkAeyWfD7x8mHDi7/6Jy15Zsh1vnexK1ZYqFC4Bzo/J08/O7s7szuzO7Mx+yNZ06dlWT0/3291vv/2+3T09UiMiQdkoD8usOzbcdZ+0P/L07idk2RN/82SPfEdqcVc0TQL4qcn7X+CRnb07pfUXj+7ukXaGCBF3pE5a+X8N7gSkQWbJ6rbaX9yD/4MyGy6I0NmyXL6POM/Lb2WRvCb75Rb5A9xq+Qzudqlp/V+5A/efkHjNtppXAw01rwK7Apvw11d7ofby7IfrOupW1XXXTdUH61fUr6rfUv9Y/QDwVfwN1B9oWN+wseGrxo2NfY2Xgg2Nl4CPB3fT/V3jxsAmlV7w5eDLgU3AUPA0Usi4LUaHlOgaNza91RRuutQcgFsPtxFuoPlyS0PLZrhI8/qWE42XWiZbJlvvaN0X3I0cd6ucknkFugwlQAjq5lotIXFZrcWB3UCRNfSvI24lPkh8iLiD2MOndhL3EPcx/BPip8TPiCd59xTxLPE8Ea2gDdRsQ/4x4PXak8Ae+ncS9xBPEk8RzxLPE+fIXC0EWudrUyhFhxYGPkd8HU3+qrxJHCQeJL6N516Vd4mHiIcFtSFD0ol0hqUT/iMMf4/4PvEYcTZqJoZYd4oEGuQA8QLxIrFO5kpXoEsWagngYuJ6LQTsof88sVFq8bsJ5Y4BO7QocL0WBm5nyK9Y+88hxU2yF09vkj9KO/BRacN/faipMHAO/XPpn6fFgfORUp8soL9Dexa4UBsBLmLIYqa6hP5O5NMn1xGXM4UbkVufrCTeSvwu8Ye8+yMtAtyoRZDCj+m/k/XwE/rvZpr3MvfNxJ8y/D7676f/Afr/kqltISU/00aAWxn+IHEb8SHiX5HyR/nsE/T38NmdxD3E54kvEF8k9hFfIvYT97KW/p5l+TXxFeI/E39D/C3xNeIBtEyfvM4SvcEU3iQOEg9qUdD8Fv3/TvwPUvg2y/IO/e8SDzEEnAV/mCUaIg4TjzDO7+g/Sv/vWcb36H+feIz4AfFDpvYR43xM/3G23SdM4VPiH0j/COOfJG2niKdZA2eIZxlyjv7z9F9gO14kzgLXXKy9AK6ZAi6VIPBaqdMStZelidhKbMf9y4rPgB3ExXjusixl+GpySbcWgX8X4/cSY8RR4hhxnDhB7EQ+8dkPIx+FrcRrSVU7pIQgtxhCFjJ8kTYFXCwCXKIlgEsZvpoh3cQePruTuIt3e4m/JO8le9ge3n2G/pP0nyLGGHOUOEYcJ57l3fPECYbUKurqOpC/QuQP7CbWqJqpWyXXqT6L+MmyzKF/rhar68aTCufjyW5Vl8AOLQRchOe7VT8FokaByxm+mvG7GW4sXbIUzzPOC8QXiX3El4j9xL1EY0lPk54zxGTpztF/XueH+aBliiWZUlwBnA1aE/VBxSlAhAEXSRcQ/AKsgVTrr18BSbhQ++/6VUrqANcz1fuY6g4tjJCnRYABaZP2+i2QmgKsR80k6h9T8gR4kO1ymK1/lPgh8Tjj1EAmSv0AfueyTy6CTI2zbuP1B1CrESDqE7iQ/sVaFHg34+7VBoCva4MIeYNx3uRTg+xZqT6unnoHtB5Ajx4BHmLIYekEhlmSIVkF/zBDjvDuMfL+h8SPmCP6KVBRGW9YjzpKUhnURho2ImwQCFqBHdqTwIXMG3UG/wa5BgiKgXu1nwNfp/9NPgt5BDzIZ9/WjgPf1Y4CD/EuqASG6R+SduAw8QhjHiV972n74X+feIz4IUv1kRaD/zj9LYrehq9AqXribtL+OlL9CvlHgAfpPwRavkKe7cAhLQEcliDwCO8e412kBwyq9BpVySONivrjjYp6VeZD2iD8h7URINJoVBQHGxWtR1mjKnwOZITioyZiK7FNuhoxFhIheYDdDF+jheDfRX8vMUYcJZ5m/DH6x5N9gCHniBMMmSX3iTReQv0pHCa2ocdvDzagF3QCg2jIBmmWDcBvyT3A9bIdT26Qraq2pAshTzNkkDEPy1PAIekBDhOPyFrgUQkCjxEVpyguD6iaCu5WNQWEzkqaUmWLUJ/t0PqDL7NOE8GQ0iaA0CaAa7UwcD1xO8PTOgX8kANA6BTAZajTkeBp1KnCVmIbYp1WWgZwDv3LkcNpRQOwm7hGGwD2MM5O4i4+20vcw5Dn+dQLxBeJfcSXiP3EvcSTjH+KGGMKo8TTzH2M/nHiGYacZcxz9J+nf4J3Ve3Fmt6SJjVqNYXVqAVsJa7WRoC76O8lxoijxDHiOHGCGMATg02XVHmBQaQYIe9FyHsRjisRcleE3BUhdykcI44TJ/S2WqOF8dus6GreqOgCthJXk/+7tUH4dzGklxgjjhLHiOPECSLH5eYBpjTAlAYMKQ0gvxHgOi0C3EHcxTi9xH0M+YwYY8gocYw4TpwgqlqINF9GqlEg6JfOlgbUr8JWIu4DcR+4iyG9xBhxlDhGHCdOEK9lSpuZ0mamtJkpbWZKm0F/ArhOiwF3EHcxTi9xH0M+I8YYMkocI44TJ4i1TDWi+jJwiDhMrEVO+1tO8M4J3jnBOydATR1omETdKmwlqriTjDuJmlQhvcQhhgwTYwwZJY4Rx4kTxGtUquSgKDlIIWhrvUOlDUTawF0M7yUOMWSYGGPIKHGMOE6cILaotFv3qbSBrUSV3j6VHrCXOMSQYWKMIaPEMeI4cYJYA0u3FlKuDnzfhPpoQ3vB0oKVOF86ZCFG28WyBKPZ9bCbu2QFbPVb5TZYDN+DDnQ7NKA1sg6ycAPspJ+CjgcgDx+UhyAJd8hOtGOv/FJ+JXvkGXkWEul5eUFeFGjt0i//BB39Fejmv4FO/pqE5F/kX+XfZB/s8QOw596ANTcIK+4deVcOQZqGUaJhyNDfQYL+Xt6T9yFDP5BP5D/lU1jtJ+UUeGMUMmQMHHFGzkJexMEVga39avbggUtbPgZ1feLgol6Q8sct7keIgw5SCovHKzcXK4r8vTgipfxTWTc7rajRvrR+2hTzC0CXJ7ompUKXXZksYk55zMnr8597eSp/7ia+iGbiWz2l95FI4ZIZ4xRZ5v1JairT4k77pnZBrpJLlwmu5ZR9DdE6mblmrivjKjAKJrm9PDxfem2i+nKuKlkZm6nDdGlC+Ps4pfFq/UZNw9nT1mEqxeya0r62f56aqlOavyg0sheiX5tSPJDRjvB/wro0dqG6POksGM9a8nRZU22jAXX5rTO503lZN1NXiWxIZOnciaTESLWugWOjKZvVFD9s0MTz2gWcIS/YKnm128etYmd4v1gN3WiLO+Mbayr1unPAod5lam4u5ZXTJqurwPxFAb7wPn+RI4m0i57TnHJQ48nSxZ1Yl9ZjsPM2S/F2eeWSaZYq4ZYv89jsUW+90iH1g1KRK6VVzFzWGopVX9D7UshBSiWQF2W+Oh3ZZhF3va0YTceqJxarYRXPF84opqbC2Kn4mRryg2bTiJZ/xNpv89RXDsb8drPcV1IuLdtDHE1SM1vtZj7FnXCK/6nNhzNamrFXaCNwSSkbZp0NqjxZQ525Mlbp4IiXzDOkP4GctAGrfpYbhniJ1D2VK2iaKsDXCduxYcSFrhXNliR20t77HIf3kchP69X3q93hnFFXSfKU4qScsxYzS7dMO5LLY2YesV1TSlhy3hnyuiOLI5MT+lsJZtwgER3qkZk+AtrjObVStAVhGt0TjjXKWC41rrVyFzTbSBLHq1nFrXt5bt2LbktbaD01H49nVlkxLlww9vtixlgX9s2keb6r4pJ2yta+98UCs+alwmmbn/PXGtQlmxPbzPuYWoFZZW9aovc15GlruyWctrl3Pby81keB+YuE3fjlRCOcvvMXJhr+T8kc9/3d390SzuvSWGduaOD6jUEngl0UTe0v0Y6bbaBsuzNbMnBWmraZ2V6yn7mw0VfjjvU677wWLmZUse6txnHE+W6f6W6bVa9Mq5p6iDiWnVF/8qp8eZM2IiWC8/19k5XhJOMOS//1Sq/adxEaSyQ9UxgtNydp/2OdivakNxmSb77W+dpKJUbmmStnJsl69EzPEZnmlsu2O7iE5XcvByxn2Jzv/fRhnT1WDZZrtVvWJZ95iRXZw2L+9VZnNe9/79Mu2JWCmkWE60FfSpeWsJLFyo5JahTJtZ1UmikJo32qryiF7Waz7SW8mS6kZTmLm1yNwr1Ju/EVNMbdSgf3876O5i/O+K/r+6uz6ZrNRbu2MMzmxyzX2aNOdRof3pmIVIMlZL8XKN98p5nrK2GPzGhW1TNWZreFQZI6li2V1z5z361K7srkCJHI3gma83S8uvULN6tz1rup3e3b0k6b+OCt1NihxbUTpngDHAOnnLaSKxomtVcM/w35UIsxCx28+sYRH7Us6FdKP/kybWHH1E5n3ZZOZO0ZCLPcXRkrLXtkoCbDnTpZu3dGCllFWSNOzFbrm7Sv0xTd7u0yw1p8YmbGMsNlFnvj48a98Vw3mNJC2qBBFiT0d1aTb4YYZ/3vSccxrwwMGp59Ut+1ZcvtKrcMx5DKUK7sSu2Xy9IP+zMUOFtf8kfeu9jTGPdfXlTX3IbOR1F/7FS/51xKpVuVYy2ruuc+3FFnjo1RKpHWL86YJNSIG71Bl0xO2+ILoy7j3Tq+Uuar/HnPPi2TQ4ZRP5Lbb52/q1uKPQdl3g/u4d07n/ccRIqps9JY7UWcc5DwU1d2sfqQKIZqm7fsEs5HSF0KRgvn7sPetTJZ+7QlIvbcqe2nbansgf+yXCcZTEuTfsO7vxf0/c5Pa/8IfFatSSJm1ND/4vbSwLJt1BsHIbhc2zE5+xzPyMusUe1x7VnSEiu2br3sdbW4upxyuE9asasVd1qVn2dWgjFajOg2RtSwJ2kqORefHlESufZGqp2ZYsShnZrIbiG2nO0eJT/XYgx2asX02emrsXix6P0dz4rcx1fhmfDUCoLP+oXj1Ez7ANzYmc7fbIg5G1NLp3lVeq8r38OLVwPtReqd4ZLWzufFtr9zHipWSyztvImjXSZRb1piZcY05+/2m+Y7RzhHGXVz2kWSq212OyW0n1NTdaUdGN92ta7JdPsZzgzJPYHEoBW7fIPO69p23nNOwn73ksK16896d3Y+pX1jzh+9wOfe1+mBEl/nrYuTPxb7V6zTqZE6iUszfN/k/82ykCiyRhbgz8nVir9vIaVr8HuL1MJ9G76/wN839O/rrELqt6tT0eVH+LtBbmYuqatNZsmtcp06UVzWSrvMkwb5Cf5vh5sFJ7JOlsly/HbAKbzR9PytxBuyqFrAUqi/JrhUmNC/wEB7xl2DUlyju1rd1bAMKSf8NlDSqfyWgfaMmwNK5uhunu5m6WWYpZdkVjrnDvVVDeQ0J4fy3GsBS9OM9khiqmUWsOabkc91ekuqOlwqm4HKt4i4EvFW4vcx+VvgDj75A1GrWI/Jg3DJ6xHWVg3LXJP+3UC8W/9f/S1FS7TIFvkz+RnKv4LPLkq35DwJ0DWhjedJI7hgHn8bEZb8+was8yBb8jn83Yanbk8/HyAuQ0jyupclXMBSzNFbK9OSrbifuZpNrtbQahlXm3aCvxbdLcOdJlNLtumlCJDiRgP9KadoTXFCB0rYgfQCSMlJSyr+WKljsmVS/DiHvBpAHdXBCfpBA2lrRpgqey25TH2Tajnu3Cg3gaaV6G3N8h24NvSzW+Va+S7qby44ZA2oWid/jr7yQ/mxLEGfug/98AG0+Ep5SP4affVRuNvAETvwjDp/+3vSC7eap3DfLnvg1sgzcGvlWbh1/ArW9+U12Sf3ywE5hpQ+kM/wxEk5h/vqW0798ke5KHslsPUuVctbZMtzyLWvfONAMfLaj5mAils+V+xav3lfg8tnfT1pw3kbG/N1rwda6n4+6XKl5alynLlodaaheY7M4xviiUJWi1NJZXemIWf9I17nJY3xCj2j7290sN7pZnXYZr3nRLXMrJaLDn013hcJ7L8c19edR+zecy5MS3aPKqZeDSuZUa8cZl9OLZ6zXmH1LkM0T++b9Co1HdH6pZ9y2hMl4ayaGfQyktqXIr2GWZD7DGtgI/nacrqf9O/TbGq0tFLmKtxDukH/XZs1E7TKco7IyUxRp2eaOmXmmr49/Yr+fkHy7MvUOKJNOT6Ff7KA1hErrqZd6ReTzlut0Hvfpp3j9u87O9n/5/3c60qfvxTKfhfBjxGN+6RiLteYIo5tJNOZQ/6tJ9DaK/ZcxEqtSXuav5i5vI0Ptt8/88gNvq7i+6t9d1ULJS7W23we1XO/MzNzlaCvXdFfhLHZneHxJLjKUO2kFTPvM5fb7nafWrH7/2Z4vCgOqnqLudTnI6e/tFDEekhqv3lumu7OwHM7UpreR7hYbC9M7ma3O43Tja5UEV2ofBwYTuleug0fsV4jcmYB2L8Fkf02XLbVbbDRTG86G9+DN9t9ua3oVaLmnABQ4q8t+rFLrHJfuS6PHVQ6K8DyTOioFxq87zTIs3ZSNq3MTupRMgymv1ljvVM6kp4DDFmMRKYvzdmkcNwPziiwCzqR9+2o/TyN5WK6ROoMkaeTMtBwusMUv5iTlmr6zN5gbl3iXn/2nTxrj/rJa+ZvediNxbktZpKQRc1gsZ1Dpv4wVbheMzsiLM41nXTQJo7kmMuT5XwZk322FUKlkRzF0WwYa/3dJRWfOXnmSp0bMccw/Zc8E2dt1gPtCH9K928nbkjf257SPk3/b0//v1ZPIfdScbba2nvbTeHJVFYhX+Mc49bMGT6Gq6tqWiJiL8OyzusMuU83a9R2mILpfIuSfHvR6UpDuddTy/Al0H/Qf58qEK/HgsPzxfRy9UjVX55PmJ+qNNUFvqzxdY7uVZp5rRaf0mn361Qdr3LAWpb4vZZZhK7lKwWV07OuvjnmK1DfizgPLU0foTX+dU4fiVSWd/PMxMQq14N8+Tpy2XeiZX/loai946nVvhKNLIb30KN2u7d8zW/EhxqdrBrt2N/9F8WdUZbwrwcW8ZW8uMU4n/Deg12csxMrVXu4oZzSPGQ1AqTnBwf9kyluxzpX+0LzaZZRL2uIWSc0xL1oldXVc62tgatAi0pY9xKv7yEW5lE/+GTav0UTmc4ckxXucVYtZw074Sd1peQsFztEvJ8rPlI+nrfroVxF5Rdo1dk6kBRW32YIp85ngi93Z3jIdJ5TzF3fyH53ON9qof0eO9AVruwsRPVo5dNqXC7FOFIiq2Nmnml61Wl1y4LyclPhusjWGN3NVsxcpZCx03c0K/acPk/77q6wnR72dVHaUxArZyF5f9t0WtVGkft87fcmVk43qtRY7elMqfjVwlnlSs1ky3m0HPK2TrsVhY6+Beb9XPFq03lczGw6fwPdZ74I+82bLmZpPp/WPdnB+cfFzhZ4aYnqPI+veGsrjw4eLR8VpWiJQieS5/tmte+yM1INbT1zlcuiqvyeRlGnI8/j+d038/znb/Pc41tkEdxiWQI3X5bC3Sydcp0sl+vhVsifwM3G7wrc+VO4Bjxxi7TJbXDflG6462Ut3A1yJ1yX3A93l2yDu1d64G6S/XDr5DzcTTPnYV8x52HXgFvUqfALUC9LUN+KZ64Hr6wAj9yCGusGT9wJXtgGHtgv5/8f0IzQyQAAeNrtldtLVHEQxz9nXbVMxMSy7IJldqdMSdbK2vVW2HrhuA9mZcmKha2XXBWMLkQ9+eRLV7tH9FBBUBFB2Q1fo6fuREHQa39AYN/z86Qia/gQ9BLDb86cmfnNb+b7mzMHC0jiteUjrrQ8GCI93NsZYWWksauNIF5ZGR4mQQ8LD/GSEknFU7zVziK11i4Wj+HhJylQX5aFvyQQysIuscX92wP14pXVQfGqYGkWzTXB7ZLt6krxkOPpD9mOJkZER5PoauJi6Lyublq4MdJFXjjc2oGvubMxjD/SHo5QbniwvbOpDTsazc2nLtrdEaXB7J8m7jGSs+LdmA6PMzyB5FHZa9ymk85iVlOgbLdhs4smk7FXz6Nc4r558/CBH67001o4IlkFVs3ISdZeV9NmnXSlfuu+a3tlNInWF89g3HlvT7wdfzshwc0hRWu2m2UlVWbHiEV3wxzmT7CN2C3SzF5GK42ldRDPYbOkE5wjkwGuso6XIh9DosJxOaT9MdJv7WyTl+VmZXHI8BqXT+6R63LHI31cZMtUZXE3hmWN4f2qIlnWw3TTY25uls7ImDIGv7WZ42pMNIjmUCbunLpgUp98asf5eBTXSytHzHL6J0ceZfIZwzHdzb5C3otMJ6OeTNFbNkvUa0sJMINy0TL5VLBc32YNK6gTrWEPjaylWZTHfloUPaKzCjgo8hEVFRocNtAr2iRUjlDEMY6zhT7dcbHu+Lp6+AY32cktUQN3uKe4D0TNPOQR+3gsamGQpxzguajV9ESb6Yl23vGeDj7yiU6+8Z2uGF3yv7b/tf3r2sZmjc/95q5NYeJNZSZ6FNlnYvOXI0+cEgVaRZojKcyULoO52jdPsyZbN7FKSK/X3kIhu1G4Fun/VEVId7KDeiG5i92EhVCHZmwfpzjNGc7q5AEucFH/rctcEaZPDKbPeKE8hnjDW4Olg+Rnvv4C9J44zAAAeNpjYGFiYZzAwMrAwtTFFMHAwOANoRnjGDQYhRmQwAIGtv9ODAm/maF8P38/V4YDDLy/mZh3/HNnYGCJZnypwMA4HyTHeIppCZBSYGAGAHh9DzMAeNpjYGBgZoBgGQZGBhA4A+QxgvksDBuAtAaDApDFwcDLUMfwnzGYsYLpGNMdBS4FEQUpBTkFJQU1BX0FK4V4hTWKSr+Z/v8H6uAF6ljAGARVyaAgoCChIANVaQlVyfj///9v/5/8P/y/8L/vP4a/rx+ceHD4wYEH+x/sebDzwcYHKx60PLC4f5j1KdRVRAFGNga4ckYmqL9QFDAwsLCysXNwcnHz8PLxCwgKCYuIiolLSEpJy8jKySsoKimrqKqpa2hqaevo6ukbGBoZm5iamVtYWlnb2NrZOzg6Obu4url7eHp5+/j6+QcEBgWHhIaFR0RGRcfExsUnJCYxtHd09UyZOX/J4qXLl61YtWb12nUb1m/ctGXb1u07d+zds28/Q3FqWta9ykWFOU/Lsxk6ZzOUMDBkVIBdl1vLsHJ3U0o+iJ1Xdz+5uW3G4SPXrt++c+PmLoZDRxmePHz07DlD1a27DK29LX3dEyZO6p82nWHq3HlzGI4dLwJqqgZiAMX5hlsAAP/+AcwCpgArAF4AMwBaAF4AYwBnAC8AYQBWAFEAMQBPACYAIQJ5AAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942rS9B5gk2VUmem9EZEZmRJqIdJHeexeZka6yvO+u7mrfPTPdM90zGqfRaDQjhyRgZAAJgcQitJJWSGifsNLCAykiO4U3w/KBEIsWuw3Le8DjA7T07rKLlu/JgLr6nXMjs6p6ZoTZ3Tf61Bkmqyrusf8x9wThSI4QWuc+SngikrZFib48EQX1rw3L6fi/lyc8B4fE4vGyAy9PRGfga8sTitd7ak6t9NRCjrr/6rOf5T5658kc9wAhHHn/3a9QifsNopIUOU0mCUIa0zBPgkKDmmndDNwyiTGNuklcaJiicdMXDbgaU9lB3iU0rAxtWL6AGjCVsSmrVjgxHpvRgCmMSacbXOVGaSr6ONFHC22O7w97RiQcchby5ff7KiVZdnNOn8y7Na/D4xPyiXiqqCXS3I/ystcp+LwrH/3B0wL3yEe/887ntHxBTSfT8KzL9E9ogj1rgTxATI9upntTnidueLawQc2ibvpvWS7HbdOlWDnamCYcJA/3Eso04CRlOAroVgke2uWHh+bHViIHn+ExEM2jBqxkbjzGB6f44M4QPLiYL1fadMSuhJM0PL+y7MtKssxRKogOKerg3O/x5SS37HA5pLiDc3Gf4Twip/p4Uag+tOAQ+k918YJPpjzXeGQdLryKECKQ9N2vcAasRyYayZAKeTWZpID+ZqlnEh0Xdg4eOaRPFZ48CUc5nZpV3czesoqwhhptmMO4WY5Tq5Rtf45Y2VL7c9TKFfG4mGt/Du5y1FyPU2KRFKwzOrZyCiwzlsRljvrDUS7kFAt5Hz08rlMnH0xTjYdFzz7TTif9E8H1ijd/5P6MQ6S/J7g2r73vjdkP+sKuDyrhz33IHxY/GFR/X054/SEfpX+JB2EvPXiA+2nOLd/Z5rwi9/O823Vnk5cJSO723R+hf8v9FRmSNbJH/gWZ9FHiJJ68VWhMohxpWGX+NjVP6WbolskbVs15G8T7tllTrAVY8boxHTvI64Aa24Y5ViwvUKLjvG3ms7dUK+O4bZ2GCws1WK46NsfqTSnaLxe1sZkPmK2xlfHCjSTwuyypgXWZOEPJfGdhaX13D74DNFmlg1XaS3M9Yzjot4VBH84MoEMoojEpLuSd4VBaCMNKQY41VUvSiJYv86qBXwAB2XbyctrLZ7YGO0ud/Sv7ne611cJaX+UEOeOTsu30YLmzf3m/03n8/Or19zYplZOiPyxROirvJ3m+t1ddaTTH1bJxenHhQsMT8qT2E4JjcVnr683FeqV7cmQ8MCw8TT8gn/ymt18U6a/TNwpi86HrD3cIcZBrd7/CO7hPET/IU4H0gMJTMumgRIV71oi/PVGBvhMBiZzjb09Xqh3V27BW4DDhYYcJJP26bpJb06itMFHFSoMiuewzUCsQvWnfPusr1iKcNdmZtQGEjxLbGKTViRD2jMdja7GvBiZqtQPHZlM1Q0D7Ucf+0opqNYvwlVwChNJF4AsCfgE0cEZ2m8xtGqTAAgqfoQhjTBnYQF/0ndGxe9dKp0bdjVxxt9ffKXS4mi/ovvM73lBcr8Y6einToqXjXzgzvwxkOa23dout/XZr92Cb+x7eL995yhWkXx3uLoyGO2sHV459oTe7iDI9vPsl7tPc50mEbJOHyb8mkx0KJL4OBA8g8Vd7U5lHA3pzJIP1tBb522ZFt4n9CBLbEkGCRcXSgJp1m7Z1RmkrBxL9Cvisa0AjXgAaFdVpQE501lGocwHTBwS9LoMwuwXi87c76xfvwzs7qsWfhW9XAjdzWrGOlxKqmZ7pPcgqiDHQjx0C+Tib5CjETNCpLehUS/NamtPANICVENu00uYc9s/BJTTtnFgB4zhEmzi8suJNtyobldZeOd16eGn5ohF5oHyq31jNCBz1pDxCpZZv+Wtlpbp4eUlNVdKcEFwYqlvv3i4vpOhWeCEWW1Q5LhRXRJeWiWRTWZeUHfDCb++/tpRLnV0Y7Vfy1crSoLJ+hn53ebuhBuIraQe/3m/VUsONTrC79eCaGnRzUlR2uB1XP3iuffHKEuU46tbcYjgdTS+ulYvt3VylKEkRsL8U/Mkfk/eA/VXIJjFlfeZKqKkyDXDYnHAoU5+D9OHIp+MJsS8T3QoAYxw+5kmI7Tci2j1OIicFOSd4iJiDk5hP4MOcAzzAhsMxeAr+fuHgbyjh/hMJkyChZoSJggz2DuSAIKeQtMATjrHCh9QvlM6te30ufRxPruhiyL14qfk393/8hx7iRHH3Qz/6xCs/9dHTDkrP/sCn2frs3/+Fo98v3LL8h78fPDQYOQoMBB6jHonOcqGznIyPdVHxrJ8rNS8uucIHXzr90U+98okf/dCuU6QP/dDH73/Fp3/gLKUz+v0b+g7ui6RFDGJmdLTiItKvzegXduOZpQOVwmgXIiCqUgbk2O058rPabI1UtPECPA9bKx7Y/8IXgJa86tWWUw4n9VW93rgn2mrHnA4+u19SC2FPKiSG5Vgz6k044mvp7Cr3Dl9eCrUjxc0K53SnThQESRa9ZYXjaW6ck31cei8f66XFhKLUI0qcIA7qEp7+v/TLxAc4aEhMUZ8KPDkPjI7rDAhpt6w4KCNCnjgooynDagQRDoJjM64CiDhyqeU66k9eG/aHg2UOFtBTfbTrEOjP8WJna7FQuHDhBymYfs0vZv9Kzon+qEzpF6rXb1RKa3s9kT+ICE6bvndPkM+SVwD3egSEEq2IC+kb0k3u1tTHBHHC+aTGzXXO4QYyIx7j7IfrdDU0hxV4Jhu+oBKXl9e1qCBoNUVV1xvuwI+dHIXjvFTyOvySWEwtPVtzsb9L/oy+kpYBl+hkhkRSQmP2QRF3oXrY7EUH7ED2MtQ3J0Hexy27RZpwion9i6f+TK14lQKgAxQb+P2du18iP0e+CX7/Hpm40f/Dr1ZgLceO53/G6SZ++Nv2B/trToK20D1G2OaGQ+Kc4ZlDgNmpZTOFRjJbHCar9VAxX4S/mbv7ZXqW+xxob4JMHPB3KPAY/4Bgr8Nl6xxzNeUc5eSYeHCQVrmf5v2uOyclJiPVu1/muvTvwF7kyUky8eLTRngyACkB6XcwvEbNAtNjFUy6qlhxeGC3cJsZ87gKT+t14INnIqgHZGx7O+5eT4b4A5BIH/GGj1Zb+ze6G286deIbdna+8dSDif6pdnc5GeuebOvrOXJ3+cZ6bvG1F86/eWPjzTdKZzervSvd/JnthnHZpvXpu3foGOS6A1I98YBfMhM9yw8eSNctHj6KgJu7uinesrJgGQx4zCxI9c1AqN4Gr4FihBLErVA0FW06SHMGPp3tAFKUOQkabnN5AI8+eprjY2mfJ5XkeE8ml/GEGxWF5+IZjycT5zl/LpdyezOZNC9HJKqUcl/KFVUwzyD++J837KZqES6WFCpF7ItsDRt3D+gfAt3H5J1kIqFv1eDJ+/q0wBMNxKbQRxUoVN1A/UXdVG6ZIQMIfdv0KpYIK0q4bt+sJkRwvQ1Q4SW44gUgbAbGpqhOeS1T6KODrAZMY2w1AI2YXWBRAZELybcRuUjqZ3hvKJFtzGHiCG0nYg009asU/z/nIYYNFUYi8Kcz4Ij2AGzZRuOBaqWuNBuVluzNSBzHCakrw/Z+K9KpJleb/p9IpjzUp0kOp6B4Ok80m4+kXI5K9XyhMOzGjf7CJV4I6HognIiNjYzRL8WW6h4xnuSF8jjpRvWi7iDSy7h7hf4W/RLQ69uIOdKnTtuSefWpzpMEHGn6tMSTmGDTK30LA6XrLFCyJKBOz2VTKZEGWuRw+VNnoaSPkEq9wKQGEBWF2DmC22RsetUJr/SQTjozh5oKPwlnpYDZHNsChKABRbpsEwJQ9ghl26bewLBv99KMeMO5LpQNUfSuG5Vzg5N7LlV0SUsX49+UyoclSXO5eLW7Va8vNQMuB83db3Svjtffcql7+m0u1eUOFnb7i2d5wRUS919dklIZp1jaKiB9xLCn+poNvnlta/GJ1TjSqnX3ClcA2cqDjZ1kUaODDKsxPfbcshwz5XVghEgVXHcwi1ZHZVaHApNVGxytcOqIr+SW8BL4bHulLXrFExc95QzndAT/o4u6Ik/IPkFwOz67//Z1pydL/8jhuPMWFwTDqvRxH31APPiZkOBwx2OSwDnDzAdcoT/C1UiffD8xjUNelvSpxoTfDIICD3RTumW1QMxTLQni8ziLz8F1TVPsaBJPoYbEA+Akhixu/NnV7S/2SbghCWag7TCDL/ismvRVs/oCmQSqtXa7TSdB9okBpBWHcMksjM2UamaR8YbN+BKgzBYwWgvA5XsZ3ebQWMCpgbAceOtDYMRshJ8yuAHGrbzsFL2jdHW7Xt++WHG5VwrjfiqluWOywEGQpSysGFL0vnecaJ+6r1pafS+w1iFV9rqNjWZccARcX6U0GeK5xFrBBREUfSKw+NCJxQdWMkwHCmDvf5d7G2mS15BJDfkaYDEmEiXHs7SAm1FzEXndYjbbK6DJmKYdpAC3wemD/YgA74tgGdvwGYHwcRLP1cYMh1tO5oPiATUw9ZJUumgbh/4qj+6Woba5IWf6P2AQ2145XNHPPfpK3eF4+B0byXorUOtq+mY6ZuT13dJ9T+SW9hsnHjP+5uo7HxwnOKfXEzz//jevnGsH62uZ9d2EXyvmkjeuGheWMuPnmD89T38WbHyVLBAzr09FnkRwVTW2qjIYwrJipWABmvu2VYfP8sxhW2JexRhinq7pLVJkoYbQng8zqcYYeK6rHadLoJVzy4WVcUoUaazbCkYzipioyD7/+MntjyULYZcSozfinV6Soxx1BTzFCxdK+sXzVwdy2ueIqGs/9Nk3SumM0/ZNBvDoN7i3gmd6lZ0HsGQ7NIphaDRiT+8CPxrB4L4usLSODx6/C4dFvJYExixgeOSygVhRXZd4ORDLCrlWG406sSoQHH2G8JFktjvjDwY9wBw7XmQxzWCGHdByH1opZ4TBYsQTxrkTuUJN3Rzpo8K20VxKXz93+dHyUqZYy+nVUovSRn/5/vbrXvHgq//F7tVaLKaPqv2VYbu0vJhN9Ue5rbMnVmvjmqppw4Y+bJQqo2xpe7+7f/UC0KB69z76F2B/muRpMomhb3MADfw6iutFkMKaPs3zJHskpClYfMqWSwQWKJcpRET+AEhlRJ048kw+3QGrVEb5zGMypDw2Y+pNd4SUGBGOYQ6emWPbm7GwEJMfI9HGItX86oX2/qN6/75XPd0S+affs312I99PZ7qjWHohJJRO1hauL9DE8NI4tfym+8697ZHNitOtyNVXfufVb3y6slnpb+Q8WqSVT3WuIH5aJjFi0h9h+a4RQf3jWabRDOtT/yznGMVFmh4DER/mHAPzIys2i4qOcJ567Hh5nkKcf56d5Q3pYJ5AZBiOYWp4hiDJkBPETDE7yv5ylqWcHMY0bv9ln2HGlSlnh3ucjglFiwthrgJMP2D+iayl0A++PNIOHn+2e1G3On/El4HfXOrwaRGHB+h/pF8lHkJG5VEponlpBJ3KptNHX6X5Dz5Gr/MO1+Of/c/Z8B+5Yr//s768a+k5WOOYfID+N/o0i2VSLLIV5rbPCqJqpXUMZMi9IUudOiv3no6dAv0/BWdlaaXe2NltigL9UThbxLOdD8hZUUGQ9iNyRvTjwQxvEh/9LyDPfkIwwnNEMEkAqLYknnYHffR1Dt+pN3/DCdHJ09dS+oc+RfjLuFba3Km7077fCMGzv+Xul+hNiMkr4I/fTiZdtNwNFhGYOd1y4tP3mYjwxrTkYNi7pFhR2pj6nYhtbvqjVV9j2mbxguln6SvLDXZiAJ8ltHvc2PJHwWY7w7kG2gSzrU68gSSDNLkGYF/eHZ6pySqtzI02H55jObCI/ExdXsTnt/BUiO0tnLiWajRTouBWJSUdL5fi3WysEHH6cqfmcQlXL/QySmJztbI6HG3UPXWfg5e3G9XFdr2dbgzi47bjQE1Wa2GMXTjy1rtD/inug2SdPEx+xc4umbGetc/fnlzHBJOvN73E4JyZN8wV3eqBBanraEhmCaZp20FycLutsDTdebCp5xVLhcO08/b0AQcZws2ThplWrDKSa5Z1Us+rgZ9y1HsrO/uXriOlHlAnkb370bykA5YvBp9l1RyisTGRetd7oB1DTPvtX8L8qlsNp9JlstHee2CWlIqctGO1Q/ODKAAIyo3A6KTteOLIZx7ZI+aTWHQ0S1SJ8/sR/Poa9fHwi946etVHHn3dh07Vts6WKykK4b435XNLvKAoocXm5jsfe92HTzceeOe1Sx/oe/18+om373zH5P5f1K+MUp2MGulr2WqwGFW7LVeCTzSXy6Odv7j2sTdvXfyOSxe+/bFhvx1/6NmnSoKDVyulX+p2fOtve+jkN5167CeePfvdz66PljiPXF/OPvcrN859447DtRVQq1d27t9eevMD0VPf/tTyDbQ9sbt3uE9yP0ZWyBZGviPkXbBn9YGPvJIxDGMicyDuW2sj2duwtpB927q1A5pqbUE0YpUgGDHXVHNjbMqBSbkG2Gs8D9BGIKy9YJqzozGgDVeA6/C/Qb/Cg5cDACbyznBIi8y/4VyjOS3vjEFQEdX8vyWpnv+mRjS/wEn1tuLJ5hMuXgCD5H+vN+RzeILu1yucqy7wcragxprfqUCwsfURXtLcQqhV4YIcd+dPSlWF9wY8djTnibgFn+BU8nQn0ymVB9GDP2hobmdEcEfwG9wfdVsc0GQBaLLAfZLUyA5WAyKYnIaVgwcAjGt14Ig3zLGOSVNq7rJAtQkesKlgHQBh2lg36z04t3qYL3XfNtcQGcQB6ZyAC2PRDvSaqlkB2gU+E4qUUp0tBg3GHTu8WVStNFhycytgxevMiZqNQ7oO1Hnga8cohm3g7YwZw7PBkWonUxH1NujgGOZb4PhE2utJJ3guNE5EOx1t8ZGls1uDq8Pu01eSZ85vf4fPXyud2imvnS4VGhvbcX0n543xvrCLU2oV+n35okJdmgegFI2uLa0/KPG5k6vDawMg3xv9B+5azXt6Q1/KeBrFpWx/DI6M4V7uQe4nwH6eIZMiWs8Ej7o/cSBlA0jFKsMRgAVNzcZTMuh7DXNHGuBbR6LITGEAAuGpi/jSuWOQAU1geFYKsfOSc+1keKGw8PCb19eeGomCN6pw5c3m2rVxYuX15zuP150yXXrD/vX3XaT33/eO++rxeOFczSGc2E+2zzw6uPr+y9mEIyi2G1c/PpOJnwKZqJBF8owtE9MFnrwKuA1iUdCtNhMLai4xeUBkWFemVVseYHV1WxiSIAPL8FkFGbCCJTBLvTosMFJYYAtcaMOJnKyObZbXXoblaHuA42D7fcI9vGapU+5eDivdQSS1nBo88+iZZnXr4pWzyeTe6fXvdvkqpeUnTte6l161EOm/lLfAS39l73WXLrzxbCfqgrM3xe98DTQptfX6KxfecCInElYrRJp0gCZpopNtcpn8BwLe3NzpIVa2+F2wHbE4xnix0+6G2dGtLpAoAxFsz8oinjQmmSzeztQxSXKF0S0s3J6IYbwqEvihsDLt2CTs6JNwB6+H4+w6+k5zw7AWIZJYVLDENj3LinDWfVh+A/JOAskM0jGMAaI5CFg7u0Du04sgQsVm4+IlNP9nVat6AQnficEPrKyexR/oqubS2MwErOrC+OUYYPQYwcM28VmSgJvV4vgByp4dWiapxnLuhSBTP1sixXK+zPjjYfzxt4yW11ctIVfeET73uj2Fc7ocLnAsyZ2NJ0+udqg34gX6eyOyoK8mnSf3ij5/yC37HcGNSy/HtztfADYB+ufeVqVcZHEhIjoyi+WDX2lkuwIfW4zH1+Mc3y8d/HIrtVATZHf+fAFREs94KQEvMedwknwXmRCMfTAbFzMA3VgDOCow3oVYhm5SCLEEVxt5tzfnHTKsbzMMEBFwaQxc2jGsVdDmU8CXPsvjZQsYl1rjMKt8mqsqxAIEXA6oxMYmMGCgmmtjsxCwmsv/AAMOfUZwBCHiP8KDYzRX63ozEKhmgPq1drRw4Zsj51538jjdH3ox3Rmh/aUc/QQjNN6hd/57o6VyrjBLcXFvrfJHxP70i4hNZrE/91GwgWvkTWSyjDYwzirohzZwWqouO8DFloC8XWNW8rQiYBEjipUF2g2BvLJhDsE+gsz7dAabshEkqKO6jNLsQydBrFJcRexjBapwD6xl5OsZy8OK2yo9yqUeldIA+UTmRnTxsec3Tz4PcNsTU7j2qfaV5wbDZy6k9aiqyqUyzwdPZjK7CieEQqLD1fj2K49+6CJ98PLbLzfi4cJ+U3Ds7iXOvvXkgx+66pRcqbLRrnmoK86ciDsuUU+91Qrn/ZnmA98/l8WfAVlsgCw+TL7HlkWz30NxnBRG9yMq8QPZzK2e5YFL8fWzcGna1onf2zCbPbTFDGWCUGaAahll2rKFEsLVjMLyiJeE21OdXWSwssXsMUSp1lIGDIRW7vbRIVuXdLh+4jqaiLbOsrAva5HnyefwoWCiqw0OcraR+Kf+wDEpDVbq4Ui1EuL4eaY6vZpKbX4nXUpefvDSb/2jX3w5mcV8dsRFlWL+4Fqu5EfpBQbQ9W6D8gc//0/+ASbPwCNaZzwaHLMVBZsxyBUzDkLcnPPAagGRM3Mik38GERf+Ny4Vnpu/K9Iss3MlguVHd89SUFoKrBKZmGVWEwLrB8DnfLHvPXxGFkPy5X7CtuSVViS3G+D4WMbrrZ5ZF11/mt19aI3jj56JO3ykB3afuf9UQfAxXPF33PcwOt6HvU6Mkmcu9pisW4VTBgZPE0+804NLQ+Y1qXn/IVUfmFF1EqzZ+e8VMKKHGe5/mpCOhv0jLGl/w4+nsyo7CrDY5v9xNrz9N8t5sK4L6VAp5+WESE3Pfrr+6pVYuVvh+GC1Xg0E1i9c/mfI5eVblTqHRRc8kaJu6i8WfjZa+pZz2XqEd0VljuNSDz75EJnLI5cEOg7J4+S4DJqGbhUYNJsUjKOSzOiYcbCqAB4aNnhYOBTTPjiiqjrRdAMxQSNgtoG8ngKQt/FPIO8SvcflM6B2HHm36r5DEgIYcy6sV5SZYwfcjXDg5bz7nFDlwsFT4OejC+25C2eyDT6GfwfQ4DHyBjI5D5JkG86hbTh7m9fQcAbQcKZ6VnUmTI/r1hN2+v2Fs1/9ZUy/+8xTinnyBastf9XUXyA32/rJU21Mvx8e2R1cVZC1aSJ5ev8CczDzmA+juzZLSgBVMHkLCGh2hFkoEQO+w6Awz1IWdlQ4GlYgLuzx4HLgX/zakZjCNaBeJuDIUsGZTvKcFE96vLGYlzojf+GJJ7x4DMoW8tOiQ0lpPOdJ5zK+QLOh8nzWp4AI8WX5D90hzxclkFIhl+K56ErEVyrwYlziw8sr9HGvFPKFAihoqKt3foHbYgcggSGl4vEdvL87jHBSVLIZ4Y5KvCRFXRJw+5k7XxbgLx78RCoS9CQ1XoqLHJ3jqr/jfgF4EiVViLDfMtPw/JKt4aYPMDIypNbDHjOrt2EYGGCjcErg5SXFWgGJHDluT3O2s4LI25JQQMMYHq6oN9VgtjZrvAHUOlLNFhahMam0gKkQy5WbYyiMAVUbu84DcsrbNo2KlAly6dDEITpQgeoVFHFgpq3/PdvWFfJ+X7nglWIJT7Dgpe/jDpq+eIzn6K/7szlfeAhyHYnLoKIu9n3eG3bHNxboJw+uLmzE3SGGmSj3ozad//vHuMcCMidjoGGTO74yOgjw/OP0e0YrcVVlOVLETz8N+EkFy32KTHyIoLQjBDXNsGzivNIdANgUUKwEJo7cM5MeAKL57Eq39nKVbu5FlW5b6nrX3rLzyIfu61z9xr3HPnjpldm1h5Y3rhsbrz25dH1IL59520PG/d/3ylNvf3jw0P/xtrU3PTTce+v+tQ/ct/VNc5uUB96vY8R46COHBuY6gduIRmw8Tc0NxnID7JGhsHIIJgs24dNgkUxnBY1QXf1MKB3JtcYsVVDGSmh+bLbUSbzAmtlCL49PWAnlqJxfKffvrX2OjqPpmZmyLX1lL+rrGZ5Ljzd7j+/Xk8DIuK+0Xj13TU7F/YcQWhu2X2LVOcoNH+iPn96W5ZDE8/GttfOP8U7/QfAYamb6Ubh7kjuY8XWBvPZezhbQhh1jLwaRLSTX+OW4vDjj8tTnKBSHqBNu1ar0kOO+FnC8MsS6oGoWWXD3T+N/cJTmtUjPYKYd/KDwDwrEn9+oLvf7mXDM4+P51LhcMSrVxX9ISg5GCVemkHY5qDssuUOqVG43szN/9mXuX3KfIFfIJ8mkeWjLazYwKO+DJQ8f5aWmo+VmGLDvmPVUUvM+Jk4nQZxOKtMFG/su6OZuD86tdaBTzHXbuh/bUtGUBC4B7l0/iR174bQ+Wk5tnUOTbsbUSb5g44oRBmd5HQi4rE7SfSwyYG4qtmsH2CfuFbvCPJA4bEAYocG3u/acIhZiuYrmzFcGX0cQaf5e5OffLdQu1/cfaTcvLDiSlXoqnGuWKF+6VArFQ95gUS/E482QL+odPdA/fU0rhhyeFNijcLvijZ/Azo6ZcJYUKQSOlGvud9qne15Pqr9pFGpBzhOSeWeuVdGKi8tFgCQ6x2U2+0unBYd8wCMkcWuyjR+3736Z/i3I65A89fX6hEcv0yf8kp5gBBpYBpuqUrSFZcF7G4E/Y/cB/8+0AP+z+n3/WT2+83yxznI+Q/IcmWSYN0NbZphRfVrhUdTmddIkrD1pp+9rAiNDCGsiR0grSVinIropRwYkqRawxB4aMtVyd1DsonkIYVUSTM5rHwOs3jMoEQ6FI6wBkTboYdmDCWDvOL710ZjLlbzwcK/3iosJTpBigG2Xfq3TDYty8ls5Plvw3vDkszyX3cqG9SYn1i/nsT/T549o5Y7DQZfWMsOScOfvZwaOk+586RhEtbFnHXT1m4AmW+QRMllAmQjxZAwyQdC1F3rWBsAvOdsyZs59+ZalAD0U23QZIA3o1ZVlmxgJ9abDVVhABTQCZgWosIEVPoPlQoLMmt8DNVkAf7wZ6ngA75xVTefeoB7ayPiz6aTM8am0lD61GVsOKwG3lEoDfskW/NogyPFaXIoUkpd611/dcsdAjbhP2hA8InPeQungtxceGqhhpb49+EpnEOX8AYk5bjGoctqg+zf3PV5IpkbPnKGrxYIXdM+mUQxw0IeARpukadPIJk6pZ62DPZPzSJot3drGwsL6AqxX0+31Ym8XWw/8LxwJYwVcKwDORJhZvnfBVHTOtnZUWK9HTErm8kp2BeBiTvFRLpTo9+L+1KAX9XGuFliVRNKvjSMcnykGjVcNJdVT3NtOh6ORAFszLgr13iUGBS7SXn/nu09uvOPbtqoJ2ZV2zuGKHJbFFeNbDr72bRz3il/48Z1uR+E82nzNX+Z/l/txcpb8EJnsoPle6k0S3HztdVYuszwVXPs53Tpvw/B/+4m//pwNw08q5u4LVgBgePiFm8FAONi4GcJ/4cbNEyd3g40JXMy+J/uegtOnBkBtxhO4DEfkJwMng6Hw7om2/R990bmN3/d3wPxEtExvzdauY210TobSkdJBO71ZCB7R+1izNW9TGzA7VyjPqe5JZVIepd6CYDiv+NRQqxmI/LwrpOR2d9KhNyiC3BX4cDeh9UO8oMaigY+5wnJ6eyfnnjr8flf1Mnw9POcA/AehDyc61WB/5bvft8rVee6+F37pfvpsL+2X0k4p5kJ1BdEU4ssMNd73sz935c4XOJ6+i0rfNmx7OUlDnFEFu/UGkL84uZ+8niyRSQj5Af5SBRYMt8GdPsrZjYgPw4XSFeTJG3TrjSiPD6tYgRVf8/qjOIeuUW1GpciRqQkeyuLhLY71q88ylfl5pMNICcTigV70XlE+isGrnBBdLL0r9XDUxYueHM/FxslgKc8F6o1gakfjuKTHxTmjtXP7pXBGi3h43ldvhUOtmp/j4h435YR48cy5WiIbCngEjiYeLlFHGyL0QsHvLxU8lPenq+m3866E5Gz1frHyXaWoW/S4PE5Jk7g5Poc4JyI7JVF2uiKl1eefXy00YzI3b490wzddTq/DGanjvVo74uI8kYPf/9AiWI3oTEdsyyEE2+1fnvmP64BrBuQMuUwmQ/QfY/Af24ap69NV5j/Mnm7JaYiQBLiRA0ac1c2VW9a6cNs6B4ZyfQXkNtTWw6cYDu6tgt0MsZ0adRRjY9YzdCTGFAzGcSrTI4PBF3hmF4OzjtJe+HhuJB/z5UvBYK/r5/iKgwsk1jKu7FgLU7HKC4HFiNZWOS7Rib/v7KeUdFLgvp/ni3nphpTL83xuMxkZ6NwncP2yKguq4Ajk+9+6e+It7XrIIQSccpARUQrIotE7+DN6NpOgcujOo3LEzftb+uufGHQVBxYmOcQdi6wm+Qnwum8mZpflNCaFLktoVNwNU9StyAx7+G7hXjhsQpAVq4K+dwY3ZJ+9Bami/pTDGYzl8jprNagFJvFUi6G8Qhe7CCFgNEV1IvtY004kYDlSrEK+yo+0ezskwRVzdmPZrL0UuwxFG73Bx2Lnxo2HWvLHm6Oc7M1Lbsm/srcby62sFRzO1W9+64b06dWdgpwLOlwC7V6+2N755owgpM589KPfd1YODkeCM/tAFeTQEZCe+Z3feEINDEe8L9IfxUE6OZePzPYT/C35a+4LJEFWiBnTsVMSa3IS6zh7FWKRJOs2ANSRAo/sJ0gyv+RusOYzPwKQBNsqoc7rhuFjGbIythAX4kYwXk+KwmAxnBhWRSE8CsVGB3/L/y3yzxmWBV+pcodmU25ODPo4+7kyd/+ePsh9jkgkQqgps2cQ7bZuz2yrA2saoABhMg6f6PILVBTLIverHPx3Zwns38uuj5/VHFl30nx94q1pxF6fGGG1M89sfREsNbOW6eM56FlP5HCk2usTxNogER4PBTFVi4e68dhCLATr8wVFzp3KcncrJZ8gh5242q95Z+ur07fTv+d+GuK2NMHWMH62zyKgW0G0mbyftfN1ugnKNnMAVNNZJpHW/72c8SZOnsq4c75Pj17TkD30U+SuKHC1p56qiU7+7za/Y0kK49/I3n0d57z7w6xnaLYX5km75/9J/FN+3VIYKbV7NzlkHSL9I9ExOrNTL23vv0+JSVLWNcdqm1yY3OZ+k8ikPu/28tzT2e+xW/rvaeQP4hKo5kTzsRnqxbz5KMRr+RXuBYkTGve3BEqHF+xeLtY/SH8PuHWK/ASZpLB7zgu6uoTupt2bbvBkBPzbUMwqhgIN/vbUubuU8jbsPqLTDDivum7fVFeJCxgIEDqiWyp8rCoIE02ngb2fZhd+elq1dyDsI6dRkuNjawes4cSbWsKOlyKqc3uAml3dYMULc1edkmJ/sIqK72T9s17VUuPjeZeojRLnWg4mc2D3kaOTszvrZ4EwxGzDUY+1lkPMMbJ7XlaojzdKSzubMd7t9mSCubJC5RzQ3lF7sFwaKHHFHQcQHlvRZC/Hc3xYVfultc1XFKORdia20Ek/VhmVIh6h1k5Ifn9tGAaAEJSkTCQcDauxC1vPJnN+TorJVPU64kl3TFJKPn9wvFPKp1aNMmDNCuOBBDz4e+7zwOFlzIRqwIPpiDUs2vFKG5tbMKtAbGUSdWqu6Gb5lrUElJWMSXkJtaiMFeglu26fgHh5FT6XykBeUWmgZeypEy3TtsPjNiAEJVHwz0ptLNmGtkQNOf1sv9C9GyrQfqIqBg8L94zmKSoJDv+o73F7BU4IeoMOd2Uht3Sptfra061TCyFZdme/IaQXwt12qtyPpBaK3LfLAZekuPhA8ODvAzH5ajubd/kLUf3RM7tv2Alkgr7hEn1XNKPc+e1wUq3vL6+fzpUu736c6UIV6PQxkNUCuUomAkqqApTJzhIwA1SLIpPHIEQrQTuIlcCZ4HZlbxAIIWhZeysCSB6xFA38skS82EjI3LFoSxU9Vnac7+K7p0Wj2rm+1T6TFACKyM6FZncxt97OjiMuH584P+49vPrny8/uRrTUQkoQFlcfus+4OgJn63c3mgN7zzLugfEAvwukTxbIHvmT2Wrk2WrMEz2MyLK4c1kxN1DvtuFWBUWgyERgOljOCl74YPhjOuzIFTgb2uLR0NneX6CD4mJRG7btRTuGYS1gE/YKYMfBAgrMoAgCM1Cm4qwLCFV022762zDYLuCBAnIiyNkKBvziWGU52wV1EmucYHIU2rZLt4MNdsuSISacEpcSjb0MSW3QOet4AYHCWoOdxaKHApiiBRSuIATFiD17+N25BldBqlKN2JE8pUfFFJO5UX7xcotSkMXhAGTxmjtbu3ZJFHdcCdTeTU3y/weQLsl15rhMPY2Sl4/pj9KDQ5l8bwlF76v0hYP1s6FMUcv4ZtobnMvfBOSvSs7bHEMuYS6lhCKY5LEFcKr4S8gZZbaTqYZ7aaZROxleRzvtT4KVy+RBDhV1QlzR8fiQRmiz7QLWoHfYTPwi2TOur2+cqwiCrG7fd636+51mtJ2OrYEIxlx+mr86OnFD/8v1ZzYXboxBd3mut3kxtbfVvb4CIhh0tcrrr7F7YYp379Af5n6DiCQDGG2VfJhMXPPu8YhhZtmOeZQKh26Oetj8ightwTAFxSLwnWUDUB3ugBnhKtd0M3fL9BtTwRYlge00nw7sM9UAKcMua6xawa9hGb0FLFmmxmDvQcRipfEyA8dduGo1sEevpJrVmW3qgeTwLwG8GKCM1HvUdUYztTLoscxdURQvxPoelpe7dtRCcWa48ki/UlU4zpv2FeuJnN/9nOBM9egHvBFpLDoOnp5lTx4/fyz9+6dUOv2E4ZcySwlBqA1zq62DP/jkkhSTRKRn7a5I/wBkowW0PEUukT8lEwN1+iTQah8V65zdQsajfufwgsraTVl/mVlnGz/HID5Lm6oBznUJnetl3WzfstbAmBG0AfYOZzOFP2zDJ3C1uDsFj9aYt7VGwu2b3tEOeOIS6PoVuCJG7DRNSjVj4G7XMGsqqUKubizFT6OWelXzElBeldBTkBI64qUccCGCBZtNNJXmucC0PVqL7eDXT+LXbQyjzZpHh7Y/YJsAjjZGHyWpZ5vRuZfbaD6yazuVWq1kRAO9lc3TsRM7rXHOW8mUQmpwdX3rXKG0+eBw5UxRqV5YMnaaodqFJf1y76FhJ1fv69Xyu35S4JVWw//68oIiBKqJXn+zEU/73OGslluLxdW0HAg4I51a/sRSKbNM/137dCvXG4XbZ1rFk1urW6P+4MzWK705RXA5GebCHD/2iX2eKKDnl8kPk0kedX3VZqCK/GqxMsikPtrFEuUx3zy96FnlQf0vHnnqK2zjq+cC2N8t5+2JFLuEP6NtoQXW0GVvsRkAVgUYhr1gW9hBKCbPoKdaVG+m832crGBWAmYH2LQaAgsbTabLLOOdV63Y5fE9LnxmQVFfjOEKC87RnTOGYIdM7zD6F2dfsbXm8B4rqoABDhfmvh3saQ4CyvQ1zsE7nerpQXmjigm4yEIm1KwoHF/M9WvxfiFd4TlftRkONatL1455etuqvhmUqmT82qOetOrwurRu5sTKj/cL7hBLTFJ283tP9HJ7K682SvOaG12g7u9lGAntlZv7OfCZOnmeTETgyCSGBivJqpIWLyrZF/Q5Qmqx1K6Kpqmjmxm2JXySkVn3HpJcVm7G5boP3Km9T6GoT+v2DokuBp4ZMEliuNJiJokk2W5gk1dN6cVg6RjFDqmJDdZH/ezFORETWZ5Ty5VgsFZWOb6acmeDRS2RK8RiefpdR6Do942SFBdnaQhNAoIB7f5HIp9PQCwLdPDeFclvAx0SpEKuk4mCfewQFnjsdZd0rDyxdVdZg0gI1i2wzjfB7UY4cTMeysO6k/a6k/o0b68be1dDYHwnSqY025ExL44cXzALl4/363srddWdzc9XmeospUXvqfnK/rh5Yr9LDVjC0QrfNLy621cFH//EfFXzeqkXdC5PzmFV7TRmXKM2FsIpD5Zv+15Fm0joc7uj06BtmJnEXk3UtvO4F5OxO83YnQZ2WxeQqWlkaqhwjjF1lIAzuVA591IA/BINsZHvyC77tO2U/mHR2c822x8b8MBVCsdZHl9MHXH86ccKKb+P5yOlrFc1ErwQLNViz3KFU/1QKqtxfLRejWinLpaO6c6dP2ICwR3KA30BqHnw2LVMRXK5pJCdk9Hcnrj2eLZ4aT0alzn0XrxQuHGjMMs5gO64GN4E3HJMaV5CT0bB4ssoDIPQqBaWGB4f6cQ/pg22/Hx9DXjpOo8JPlsoe37Qff4C+NY3kR8jkxB6VTHT602vMoNsrhjmVYV5yFmyYfIMLrFxsteznoNwtTrYufCKomZQ8826+fpb1g1wozcU5hs34XCTNX2y/Ylvgc8br0cxkXxPoXm9ok5CZx9HQ7wZmMTip/ForE4yxkm2fdHusSHP4eZFXyxeQJDMXwXKzO0E2xAYxpBqZoIjWiRcGB5Z4+N1H3G+SfzQHB/m9b7OrUNKz/ohwdaovY7X7eUdks/LK6f79V1F4N2yeqpfXq94EyGw2eN0qF5V7e6IWqyfz5Z5LraRSq0ljq6lq9h2Wg+ozbqCnJKyzERR2S8Cq5R6jZbjgtYttz3hmN+25PmSjztmyxE9zax5Pze7wc2u/2t2/bVGgTs083inAKYurcxsPdcFfvvIWfIBMsmijXP2pss2v4lhLitzVvtRahs9bEidVAfbhl2aMKVbZtiw1oGnbg3shrSOgiyh5V9nyJSho/OYm0XU47Q5u6DeTGaNE8j4ks3aZazOS5F4Evt/wQHAb5s7W1vmxf8Nrha4ljmvgZeVstl/ppdlXOFCHj4Y+Z3ngHgHr/+f8LFkPpeB/leguZ+ksF+FRTcJO7rxkMNIh43xOAosNZwD5rInemg4F8sjoHVIhGbTiI7immOTGeghYHRWF5/cPPHEcPzE9vaTC0/klqvLi6XV0uL4L7efWV1+9Qn4d+nV17ce7j52bvXB7o0ZDpC5MDxnhZzGrm99Jhsn7HD5xL2GAHcHWatg65K6lYGPAEjHvm4Wblk+FI3ThmH6FGtrtl3/DG7fKKiBzzg9seriErJ8S70Z1kerzGWs4lb9xbFJ1J/0eKu9pa3TTN9PwFX3PUIBYqDd0/AtHuUytRelVsqzloLDlEp4Lg5eOXosYgkx5ZSyr7wnx5JsxGfRcKqXTS0Uj8mDVssHD5473vM9b3n5aRCUfTvr0r6xd+otR3Hx4Ewd4uK5PMhcFOicJRvYAX6Yn0jNtoHn7M2ERaDqAlB1k4mFD8TCZ++rrbYA7/aAykjdiA87u4VUjk0/UCdac5WlD1JFIF51bAZw64gpB35KJK6I1mzr823gR/vUnPemDeyhVnOzOBxV1N6LGkV9tLry7N72Y5ln5U5s43JpnNT6xZAz6A6dqnYu97/C8dm81yUFnnW6HawpNLiXDbdqt7bfsFvM+Dza4zdWT2Wy+xuPBBueeLnzyMHzMwK+O9Yv8VSUkrX0wdOs1yJ0WFu34+r3MdtVJm2yQ36cTJwoowMUyw2eJGdGCy2WmTKm7ajfCfFC2w62JQPc8QZeILNs+a5uRm5ZUgWoGXPevumutSAKMyaRGFq0CFq0mIKZvumSHVrjhq0YNtk7i00ko7mqTrLdASP3RlQN/GS10eoure4w2cU9z+6avYNh9PKG7WVi7gEaOi1cmdk63Ak+S5UdE1/bmr047r7mcagR2SNGlivlDCdQd0blwFpUky9ryV4Sgv/Bc4/mRwnfufuTRU+hHVXARfHOTrqyXjnMD74TaL9EXkcmcZTYOkjsGKktYTy9jJAYHYPouG217HlhXtowy4Y1AEktOJAjrIHR2wIzIAXidQN718yCauZw8tLYntlQVz/DieFMeYD34pjFYE0v/Qqbv3F8T7y9hQFkVwwdb32ZT4sC/a9ylHOl/K7Vfq2ltlvDjVS2txhrbWcoFaS4j0t1cpmSvzcYrsY7l/rLJ5JKu604HWurxWQgHg9Eyv1qVs/4A2o0wfNRzelMGtl0TI2nwqGqUayvF4I2BgwBbTa4Z0Aq92czOqI8WWBDuEzF7u30GCavYEGKZVIraCdNwcAQwpQNbDomVjTLkjZmULVwi9ssPTOYBZ6zTN08Z2VvxigP1DYNCY61UMUvOb9VcBSXY754IJzxeTllI7s09mfpB71BzzsdEa+gZN8iaTIVHX+Xa4Q8Hn8gGF/Zpn6HyGySgnlT4G+DLJPPzvQq3mPZN3OxN/XaVsmrmH1Ml4xwU5cTo0JT680Dw5DBUudVUCkAuFUJtaiKWiQpWJzBvbxmx5goabyhhOBGWrGacLEJZFLMJvxirIqM7Cxp32BJdqkKVHFiPs/ScItcuokzLjKLTOm8I9bhbpE+Yol0pqrPsUTwHizBQIGNEY62wavivGKB1+mLM6IKL2T2QNlKbWMrZnCOyumI23vWEZDji7Wt/RBd4cW9oxwo6JjqtnXsz7dOXr7/yUKB4hVVgisHf1LyxuR47OzjHy4UDj4hV+9JflLiB9pT+nmyBlZtQpDy+R6OPZxImQbmM3psHNQ62+VDrBXcxZwOzzuA7u3S4L9eeXvWnyHYfRn+8CADBhkArOHmvWI8m/XI8XogKEhlhzNkaFo/IDiUqKa+2x3zuHK1WsbpDag+gaOfZ+0/ctgteATRl/SvnD2X3Xiq1U7IzjgvRSTswPCG3XykWT34d4IjdObGgzveREyiXjvewLV+mf57skfGtpRZ4QIEE27QkawxWUNxG/Qwx445cmK517AtLtpcZNDRqZqB+bJnVXtE65rIOlOoVvh6K+ewM2XEPrHNAikQauVy/RjHJzUqakbI+x5XRMqdK/nW/IovJjiCnUiiqfIOfzisPuH0KZI26McyH3J4FFnNFQoBWYsANX6TdSnHXbwvGlx8zxKlT3Dc/gsP/0IrnvZ6eFmzyRGShXC/e/DHvMAtv/35kXrwHjjqXH/wWisZFaUoy4ul7x4ARvxNEiWXyavByqImEbtbjFd6IAXmNX2Sv/hkD4Kzh219i4G+PaNbr0E6XdtAWPjqoy1yrCcFe6R689I1z3ohjrdCZKgdXs++wTEwZYzspn2ddYGjsGizK4PDX4AdKWlOCGRLsb1MN06dSZ5PrvrlWjQyTKVWYjyXd9K4O6F44qNgJKl5BZrpxL3JVNpP+YLIBbxZ1R9pqslsBETwC6NoQeCC1XS6rAicP5oIP8DJmov6y4UncycrIYEPiVHZJrYUgescr5Q8xYhSOJXKFH1UCnpBJr0ht493+OJhPRrJLmvlkpe6wj9/paQGsZ929qNSKvW8jcH8d0XOB/ROkzPYAcS0rt/D4H3i7q4gvU/oWBDS0F6f1bHZhFhFBKT7YzMJsWtuazy+RxYP+6TEec9ZcF5bxxahryOZOBegUh70/anFeHw/wwtDF7j8Yt7Tig46AS2TUHk+Rnk1608Ngr6FzI4q+JoCr3WSSSNCHYFYRPlAslWpaOmCxCOJ2JwydwRQRCN14ULm6cE3PFMyjBDvjtx5Z8QLfMqEv/n8p+oxj1tzyWF53pITqpcPfnD7clNRRI8q2H6tBzL562CXFg8nXVR54gUghMjUxbpMJi7WZODy4EaaJTbf2AOu3sM20rBxZrjD2ePHzuIFtovmJ51iJF/oMf/eCNyMp7oGCwGwQD0h2FY8tlxo9P247dlyzvpNhHv6TWbNUdigwR+bZoY1ngJusWEtJ73w0uaa4Q29pVjXJE9K5oXw6m46vbUSFJ3xU+f34q7vKVaDvCcOAsW7tVh3pbl5JSG6y6lL16/uhT1KuykIuVPlWetZVC499dzjOY+idzhB6RqBoD2xa9578kVa5P6SGOBBqdnTzdYt021M807SYa7R7KB7c/asDDg8zbD6h/NNWO6LzZjA5WDWX4vAQtlwHzwBSWnzgz7L6VNhseTxZlc6DqFXiFAaGg36o3Co2KeO3nre6y79hdvnDu02i+crqZFRV0SvqG7UWo/r+ZWW19tZK3ZfqTd2VMnrVFrDlWz5dL67T2azHP3kWe7XAVvHCbZTmPSWJSAnDRxYPW+uUMHOJik+VggedVmO+oEC2S/ynxKF8UfNB6/+mw8uCeKL6LFg08N5C1PJVVh9xjCritlgsaRNHl431d60YZ8k58TR5pShI8B77IS1q/AzwszJFbYzp4VBIRRe6PUXgjRS6DmEzkrW6yktCnSl5Pbm13sC9z/UnYb+ym5xreP1tlby+uOt2oYKJFLqxihVOV9s7oINcQf3u/nT5ezKsKU4vWwtbfIr9Ct0hSRxzmVAB1w0ddl4SGNNIwzTpXQc5UIsV8AGsoBCZJ8tu6xAc3xMCGcLaLu8nY13O52Y1opJPjGm14Mxva3HY6OsJP3xqKZCqBujDrFYU4PRYLLkkG3b9f67oLOA1WSSIlfIhMd8gvtoJvo984k042bQSVyNqWLPXFP0afBoOrpi9zwh5nTzY9YGEp51CB1moXH01mxfO5L5/fMhRsfmo7vtien0I+lkWtPyhTvfezgffccemD6Le99AP8Y9TgqkhdOkXr7LoH28ywA369QdOD7hsOEA57XWi5hMzwqYWfKqJlgSKfC/1nYQxBHZoqpB0PCPNCD8nD8mcZyc/QcaEQ5uc18QxB88eOBjNrbG/RsC9xNkm1wkv2h3PJubPRx2GBEaN9f0BRebIRTHfBDuHIjxt6f7ewsebwObgql5STddt3CY2E0+6XI1rJyT9dJjKiAIxFEM6zIc8i4gSrlyAQ1oDuvga+fY5IjPeGKNlb0zSJBgYKLq9nSJtQVbTHV1Au5ntq3RGJv7KhY099jgkZg6dQZd4Qz+qAf3wNr7D/os+pqV1Gd99zZN2dw8sWInYQ7py8YNz0Q+OG/PwrbA/MJ4LRQPNS4tFweNCM9xvoRXWBiUBuF4WI6VE45koxIujpoBV0iSA+5Y36skvJFcq1rZyssq53BS3eHILddrK3pk+MhmcTzcaHbvH4mKJ7NWFnm6s7zcKQ70XiG1sLCYESKaKx53uankDvaCDqcUC2XyDj8NKQGPP2gPiHJC9DOmv0d/ijhAu5KkzuaSvgm77XAkuVnV7R3CIzZ7MeVgo85QSEOzvsqURw3cdIi8G2lWVD8jKDGXPcUpFLjZ7BhD5utyOGHC5cRGS/CI625BdHhCjWaXbVRSAhYZzCcQayI/wiTNsVwf99Jcn4aVYRHn+mnishj0DlLjzdySX3H0L3W657v54WpyeKm9UFgpDdbzy+X+5p9lTjuD/qW+VxWX6feLMu2nD/7LTmKZir80ONtone3pO81I7/KwsNU8uVTYqO9+NrkneijdG/Bu9zLSad67q5MB4KdL5Cp5mHy/Pc3AWgNKnTKwOni5x4Y9XTGm2zybUd1TpjU7HTPUzWs91u77oGG2dEuOzpp8Ewbbr791a97iMFBQvqe7Rzv0B1sg3rUloN5ldaIGziMddwNW9RpK9nAbwYYKWtAa49y5sD25vfiifmAfPWwG/gc7gXthdDo9jX/5ruARa4eojPDf4x3CcmTWIJzwvXx/8Dmn48d+3Cl8e+ihlzQKf2TqdH5f6ENOx1HHcKFhtwsPil+nV/jAkOOS/lZvVNIPbr5M2/Bv6XDrrbo/LM/nzNn+3kNipAgeOo7NwiYxsL1wwmNm32D7lUIGbkwhthuz0QlYzBg9dmbDAAQC8uHRD4qC8aRhPGEIIrdI3ygK7Yf09g0dwQFHVu766O9yvwF+9SHySWJGddYZc0a3rqJuXWfdlyUHyYBx1Evgu8xAb3rKQdLAfT88Uklh5YVLcHjJ7oXZZDdvJjfRkrrYCeDTadL+mRtYk9DZmzSs86fUwLrPIcjZXLTe69dWdpevstkOOKHxPpCeM7Ia+Cl/OFnXV85fQXW8qsJ1WP48s+RkPXtgzCIh8WgYWAUhGshSxccH7cH0bKubhqPYjs1w1EDEyv2Rnc9bSW8vLo4C7VqskXJ6kjLPhddXF3dziZ21ai8pRzvFbrqdVauh1ZXuStYTXez3iguVUOH8NoiYXk3XvX7Ny3OhNUM/Uf6icXo1napXk6VmZG0FJGmrEMg1T9ZrW8vpULFUDqf1jCPvzrWHNJ/fXk1GKqVSKNbNC1V3obuUHe4tprVyJZrp66cEIbUWU+LNHeDV3a9xIapz72AzEQfYJWuGe/OxiH5jdjQbi2g53bdNp4JNzbgfczYR8firVY5X74V4Kp3IarHsv83EYtloOpXmTkQKWU1Lp5LRRFILF7MQFy/ffT/3BW6JBFl27QPYX2xFQVr29Ok6T86wvYzYOWvmZwPlzjDxCdkDg0N21/syoIllBWHltGvf6LKBo1OJnVlncRzNshr4SX8033Css56Qrmpujc1UwGrvsmlM66y5J5SqdEl/a5dFL6rZPpoWN5sZ2+ZG90xg8nHavfCDe9nWs+X+9edPnnj++mBw/fkTJ5+/3m+ce/fltWcutloXn1lbe+ZC+8bwFav6akHALepcuN0ot0LxxXZqLel08fFzi51ri1/AH5v/Gvy8/O6zrQv40+y3bGw/sRCOJAYJgU/0c+0z7falQTjtkF3lmvHYrF+ZvpK+m/s8oNxViIgnbsQiGOMFEbAYulnuYessJjZHipnFPCBOU1hi4xtfNWtVAynoY59UHzuWFUQnOht1bb+MA3OeKUAvNQT/BTc2abGGNYZDg7PXcbgjOGbBStmDQYk1wkELtbGZxZE25lLgJkk1+zN8l2STRL3KbP8u+EmIpg9blu/pV4aw6li78iz3N5olBn2cMbqxIEpqKhzzcGz4tZA5WSm2/AG/P005R2QUkXw8FXwebzXxqutRJdpJ9nL05+tG2lVLg7Wvhngh1FLVkKIEe8PzmSiE1W7qlXlVlVVR1mTZ/0Qsog80wcfeFUQu0X9Jf4CEAWOQ0TwpiRB7/n6BYxfp4cVlnq+fKHoUUa0WPBEjBmCmee69AldYTEsqhPyhYCPEy+7q8t+4FXdpp0RdYrjXUSun8lLA2TpdklVHebNIRTG3mS2dK0heh77NeD8gT9Iv0oeISLzAfXy/AG9PcpaMicizjQQujPF9DIvKwFFgpR87F9ByOnDOgHisWpcD+jsGI5D4gVOgE+nZ36bhnhynNTknGvRX/6v0V6IdJ/7/O8tfIMv0u+lN3kH8rBdzi9zE9zJhxfWiPZeq3puO7Ubfho1L1lnap2A38Ajse2yjJjyGYg+iVNgMJkQnp1AVWAPmClyo2Bcq9rhPF/syaxxcGYBP8YSSQrHRY+86qahmh72KCgvh/RBAxmGWFeas9TFOtVOipGIDSIDhL33hzOhFUyi1+ehmZwHFxcmyd2HnKGIctgKKy8aVweBK17g86N9nFKs7jeZ2pbrdaOxUrwVKnnIuWQ2pKUmJuDW/Fgw6JCGkaX6nx8ntDa4Y9s92rwzqO9XqTr2B/77vVx1CKhVtO9Wq5uJDFYWeFp6igUg0wHGE3v1/uD26z72ZSOA3cEcSIDv8P25/mW164Wf8q1Nn1iHQxwSH8tSHuD1nxo1zXhhGob9Gt7mfB4wSJXvElBj4xr7Mub2JMbZ47S5Nr4K7TbDhGs7Yiw2CXsB/EiubR7CCLs63+dMjh3SsXXI5t1Te2NlbWdnZbaXCqXJWy3CbhVF2p9/f291rj0ulplHBXO2A1EBX/pz4IEJokXWUKIZc4/psiDeLYvO3MHS149U81u/jbBw39oGlsnWErAHVzB97L0feHmt7OOTWiVlb9B79w9d0cEybeDHcMkaZtacScPYk78zq/XrmwYftd3YIgVBtNvL2P81H335vulUpa7Hmki7yBz/IO2b7dqr0e+kOd5f0yfMEd9xleMRL+NYChY0ft8LIsMHxrJ4TKBxjeZqbhZgT0FbZFvMhvvgCYx8unGGCHCuw0gyxMjg1i2AhtKCaHJrrm/BF1sMenqXzWbHz6H0Fw37laJAlWD10lIfvKmDJPQjiq9nFQCGbDsdw87bE8ZmFWtTIZbKBVux8NE3loMg7BL83slssraogXj+T6SnZYSmZb444ITqOBPxqNV/pp5RqJJbhuHg34fJwnEtluSuaBbn7MtiL9xKcd+cE3nr1adM2iBp7rwMOaC8o0xRPArNN7qlbONceDUTcfk1BZzb9O57CF4Lk2OaIm86C7bs6AatUY28p6M/fUmDxHXwLFZsUnmK9wRpiVqRb7fCFNPe8p6DCZp/PXvIwiOBueDuJeOwlBQWHLIqlVNTIt5qi5HC6ufogtJqL+d1hUeDVlVZz7HXwsdVsYbXaurzY6tJ1yeNwemNGoTwAxydLg82EVnIImYUYpW6/nNiv86mVZmOvGWN7qALkP3O/C7pQZ5bVwRPZ3pCFqum291Bh9tB+Q4GTHx9yXLOdmrO8Gc1IkZLf7XfkdlPuIBczLpddDkoFrvxYm/KsPlK86+NK9PdIEzzGOfK7swplsjcpIzg505v67IycTzF3EZnsHVUoY4cVyojBmhhrt8yuwYqUNVakrGGRssamFYL8T/o1vNgfuRuTGntzR61lFzEDFDvi8EUk5qYxCbCBlYHIrAeyX8PlLeKsPQnfYlceI2KZJHNnWL7FtwdsXhlbZBdgppTN1YzexrxYGX5xsdJm84vLlc6jaiW+G0nV7PBLxD0e8J3ebEeW/baH4qx8GajkEr3sYQHznKTFl4q7Z0IyJ/DbohhNhCD61zmHsOcCAC749bbHrRyvZhqrieL+0ovrmXEtHjvzxIcLhTsf8ee7Jere+0BzWQum47yXSt54Lqpl2EtSXD43H7Z7i0TOzX2CZVS+g7CXvOHUQ+SK15jEBfb+hwaO8zSm+UpD8LJREuzdLwApsXScVqwG0LntuD0t2omBtsJeKRRw2C+GaaSB7kKFvfwAt78FwmjzNWZ181hc8GljlguYRJr2aOKZKzg2yQ0orGqHs53pEsPsLD84gnvF3nNX9Z2i2gxz4PvcnqjPl+ml1vfz1fVSzhv2bj06+HvDq9G/HlzqcmCNQzINlNJf+y9Ogf8Wn4OLry10V9N5nsuduXOdf5fwtW9xCjYG+k1i0kXAQO1jU+cPY6vD7Yhx+0VD8dmuxHvTtIcD5ik9GihPyfm7PvJ/EQVwZgk9KBby2RslIrh3BiN81mjmVNjgcUy6j3rizHYAULZdY5ueN4xOVa8vxwU+3S0lRXnt3KbYKeZamhgQU/FYyol17CH9MDngvkqqpItYjjU+ZAz4q2a0hxsf2Y4dJ8tksrlGSScwSC2N53tSZ11892x+zztZ8T4ya+gbclw6FktznFyqer3Fktc+F3AMlR9k9MNySEpl/1U6LYVnb+2Rw1I6/a+yqWBk1pHHgd97gn4zxDmY+9gkEw3jHPTfADBUfMr4sbdt4JgS3B3y//X2pUFuZdd57z3sQAN472Hfgca+NRpAo9HojQ32yt7ZK5tkc5mhyCFHJCWNNInHWmYkJYqXyBlLipVEFcVyJFWcUoKHBmcSV1xObKniRfrhkYpK7KTsSmRbTCInSiWRRhZ7cs+9D8ADGuiV4+KPRr/uBnHPd++555x77vdheg5zM6CwgVgSpeoQUIiFOXDRsfRS//rW7vLKzlVz1BkM50PBIGMrXux7fuXie27eyk5HZofmViHPpt5LbdO/T38J4ZSi/FQlmKk5xFu06Qxc76HwjirI9KL/zJNzW4kGWbHDQ+a9aovWHIfiam/Zr9ErzFETO/AptVljz+adcia2HFH3yBwZqz4co/+eSmVNJawqoyZ2Ma5gVb5yr3c7olLZUimritXENhIKVu0vhyyDJXKXI/bOj5m3mT+iglSSugw3XEHHpDoFJcBZZM5SDtgJN/O1ZaLqY8eagqBbQOYGXbmC26HBEfu0jfsDyNECPSx0DV2Fmj9cGFBaQpjYbJ57gzOlppaWoWhTKfB74f6JRVxSnYXbcqFSZZsTLu2gVb7MCynkeQXKBd1G/dmBhcW6u4219pk273dHpO3ATV1HaDVG+6mtlRqL9AYXuLwqGsDZPXa8kRgjy60GDZqegFfGmFNpi2/WzTC+MNeTPM9QOqtqnzJYftq7uNir4Xi11sozMl04wrLxMEo5g17X5zS0vMeoUGmY7ZdXvTzzaTR/5axBzpn2/1PAr2M0ZF7rLBpG5w/8ltulffpJUQRMYfhc4vp78jQtk+3XfG4NrXTX14BXztiTtPqbZrlS7zEzMplZxE/2MRG/91A/IPhVbkJuvkrEe5qQDWZqk6TeUgfvdhfwxrAMap2MGS7MzqqfQPfoNuzLG+jxRkbYRo7nTju6mMEudQteDvOVcWhnfDPcH5tcWF65CQ83eGH+OsJ2lqvsIshXb6K/DaWWL8PP7Nyj/uz8wuY21pLkheEx9IuDnJCfJexU2olSvSnvpPiH8QFYU1KhXlcQA1RGVcTOatBKTkMwRy56o+NNBfpXwrmEw2kP+K0uVml09shpee9UNF/2J9OeWNAuu+/yGGVQHZQp5Rad3JfvDU6X9CebF670cL/bk/cEQ+Z0RCZ3D/s4gy0djJZT7mjUbdN43LRMkS7Zdfg99KQfBbRav4tynTHkm/4DhS+tV7dgbe+gGbGQq9zNVO7kazfI2s6TKNmK1WCwcNf9TMX9uOYg5TYHK2ggIkYToZ/Fy3oWLe8H0E/pRjuzzIvZuTXchEbJmXsTqfzgCAmS9yzhaAxeXuVq41vXb7wIr2f5veL5tWt43e9soXU/WKrc5YR7L6L3uMEL42iOCMo8Caut3IROxjncif7zkzO714jW7p45Vhyu00gVmw5blP6yNWLqaL1Mh1XTcFCNj0RP4xm8tFqlT7lz5YGQoUepDU5b7Q/9Lr3OrlbKaMtCpDDJKVW0d8lvTCxl713JDr1yCn9B57RmlUafjoUicpVVE1n2snyvQuk554dOJLVV13s5zCosxczkmmX/v5/KcTDU7Xco+lfp72ANlF+kqkk4f86SpDGMq7OiBopgUQILOE4aifpJxcjuGY19hqRIV1CJZSRSKG70ez5CV9KbwzerlTG4WQ7dfKWKkav12MP4ME3wubE0AiVk7cgHUD3uXpGOB0ufkF5RURSl3hxCpGNbBVFudxFC0daFUq6CGgqoorzaXQlFQbRSmMVQb8jtjsXJ3oi1NGT3qCJaPxdATSMrqmn0talpjJWyOqJy3Ox6G+sDhr0kvhEDt8J1fDUYSRyppoHma1NKo11HQ1ZPuFB8dbimhtHckNSwcvE2RQ2Oy9r1HpOG1/sKh6trKFx9TWmNkbRMoqvBfFyjYHzTQTkdG2vY6gG21cJxbbWYgUsF746tTI32a/D3Z7DWFOfR9th7nBZXwafnT28vVXDKJ5Or/edjdJu91o9rL7Tpbr6Lc6tIOjBFZVxoFDmD2QZ6F71qs8p+Pqbgde6yxzAwYFSrTm8+v3UUpQzuCT8KdrmoXul2axVW6Tpdwba8RH3oOLasrGfgtoFfntybLq+rkxDf+pDP2srRlZ2McPlQKwvryxzENkJ5Gv3G3MJZ7d7SadFsLTqD8cc8Q05nKmYxuvUKTm4d9PC9/gBvCnIq5ekRGIi4OE6vp5WqeEin17GsgiX1eWL/OdFPbgLD/zEQmM1U1jF/DhxDLuUwyen4Y2FK86QyRdKHVQ0hNZ0aRxtEX6KUJelDTacORnBtfZWvOX3D7hEcRbwri6LLuecZoCkcODI9PSKF9rPWOhbvbWDxS8fEoraEiwriusCknwSPeRTsz5PT+ikFwWMeGNoSyPzcG2pdMFKejR4OgLC+hH4yPnU2fy6FQlLxPwMUylI8WColQsUBh81otzk46+mhmAymgpHevljE7LKauJCDohSAhew28xUqRk1RV1EE/hHqz0Te6On7oiKAby6Xg1u4le1c9SHmMnv4EkrByvg8vJosw5NkDj3ZzVR0eWENbnpfg0ucH81UFh+D6kVlna3tklOr3cze/fVF5MwukUBtnYWTCyh3FhCIBVZ4CQVnLxO61o8hHHcXocvmIgLsPle5XBIurSNcy9BPVvkwZOaVny1VXuKqN+++ALHby7xw62fwNamHaDkOxxdfFg/QUeS+yz+y2gaWbr3QyhyPm3LAuWGxT7HTv86tWAzkCBGumdTpLGKLmURfAyqiEm2eQqP9UpSFaRytonStF00E1hNy/TebqV/OOMeKnM7Ic+7yuQGjTW23y2W2koMN+b7noMdjKc5o0RP2fR3D9vVf/sjWrkzudOlouWKD81tCE8OFOze+0CfTqRRGVgMiMgvPn5voFbV6fBeW52GmMFwmQ382GlRg/kRvKOjpf//Dq65Uv0WuMffgK6XRflPIIZdpoymeT8fQ+zvjNprZ/67OppYbY1H6l+3BZO/TP0/EdKLID917xS9XMr7hyNNPtmr6AAeAQdTdGkNziShvkU6shuoMyPcWxPLguFSDa4iUXaHeWpfjOgcsMzaOf0MRisWTuYKoU8i7ErjaHSqguD0GXDMlgY9z/CM1ZXCdRKnL1LEMeRz9rqftpcqjBL323zpYy1QQPSsUv3upBDVCrVI3UA4MhcGLoqLVWlPRahstsdEM9oVJzOKeIopWyRRegYNwbH6zi6LVKKlkj2aqllGpolWZhn1NmEFWn2HBcdYuk7X3HLSzYOUkty8pHqKlSpUyX+sNxy6uQXK0PcPxtf6h4rXr8PPLnDCANWtGHWjFzl/GSgGVWej3FAamjha1kqQNtu4CV2bryQSurkvSCGV3sSu8yk6mdiW71swtvnES4as65g9EDbM16jnqjzHm6yLmG03Md46hYvb8mVTMdhDmVwnmt7qomNWmF1bXN3C5jKsslSo7WM3sxk1SLxFi1+tqZsL41WenZdaAWtaSJZ1d2awOtr8laco/M6Ez+kvNLOppsCv2A9Q0dZm6R/0Jxv6KiP3VJvY3EVwzGVziLmDsiRZPtTCIid8mAPsXu2BPmljRn1ctM1LsUdqPtnFhVYGVT28i7G8R7N+LsJ9B2NcQ9sTNWvCuuQALvu/KVRzKckIyhgC+ydeGz5dfuAvPbnHC+B3Afwbw37hFyqYXsfgdSNsdvewPZnTPcP2PdszwJp+pJ2B+2int+xsn8QlKcV7MSfaB99LK0+8EQB10Lw9FUshcbuVwnVT1uOLLtU8WFSuENU+OuUfcycE2cRP9PtpoWjeMB+KGgSZQb6y5Ywg3w2heXFxD86LMCbfulZ71viEJuU8zb6TZU5c5NFLPhqZPPG16G/nTYTsJJ6ZIHznBlJFZ6vkUQ3TRUAyRRBlV6RBltKGGhldJlJyqmeIZvNpPoo4mrfAdLdFlkxbyji3EJduVVO6oxhgfoDGWDh3jcGOMI80xpjLFE46xtTJ39CjHWwtwxx4n818kFTcYZx8a54DsLmWmJmCcFhinHRN0VEMwTrgdkslh8R43boHFij0DbhDylhlj42ScB9wqreo7viRgn3fUpTcq7UM+hUVrL9rdWau2R32kDZjvu8p+RhaYiai0jDXJmpMWBf/UfxKNPxmVROMflM1SOjSXJ6lXKMxcIxjxqLGOAbZGJAcd4mXcIW5GPmuEiFyYHgtJ+ZM9ZdKkTgoU8lJUBnrF94bwg3ENEb0wUVjcvMcFQewQ9Ab4CsgtjYPmeTA3Ug7ZDlxNO/a0kfxRsu429Eda7qWGm+AsAa/V6nY/pY6/VOw2h8tiDnix/bKiZjCHZs8i9VGqGoMyyjzpgPHmUCQB4hcVS65iwP2NmNV6KVNxPBa712vDZBtAC2mU8FH2IbtB5/owOOhwEZlqGihidbGCkrDhyw3A+TxdgsKX4BmGy0bAJEsOP0cYwpKdpBO0UnZiYeGsUv5a6OfkSnss6gzaoinHCYWG6SFdQGW0o9x3/+un1xz+CfObshVRT+0a9ZW6otpWm6LaFFFUW0ZBHMpsoZEPirf9qXF1Erp/fZiUl65cl2qtgZziWlNr7UaL1tol7hForQ1OiWprW6XKGleZq6utrTfU1oTxEm5eF1L96G/zgyfQXyt2Le4qzqbM9o+7F3jpxFlE2x4eLPLudtdxkxEdN7Q/gt5XH+iBd1Vyy3TS+OoXNb72DIpgHE/4E4i5SfPaQ3W8Hkj2ycPku+gvtJxpkbE9wGPrP3Rs2U5jy0nGljzF2CSb5KGj+52W/fHQ8QVazqCk4xs6dHyH6rPB+FKnHF9rcnLoMBc6phuHDne4+5kRGfsKHvsY9TNdx44Cu1qE+JpEBK6m5YmvgV1xvJNVzkms0t9qFWEIGhqCJSGSQE/S/ce0UxcPcqixzh/iHw6z2HK3Mx5irzlxnQ8DD383i6UylaE8GA3SI6hVj0jtFAQFEw1WD4O2+oIGV6br1gOmiUwcrGfzKU48p7qc1hxqqfkD5zGHGmil/cgFxZUJykr/lP7f+H4dVYS+EoMMLVo42aPBOckS9BeNdnXk7gfuJ1ivSu1k6S+qPWz29gt34/TvyXW62Ps+9kpWTe/p9PvTOn3xfQ8fUnB+EHznvzL/ivlNZHMb2h1TVK5hdQ+xOt/QUwwTKsIsZhnKY3vbkWXtrBAQLTsAJPcUFKBMFihABbg3DApzPJnOYWVFFGRkIVMMezj+TQ1lNiVS+CcHrW4r2qBU1G572qbBPRqqNmubVsJzBsdKi80D9K57/9fo9fNGp3a1zdw/ft5zVU9/rEVV8d/Tv5/cH2KUO0rtPbA36LOhPWeSWqGeO1qhbbWTQtvFFoW2R6DQNjX/7mi0FSXb1Kn02n5Xsn2dTbvttyT7W92OD5AdLx7Hjmud7LjewY6L744dwy1b4qksSXta9sqzGXOqJb1ssefOcex5uZM9r3Sw59K7Ni8PbsGnMuuXO27NZ7Pubve9m9h5Dq//K9Q/OsrSkILtYApU2JDWkeWvSi0/BSfamsYh9xZ6udXEY1eCxxRXUaA8jBd06hKu2JqBDmmLF/xBtLnnXNyzh6jLjnYqlP7pwcvaZ0LoAwe2QrEXZxetgQw1S21S21S1H7I5IJAYz1XimdoQuZfZThaxlakUHwvDctJgMFxEmxAXi/NTcwvrOApIDxGtszOQQHQgfmjrETsJ9cNBabgHra7l+LQPHSXiWotXuEbHxJivoihgEZi8utToaqXzlFGPE2IQW8hewN9lxauWS/X6XcXHCjMQfMlJ9QFKeXumRBo77hnuDVskky2NXcCWPw/J72ipcoGrFs4tljoWjTuVbCBKNeWkl14j0chg6+23brU/TInKJvodvrkdfqjsnt9N528tWoIGZBe9kw1PJtZ2WI/ziFLgAym7r4umc5v5zLVxpVzNq2SMfXx4/rpMKfKnv830MX+A5uvviNyfaXxnGLPsC8uyJ/WLMBNYhqQoNsesYfrPaeWT6to01PTXoOQ/jdkKKoM5uDhaMxM6rAQLgW3NoMBXDg0spL01l5KKyJN4vk+vIRvPlYRElBO73EdBxoL3p/PQ4iy4+tHP7QiM5TROICoU98jsiib6MdmMjK/wpcoEJxiGm5SjzaBNJmoJM0HcDh2RsrAC4YWsQa3MScjUgZU0pFKdj00sBLMTAVtvr82dzqXd9kTB01fwgNtQuXuUoZQzGhsdibliMZdvsNcbN+vDTmcfS4DN0Z/VOLSxkc0hV2QsFM72ur0WZ9DlDg/G3bmojTezoQinUE6UMpFAzBfMJ3pTfm/Y7cn5HGPFpz+SsjJrMMepjOixMd9EGcgMtU69IfLYgiLbEKE6h3ocKLLNs5UwXFaIgSLbypCzrsi2gYPjWVBkmwV+AzMQpBBFtlkWVgMosgE7Ux/coQgTRTYgwzdTWHuvwsERrLA8y/GP9M6h8TLUj4QA9D4lcziCnufgUnhlhatRgSzhS1fycNoL0my2btJsx9JlkwrXmQ7VaGOYwzXaihLZO+0hem2O8SPE2phPSzTznv7HFum2Bl5vIbxmqS1gpDiA1zjBa1yK12QTr22M1wjgNdKG1wgLBfpOeF1q4iWcHyFIzS1s1JGqJnMXcY9LeJxgNUmwGnmWWEk09Nruyp4Crqak3njrRdtTICaR16NfO3BNt4HZNxBmF6lr1G93wGyTYLYpxexyE7PrGLM1wGytiVllJI9hW8ONEZ1gu9G6zFZKwg7yjG/gZXZhXoIeqKuBAtYUYLhJMLxMMFx7xuutNUSWqc668HyRzV41r3TNp+Wcxr/o74lnEj0q+fmzrEH6bc/FGMOEt1NKLWMrckqnz6NR2ffXpauxjuvrCNcN6ib1PzvgeongekmK624dV5RIiyJPe+fHV9XJ2gKui9GV5zDcmwD3ZtsS3cQ3hTph/byItWADDjAOVLOEq5uiU11YJc1olfNQmkeAT4uAQ3k+fIkAvksA3zwAuLC6gN53ZB1K9+fRq+m5s06CegkuZ5WU4CJnmwg2X9FhTyWtBq9RwStcAw62tzdo4iOWnvkz+WNH3GO2GNC22h/Uc3rOqtkvtzhluTgPXhX30OvQlXqyXRTOA3ex54aMapuQvXXYVcUVL5Q17Zvr5VwlwAobGrhIWFlmW2bGTYnznuXEzuFKmasMwfXBqt45j+kRQaIzmdvexVHqu7rpSk8rJU5d8vgU8Afr2dh4A+1P1vOy08BuEbOx/RmJe3/UTM0auH+9gfsPToF7bZscd+5iX4D7TG90jaj2RvCDjQOx1WV47zJ6fAj0G0DUPIT9ut45NQ+n70IZgQ4MlwGgkToG6sLuNniC8ruCv6QJ/RT4XxpLhsfGUpERTQP/PpeDdTicJttp8B+IDSbSsWL/fkmC/1s2v9NqSXjrWsY/YT5Hf5uyU1fgnNUN7Bsh3FReKeaqVpgBF7BMQAk4lHJ7eatbncTVEoSvRv5kb0sDcO4g3HYywhb6omEFDqG6nBNG5BCPNfsiceFkB6B0lAROg3Ztq3sNnHg/V1MoeZ+faL3rOX5CSyk4PpXJTs4sA4BrXM3h961s1TVOmKZkIqibmJs+2YqyfkzbRiRPVFDQImSagCbTcmZS1xYisOcG1i6FmPUNi8/gitu94dl8qWyPr+dj58w2U/+gKzoStzC0WnXhE6NM/NIAGw3GInpXXyA7zKpYJrA5kJ3LWPMBX5CVa4MqhrnVPx4yydOqTMHt0wUXR9diE5FB+mWzI5JCvxMYLPu1ZjUK/dIKJe0eT82PlbwTxd6oVc6r09H45Er4Tj4XGnQCzphj1yDq+Jaon2/n2A2TAkpfBtJ6vP6GpWy7AwfZdqFZZ8DE8W/KWX8oHO3D12gSnGCLoAWi1XOEdtcP3N2hKL6vwYbhwj2lt52Yg7cz9cRRfLx/v73f+xBi3u8c7PSu6zNVUV4YowZOoD5bkKrPDp5dfVaanx1HiXZakoUdrkrLuKXS5PXxvoXGWzzBeIek4y09k/FKE5vjDPlrrfnL4aOmP3QwP6mP/Rto7OdOMPYJ6djLz2rsbbnBcSyQ7pwBHGGJT3UM8UUOD7DHq3juT4Ai3LEsAmyQ43lopDFh5WLc9xZ/LGQ0T/bYTBzF98RWlQxRyB7RkH64jB1ZLZXDqkhVedgMTn2Er/a4OZxSn9GoXQrex7Fr9kB9+wiT/lqHs1wj1lH9JuYy3KGqJtBRBRNCJFRx5gSjCeuo9ogl1f5MJflYsCmfVJM23B/coyEaqbYkx9dkGpMygDe6nhjJao1cxUooCxp+Qna0YKpR4iZ0h8hF/luJj9j/yyNEU6mGbqwP+ZEglYPxHq4bi4+WD4pfDojilzWVJRTtP60obKsrOUQXNtvqQY5Uh/27nXwIj8ZtRz7EhPwnGrcLxp2GcfcDD21OsLnwuM3iuJHjzD8G3Ydq3gfjzps1SdLpmwecjS4l6V4yQ6XWV6rYuIq31LFXNGI72hb8wSZRi/EQ3JOB5SjDxDbTCg3jGjI5i079p45EX4bnuhPzAmeoEThHO3y2Q1toqUEcnM9hwbADs39PaUu2doj24weDyH2AdFiSdIgawxDP9ysxBwSYy1SqDPJVT76EvUj7epF2op9MYNhY9wqW7gZ8/gB78ZePMN+/wy4j6BP3ox/T32O+hbk0PiV6X13T+wIhFWg6uCDRsYsTipBrGORYEBD4qXrVT7CbNUBNxO5C/tPMvSFXe8P5WJYwnlTjyRQ2jo4Dwgy1ubcRnFXsfDWWyoIrdhGmQTFY89FinFaXIY9iKxVFFuyIKQy8KHjnGro95e0zmfhp3/jEhdL4SOmDO3K5K+eYf9+5Dz649fLfoW0qNZ2YGJ7qU2r/dOH+SI+hbLLfWd99z0t3bv/qh3o1ZrVCnv7UP3vu45/9Wforv6C3680+T9Cu81Mi999TJsu8jjVLX6B+96SqpZVbGdAMh9rT1tottDddF2tPd48pZnpPFDOtKZ0LK3fAcEPcmyBnurZ1/RaRNK327VzF9u0oayrcuo6AWbmDXq1toVfwu89a6rRrpekMGqhrXctMz0QdlVlqLzdRjZjkf6B91Ei5qDi1Ia6KqEQx1S/2FibwSnCrsR5GUFRMBZZAN2SPLHBn1npMcocVO9iov6t2asum2l1HdUeymZo7a6oyQelGerWpsFof11tYBzbVGFcnJdh0JyXYPlEJttYj9wYwj7Caw00Dx9aEbdsnu0nEXm0Lszsqxn6nfWesj+8baHwRFE1eF8eXk4wvKY6vgMcXReOLsnhcMD7gkI2CB2NDJSjgPuoxWb0+OR4oLzjcsLxyycMg7FRv74pluXMoHeoMK/3pzmXyx1IJ3YYNXkc2iKPoQMzA4Vp1wwZ9pNMxnAE5SHBKNlNYjae0X4wWkGkSapyGZ0XTQLSQwKaJ4YucyDQ2f7huGqcHTFPoE00jhP3ibwomaIB0erqYq1tluqvJSl39QaqL1f7FgYLy16UGk4v2elVc6wXMDdp5tQPbcz4PRoMQIo1CiMH66t9j3VBcsmqkfmCvXx1EDxPoYSIj9KMQoghyuZBimBwlqGLs9cj9mAskyAvpfOkID9FSyZOaSPqTFnNN18MHf9M6X2rkF1Iz/Xq9APt7DevQakn9VUZlqTH6/2LtWydaXdNU1QtWCskoC6bpA+JpeKXCl0dWRZFR4+OKKydY0FwKYJFRwWLkULblDZVKLQzqQDzdq7RJxsFJXmeVcvo3ZKroQDzlHXv4PpvTZfeYrR6f2ey1ON3OH9Qvcrxm9jhtaOejV6wWm9nm90IfKv/OnzIU/QS9slAOFOWkqQdUVUs3206hD7XmbdJmKx8LTvSBmRzQKAfoZCWWA+1j3PDrVAJZHG0lPah7Wt6GeaQNfNUeT5NDWS/Hv8koDTYHHUsTQgncctqOps1kk0VbUDxHQwMqvxldMjpZKYqXf+j5Id8E8O0Zo0u7zN6w7Wh+KoFwgHb37n//Xzbg21pWqbcRblhXFe1lcAdwjvpWm7LqjFRZdQIK25PdlFUvHKGsOtqurDqEHg5hZdUhkJ4bztcmCdPaRA4z5ICyqqBM4WS7ZguT+4aCdwjrq84QfdVJXEYXqAlRX3Xk1PqqLd0HJ9RanZTsun90StlVuiBtNfhMmwZrHae3EE7D1AL1zTacLkhxmgScZrrhtHgETufacRpRgoYG4DQCOI3lazMEp8kclk1vKuAilFKZIYzSCIrinb4CabPSz3Bwr0ugJkWYxk8NU1uEcFKk/nlr5PDzpwTr062xxb67Da4GXt9AeJ2n1ht84HW8LkrxWgC8lrvhtXEEXrPteE2ih5MYL5gIlel8bZngtZDDvT6AV1WZmijhlfUIVhYWvBe8AA8CbegiQQ2IwCYRagsiajNnRK0t9DmponGyczxE86cE8Z90Dpj07VjKRSxfxT5yktqgtW1orknRXAQ0VzqjCXFlGQvrmcRrNpud0I0RsWkhp3kiRXpOivTeuJdF0cOQBpwoXFEF6KeU+PgaQT8F0CPvvUKgX8wJWwA9iFMrMyCnJwzlkHvVh0kt0wbHiCVhfAr93DeLz7K8HD460a+gWTCFZsGiOAtmTz8LutQ/T7qIMwdqoYunnAL/pq1I+vTpAb+LdXiR33VRU2gd15V4+zC3QlWTLEL+Xs7UAqISb53FMFDGZqs4uCrnHWtT4jXQLTK8fIsMbzcN3rbjiKYeL+tqk+O1MxI5Xqermxrvf24rNTa0edND7cK899MNYd6JTBdVXuav2hIu4HTSMWbmWyhuXqL+FlXNQlR1AacR1RLUjiaAtA1u+IgLxEtEDNE6UWVA1LgSRjmm8omgXUJGZsml4gIKtVagbx2O8VQGV2J0DCbkNLdny5YmsOMqBUhuPcHh3l6+ZkgUxpbE+z6S+ppS1UKM22gOHRBzNUba3lto3C4m/aTBesVNzihxS68x3mcPLplxc6jGf1tvUmiiQ4GR9fT4+xbcSac5E7Rk+zyevN8zFGL+drME91e8Qze0/1Dazyv2hTJVu4/d/9f+XrUxaO+7dmH+b05r1UsWN5dYHC0sJcIbM8g3kfn5Kp6fq9RV6uOHz1Cw6uV8bY54oI0clrObfiwsIAeywOKbQ9soEwFJuoVp5Az0Jh04g4vcmxoll+wbHWPB2tt8NZ4dwSHYuzDRu7iJs8/4mwevw51x0sviB+8JwLz/kezzzK+jOO0K9R2qOgcZxCq+1VYp5IA/ZwohszoFrnx1WENEVatypRq0021kKVzK1Vy5OVCZcEHTIWlTWER5xyIWmxRyarhbUMmxIJOLkk0hTIQHh+lkbYwQq0CTwgZ4baW8MGfH12w4QY3SyIoPIxbGHWjD/F6P2VQm9OYCO4GLGKtoa0iM4YLrHhVZxBRONn6PNfWG6tfmxORcwpuShMuBkK+0094laSySI2VPgSXUSSkquPL689btO+m+q2veOl+KZ+b8l2YnZIaRuMEqIbbLqOTnJn9jvNzbYE3ZzE4/vJa++UtLzw+9MDuwlh3dzU9cz9NLL35hSyajafMQYUgJx395Jxlu8tahFRuzbb6ekpCkyBUb/+DDN35xcfyjN+793OTMR0ndhPkeym/1KEs8B8yTUAWoeDFgkPz35apjEAto87UBfCCJv61x+Ke1RHwMDicTzeNaKJCr6wVyOI7Ior1blatk2VqcqPTEM3CSK5gNDU2HOKjPmYvDJVwdeKSinL2GbL2VpCHxAFZtdu/YOp5OikXz+tlkJFa4ef763bvXz98s3Jos5Yrl4Wzpz1ObI+eWIo1jyUwsmb1Q9pzDh5KX8ldu/9mFF4dffXD/teEXr938wI213ftXnkdPJGeSV5av3RdPJF+rc6nuyubw/Rno0fry8W7QVC7ijryFlo48cqNmb3m4iKKgOeS95jKV/rywrMHkZLBELiM/Bj1XxTmUcivVxtn8zAJEtpVlOEWAic/FeNzgfnkDrRKLa7xsfRfv43SlWz3bzRzdwYtPZ7ydI2MP+jT6nb9kFPQYymes6F/F3NRRsmVATQ7k0jrF+HznmJ1Jdjnwp9/5X0ycHmFeR6usTFUsWGsGapAqmUWND/dxDdJJdNWI6h7IvwoW0E+j7KChACQYWixDIutWQmS71gmZhQMlf6kGIHUMUb+/jt//Pv0T2o/11cWKWgk5GfIF9HhE+Z1iQ8HOQI8qFfSeXFW4duOD3zf4tUYXFpSG9/oL2ddpL6WB9yL6hkWi7YOvAmnRSmx5L798VCWXfUSu2n+8P/cXurDK6NTR8D7IN76BYj0zypBAg96IT1bhSpAMxXIWoraFbwVVNZgLVgPdBCARroG6sYzHJ6NGLIogxmm4G8tsbTQujkZCOpvSYbDZZQprnOM4xlVci6uUwbDD4pRpw3q5UacK48/yh+iz/AH6LOepRoAJH6WHfBS+8VF4DdbIouofhYeSU0+pzpOiaTkFM9eFzAYio+InqH8i5v31/97d/EgEq3deoN6gnkOfZaxu314w7Ek/RvE4H0Pd6VOATuG36Vnmm5SJilE3qAoHSqkggBbMA0aQt/pzWPuIYAT0uhq8L9U8+DsshkRg4vDZbVWpN8Im5OFxox0BTqDM9YxwsA6dValSilKh0mcEzlhAbVexNpMD7beJgNH02ZhfY1MZ7RZ4YIkZWZ7xpa6EaaXCOmQ2uRl9RKeyakOB1BZ+NoifBXVyg04bwnHXCP0degbPwRh1kyBfsefr4Fty4DeUeTxSXjrSSNtI6+avRLg9q90fhE3DQzoJiUILPrAwRSSIKEVEiujhYNuz0fpw6uP7sDjgugGYD9SH4W0ZGxmvV2ID0t8x8s49eoZ6Ho9zB2aVqHkMo7TnntX4is9sfOpjDw/80a/QVvouirP6sB4YGpaW+COtnMi7okmq0uCH5AuovNZ5t0QBFDS5xrPBfnspF8naaXmq5Olz9Y37cmgm9L/z/2RJ6hXMZxGkXqOQN0IRiCWQxxZk4e1cuRx+Kj6gK6G6wBmUUoh+dI0n3/FETNVLWrzDIAmC14kGiIV7RHl3wQttZa4AXtAalLdSyh7e7hUjt2YoEO7yuh8UPkDpg55ovGo8G3THEmYi7dHyFdtynfox1uyyUlhRjSgeon0bzmwpiVMRdX3NSiLhG58PaDmVMRpUc4NWrTK1DWq9vfOgy8sW8qx/y681KdLr4N9AFyyN/g8rqILpMV4qEhdI/jcSIZg6C4B11Pr6bGdZL7QroTj828zXMH7nINsdBaTy2I1VPXBbOCF7UlPJRz0o3laRjZE14e9YcX9E0bcdtwJC9x9aG0IQrnGI3X8VLSyLR3LW6smP4nBQlUfgDUJ5zCSH9pUMepWAcMMfKZVaN9mo5LXtODTSRbQr/6FcVbp158Oz6OUfy1XDt+99VHUMGum365v4z9RfeA6nkQatcvpzsgfMj1BslUGWe0RVPwQe8mEe+UWh/xqKtz3IdJH8lXuvhGw5CPICJBwPsHvmgMKQFMbmSIYK1HlsThgGrQnkbz6BsbYRKSUbVh8WgiidCeLaJVwNBhHzT0J7AEXYBvxcVeEE9m042lSRMx5BAyKsBmitowSPE/3i+6F5SpgBhawP8YKBEqXlCjmsJDqYR5sJSK0maSyHhG9u0zjutjbDbsVAvdyAm7bFvzQFTY03AQ0/H00mJnCtw1+RUlCGzssQTrK8Stl8x1GF0pQohAKDKV4hN7rlLs99v1OlsxVkjMe+bvMwjHHAyceCtIZhzCa5ntFbGUZls6nVNqviJfYW+qJSW60qhrGwclamMuoZRmlx2TU6txM9ZA0yGa95UWlSv9LDKgwWRqb1GwwR5vPmIRNNmwo2VTAY6pX9VONQMib/D3/oNzFKhwZie41dxTiyn/HwGquWpvd/RGvgmZoNfBG9Ma01a0mTl4pRWR1f2/8/DEOz/zBrZ1R2TT2uhD6mFRQ3bVNU/aJ1syk+Wr99kG/0p7VLSuH+NPxtC7lh66XrkfsLmQs+hjZkbaaod3r4q/45d48W+tb0oaTVmggZoG/NkEqbC2mt3ueQMaay1ztvbrl1Xb49yhl8cbNWI3dFzbMXZmm1VsGb97+bCzKYsB7XCcxaJpj7bVeIlyll+2/7wyxD+n1aL16r8LgXUdygorxUDt8MvYKyU2IDC2l8OpjQFTmywH10kFjGwkULZDbVtSJhJkoboBhcJ4/KuDyHLHHRMdCDB3UZkwTYhoPBycH41Eaid5TVht35YKmkeShXevKfBoNclnT2JQ1ud49GP2O+TH9Gb9WWVIr9e+KQbq2KhUQ0zD+htSNbRZdR+xF/wlpe2v/uV0e0Dq1q//240y+bbfb+MTVa2QPVyF/Q7n+C/vz+C2g6/H8QJJlIAAAAAAEAAAAFAAA9vywaXw889QAfA+gAAAAA1ymlxgAAAADceS+Z/+D+8APSA24AAAAIAAIAAAAAAAB42mNgZGBg3vHPnYGBheH/g/+bmC8xAEVQwAsAnn0HVHjabZPLaxNRFMa/c65WlEpC6SZYH+kMMraZktQao04XilJKKRTxQUQoiAhCalHxsVAQcSui2y4EB1xI0YULFyLVjfg3tBtdtBvFR8GNFON3bqY1lAZ++e7ce869555vRhoogj8Z59+nFjKDx3IWiU5gl0Y47iZxTpdQxUckEiDwvOX6XlTEcS5Fgm8oyxSKWkckDzCmBRxVwaCeRixfGPOHOYuMWeHcFkSMTyyXexiHiOXcdou4q+9R0GnU9CECnafWSYUs8PkXanKBjMLpc86VUXMp55ey9ROZzlJZu45yrxR9+hIF95XjGUR6k3oLhyXPmu5gtynP7yN7pIRjsswaA2yTOcYO8T7z5AxCaWKfnmJOzPEObNcix/0I3A2EvGeo3YwfpvYyPmXMLHUS3dwjr3nkXAdyupU93Ymc/MZ+GUGAF+zDiD9/YK33dm7M+nPsDWu1GOYPS6m54noZ/xqD8tf37YD1Xn6QUvOz3MvmrvHcq6yNd9Fx1tOD0Pe7hAkZQlWecf8ONFwPIveURKypgEu+7xvgHlHNi3rmRYb3ocUA6adXlTUf1mP9NTUv2jEvxphj/WXfN0LfUecyH9qJ2UfzIkaXjbWT91r1YT18V6ld3ot26IUmrIvqPtDLztb7wX5+Jz/lDeCu0JdVDfmNLJAnGVPkFSlzLW19C4ZWkWwCv4vl/8h9zxHPSSTuPLOYKxc5fxkN29dtxkFnfl/nPaYR/gNOsZlqAAB42mNgYNCCwwaGF4xJTAJMZ5hXML9gkWDxYFnH8oPVhDWFdR7rATYpthp2EfZV7L84pnHycGZwvuJK4FrE9YNbhDuIu4j7D88D3iw+Ib4Svn/8TwSmCGoJ/hGKEFog7CJ8TGSCqIlon5iC2BrxCvEfEk2SIpJ9UiHSEtJbZBxkemQ2yPyR1ZONkO2Q85K7J++kIKfQoqijJKR0RzlB+YxKlcot1UtqPWoP1KdoGGi806zRvKc1R1tIe55OmM4L3Trde3psejl6W/S26Avo9xgkGXwzvGYkYvTKWMv4gck0k3umUqZeZmxmGmYlZjfMU8x/WehZ8lnOsTxlxWAVYjXP6of1DZtntl/s2uxl7Lc4RDlKOT5wWuZ8ziXNNcEtzj3Lo8Pjl2ee5zuvPm8LHwmfNp9vviV+PH6z/I75B/l/C5gXGBSkEHQmuCokIFQjjCnsXfiniHeR76IORcdEX4kJirkV2xD7I64k7lv8rASdRJXECUkMSU3JUsnrUrhSulLj0szSZTKkMnZkZmWZZMtlH8iZl3MpVwYHNMn1yU3J7cpdl/slzyqvJu9Dfkr+pQKmggogXFXwqOBRYUPRhGKe4hkAteSkzAAAAQAAAOgAgwAHAAAAAAACAAEAAgAWAAABAAEKAAAAAHjanZK9bhNREIXPepOIBLAoEEWq20ADGJufCCWVpQQUyRAFEJRoY9bxCic22XUiKp6DiufIGwB5gjxEWtrw3dlrYa8LEF7dmXPn58ydGUu6qV+KxA+xiIoVLSyj73ArcaQbuhtwTXVtBBxrTdsBL8jpS8CLWtW3gJewnwZ8Bc7zgJfBlwFf1Xp0O+Br4PcBX49c9DXguh7XJjzfdat2EfAPNeM44J+qx48CPtNS3C4xfa3Ez0t8Hms13t0cF92+2hqoUKojHSoBZTrm5tRBFsGT662GxA30Ee0jX2Hf1xhLwv2JGmrat6GX2uFsgao59ytZVb+b85e1M/ze+6fK35ifcTIsH0x31Se77LOPfwxnSta/RfVtCiOt6wHf8VzlQp/xpuqR00U3kEMdEDub2ZurlszVauBNiX2DNcPmeKPvvQC9BvVAJ9ah31AZMTA2n50bu4Pt0HiOwJ4/textNurYzchip5k7Mwz3sFQn3+Jl/ripl83WnbwmYUIJ2O9hD+k9J9wLm25iddvaNVwwGVeZUg6nn88IW07F3LgaNu19/Dvkd/4r5x1v2WOCk65b9m/y/Yy5vbCpeutTk2twPzTZRDuO1y2ba8825nfn+xtqk1thG53e1iesGZx+V4PfZqGuWQB42m3PV3DMcRDA8e8ml7vkcum96ETn//9fLkW/k5wevdeQ5O6IJC4O0cJIdIYxwxOT4AWj12HwgNHbKIMHz/p4wKNx8f95sy+f2d3Z3Vki+Bu/HfTgf/EBJEIixUIkFqKwYiOaGOzE4iCOeBJIJIlkUkgljXQyyCSLbHLIpR3t6UBHOtGZLnSlG3l0D1/qSS9604e+9KM/GjoGTvJxUUAhRRQzgIEMYjBDGMow3HgYTgmleBnBSEYxmjGMZRxljGcCE5nEZKYwlWlMZwYzmcVs5jCXecxnAeUSxRGaaOY6+8M/bWY3OzjIMY6Kle28YxP7xCbR7OIAW7nFe4nhEMf5yQ9+cZiT3Ocup1jIIvZQwUMquccDnvKIxzzhI1W84BnPOY2P7+zlNS95hZ/PfGUbiwmwhKVUU0MLtSyjjiD1hFjOClbyiVWspoE1rGMtV2ilkfVsYCNf+MZVznCWa7zhrdglVhwSJ/GSIImSJMmSIqmSJumSwTnOc4nL3OYCF7nDFk5IJje4KVmSzU7JkVyrr7qhzq+bGLZQTUDTtBJTt6ZUuUf1PU5lcZtGeECpKw2lU5mvdCkLlIXKIuW/fW5TXe3VdXtVwBcKVlaU1/vNkuE1dXktpaFgbVvi9Zj3wxp/ACC+l/MAAHja28H4v3UDYy+D9waOgIiNjIx9kRvd2LQjFDcIRHpvEAkCMhoiZTewacdEMGxgVnDdwKztwriBBcLYwKbguomllUl7I7NbGZDLCuSyCcC57AquuxhY6v8zwEU4gArYq+BcTiCXwwXGjdwgog0AZdAqhgAA) format('woff');
    font-weight: normal;
    font-style: normal;

}
<<ximg "/DD/Vriend en familie/Janny.jpg">>

var FramedEngine = require("$:/core/modules/editor/engines/framed.js").FramedEngine;
var getCaretCoordinates = require("$:/plugins/snowgoon88/edit-comptext/cursor-position.js");

var old_sq_handleClickEvent = FramedEngine.prototype.handleClickEvent;
FramedEngine.prototype.handleClickEvent = function(event) {
	old_sq_handleClickEvent.apply(this,arguments);
	if(this.domNode.selectionStart != this.domNode.selectionEnd && this.domNode.selectionEnd != this.lastSelectionEnd ) {
		//console.log("selection");
		$tw.popup.cancel(0);
		this.lastSelectionEnd = this.domNode.selectionEnd;
		
		var areaNode = this.domNode;
		var offsetLeft = 0;
		var offsetTop = 0;		
		var coord = getCaretCoordinates(areaNode, areaNode.selectionStart);
		var styleSize = getComputedStyle(areaNode).getPropertyValue('font-size');
		var fontSize = parseFloat(styleSize); 

		//var _left = (offsetLeft+areaNode.offsetLeft-areaNode.scrollLeft+coord.left);
		var _left = (offsetLeft+areaNode.offsetLeft-areaNode.scrollLeft);
		var top;
		if(coord.top < fontSize *4) {
			coord = getCaretCoordinates(areaNode, areaNode.selectionEnd);
			_top = (offsetTop+areaNode.offsetTop-areaNode.scrollTop+coord.top+fontSize*2);
		} else {
			_top = (offsetTop+areaNode.offsetTop-areaNode.scrollTop+coord.top-fontSize*4);
		}
		var actionState = "$:/state/floating-menu";
		actionState = actionState + "-" + this.widget.getStateQualifier();
		//console.log(qualifiedState);
		
		$tw.popup.triggerPopup({
			domNode: null,
			force: true,
			noStateReference : true,
			domNodeRect: {
				left: _left,
				top: _top,
				width: 0,
				height: 0
			},
			title: actionState,
			wiki: this.widget.wiki
		});
		//var selectionEnd = areaNode.selectionEnd;
		//this.widget.wiki.setText(this.actionState,"selection-end",undefined,selectionEnd);

		var tiddler = this.widget.wiki.getTiddler(actionState);
		var fields = {
			"selection-end" : areaNode.selectionEnd,
			"selection-start": areaNode.selectionStart,
			"selection": areaNode.value.substring(areaNode.selectionStart, areaNode.selectionEnd)
		}
		this.widget.wiki.addTiddler(new $tw.Tiddler(tiddler,fields));

	} else {
		this.lastSelectionEnd = null;
		$tw.popup.cancel(0);
	}
}
"""Omdat jij wist dat ik het was
En niet je laatste minnaar
De knapste van de klas
Omdat je blozend voor me stond
Naïef en van de kook
Omdat jij smoorverliefd was
Daarom was ik het ook

Omdat jij bij me blijven wou
Ondanks mijn bot gedrag
Die vrijgezellendrift
Gepikt hebt elke dag
Omdat je maling aan de mensen had
Aan geroddel en gestook
Omdat jij zo graag trouwen wou
Daarom wou ik het ook

Omdat jij door bleef vechten
Op het randje van de dood
Het wrede tedere leven
In je armen sloot
Omdat je omonwonden
Het huwelijksbed indook
Omdat jij zo graag kinderen wou
Daarom kreeg ik ze ook

Omdat jij leven kunt
Met mij zoals ik ben
Omdat jij altijd anders bent
Dan ik denk dat ik jou ken
Omdat jij jouw heilig vuur
Niet verstikken laat in rook
Omdat jij weet wat liefde is
Daarom weet ik het ook

Uit: Verzamelde liedjes 1967 - 1990 (p. 126). Amsterdam: De Harmonie

"""Mooi woon je hier pap in dat bos, 
Toe laat mijn hand eens los 
Dat staat zo kinderachtig. 
Ik was de sterkste van de klas, 
Toen Sidney er niet was 
Die Surinamer van 1.80. 

Opa heeft mij een fiets beloofd, 
Wat heeft die man daar een raar hoofd. 
Heeft die zijn kinderen ook geslagen? 
Weet je pap een nieuwe fiets 
Voor mijn verjaardag vind ik niets 
Ik ga zo’n plank op wieltjes vragen. 

Mama is lief, mama is lief, 
Mama gaat zo vaak op stap, 
Mag jij het hek uit pap? 
Heb je ook een eigen kamer 
Waar mijn tekening kan hangen 
Die waar mama jij en ik op staan 
Zul je mij dan nooit meer slaan? 

Eén van de jongens uit de klas 
Zei dat jij veroordeeld was, 
Ik ga op Milky Ways tracteren. 
We hebben ook een nieuwe oom 
Wel aardig maar een beetje sloom 
Hij blijft af en toe logeren. 

Mama is lief mama is lief 
Mama gaat zo vaak op stap 
Heb je geen zakdoek pap? 
En als je hier nog lang moet blijven 
Kom je niet op mijn verjaardag 
En hoe krijg ik dan mijn cadeau? 
Niet dat je thuis moet komen hoor 
Het is veel beter zo. 

<<ximg width:80% "/Dagboek/20210314 streepjes.jpg">>

<<ximg width:80% "/Dagboek/20210321 streepjes.jpg">>

<<ximg width:80% "/Foto's/Gedaan/202132 streepjes.jpg">>

<<ximg width:80% "/Foto's/Gedaan/2021 week14.jpg">>

<<ximg width:80% "/Dagboek/20210418 streepjes.jpg">>

<<ximg width:80% "/Dagboek/20210425 streepjes.jpg">>

<<ximg width:80% "/Dagboek/20210501 streepjes.jpg">>

<<ximg width:80% "/Dagboek/20210508 streepjes.jpg">>

<<ximg width:80% "/Dagboek/20210814 streepjes.jpg">>

<<ximg width:80% "/Foto's/Gedaan/2021 week 33a.jpg">>
"""
Madrid, 5 december 2021


Lieve Anne,


Een gedicht voor Anne maken is niet moeilijk.
Zij is betrokken bij de wereld,
Is tegen vervuiling en geweld,
En vindt veel zaken nogal verfoeilijk.

Sint hoeft je echt niet aan te sporen,
Om deze strijd nooit op te geven.
Het goede dienen hoort bij je leven,
Je zult je altijd aan onrecht storen.

Hou vol, zegt Sint, en laat niet af
Tegen verval te blijven strijden,
Mensen in nood te helpen bevrijden.
Je speelt het klaar, de Sint staat paf.


Veel  liefs van Sint en Piet
"""
Madrid, 5 december 2021


Lieve Berend,


Een wereldreis in coronatijd
Dat is heus niet zo snel georganiseerd.
Met al die testen gaat het gauw verkeerd.
Met de formulieren is het een hele strijd.

Maar Berend en Sietske houden vol.
En zie, opeens zijn ze ingecheckt,
Betreden het vliegtuig opgewekt.
En maken in Amerika veel lol.

Barrières zijn er om te overwinnen.
Dit boek laat dat ook heel goed zien
Is het iets voor jou? Sint denkt: Misschien...
Het is zeker goed om eraan te beginnen.


Veel liefs van Sint en Piet

"""
Madrid, 5 december 2021


Lieve Cathrien,


Die bedachtzame Cathrien
Wordt nog eens een snelle beslisser.
Bij de triage maakt zij geen misser
En heeft rap de hulpvraag doorzien.

Ook de kinderen krijgen veel aandacht,
Met vriendinnen maak je plezier.
De viool bespeel je met een zwier.
De tuin knapt op en wordt een pracht.

Je doet het allemaal zorgvuldig en gezwind
Maar ook rust is nodig en dat weet je.
Dit cadeau helpt je vast een beetje
Om bij te tanken, dat hoopt Sint.


Veel liefs van Sint en Piet
"""
Madrid, 4 december 2021


Lieve ELS,


Een boerderij, daar houdt Els van.
Met opa en oma gaat ze kamperen,
In de zomer, al heel veel keren,
In de mooie caravan.


Veel liefs van Sint en Piet!
"""
Madrid, 5 december 2021


Lieve FRANCA,


Popjes geven geen gezeur.
Franca speelt er heel graag mee.
Je bent vast heel tevree
Met dit popje met een kleur!


Veel liefs van Sint en Piet
"""
Madrid, 2 december 2021

Lieve Gerrie,

Denk je, ik heb alles al beleefd
Dan komt er toch nog weer iets anders
Door corona buigen we alleen nog naar elkander
En zijn we tot thuisblijven veroordeeld.

Bij de pakken zitten we niet neer,
Corona biedt ook nieuwe kansen!
Al gaan we niet meer dansen met Jansen
Bij elkaar eten is niet verkeerd.

Zo wordt een nieuwe traditie geschapen
En zien we elkaar van een nieuwe kant
Van koken heeft Gerrie gelukkig veel verstand
Het blijft niet bij wortelen en rapen.

Wat wel blijft is zin in lezen
Sint geeft je daarom dit geschenk
't Bevalt je vast wel, naar ik denk
Hier zul je wel tevreden mee wezen. 

"""
Madrid, 5 december 2021


Beste Jochem,


Beschouwen zit Jochem in het bloed.
De politiek of de verkamering,
Vrijheid en democratie zijn in het geding.
Het gaat vandaag de dag niet goed.

Hij kan heel scherp analyseren,
Maar schuwt ook de actie niet.
Betrokken is hij op elk gebied
En bereid zich te verweren.

Om je geest opnieuw te voeden
Kocht Sinterklaas dit boekje klein.
Hopelijk vind je het fijn
En komt het je inzichten ten goede.


Veel liefs van Sint en Piet
"""
Madrid, 4 december 2021


Lieve MERCIA,


Wat wil je worden als je groot bent?
Mercia weet het al: kunstenaar!
Dit cadeau vind je vast niet raar
Sint hoopt dat je er blij mee bent.


Veel liefs van Sint & Piet
"""
Madrid, 5 december 2021


Lieve Sara,


Bij nacht en ontij fietst onze Saar
Na de avonddienst door regen en wind.
En dan thuis nog een huilend kind
Toch krijgt ze het allemaal voor elkaar.

De zorg vraagt veel van dokter en verpleger
Corona zet ons allen op scherp
Er ligt elke keer weer een bult werk
En het wordt allemaal ook niet beter

Maar Sara laat zich daardoor niet hinderen.
Een nieuw huis lonkt haar tegemoet
Wat ze doet, ze doet het goed
Samen met Toon en de lieve kinderen.


Veel liefs van Sint en Piet
"""
Madrid, 5 december 2021


Lieve Sietske,


Tegen een studieboek zegt Sietske ja,
Daarmee is zij zeer tevree.
Maar ook andere dingen maakt zij mee
Zoals presenteren in Philadelphia.

De reis naar de VS was pret en lol,
Veel te zien en veel te leren.
Op een conferentie presteren
Al was de zaal niet geheel tjokvol.

Hopelijk heb je nu weer tijd
Om dit boek te gaan lezen
Je zult er vast wel blij mee wezen
Het is aan een geliefkoosd onderwerp gewijd.


Veel liefs van Sint en Piet
"""
Madrid, 5 december 2021


Beste Toon,


Druk in de weer met het nieuwe huis,
Dat is een kolfje naar je hand.
Van klussen heb je veel verstand,
Tussen het gereedschap voel je je thuis.

Een nieuwe woning voor je gezin
Aan een mooi plein in Amsterdam Oost
Daarop zeggen Sint en Piet: Proost!
Veel geluk met dit nieuwe begin!


Veel liefs van Sint en Piet
Gedrag
[[Menselijke waardigheid/20210423175911239/20210423183057211]] [[Menselijke waardigheid/20210423175911239/20210423183110588]]
Onderstaande ontleend aan een artikel van Stephen Beale in IAI News, een online magazine of big ideas: https://iai.tv/articles/hope-hidden-by-plague-auid-1446 <p>

De pest lijkt nooit op te houden. Vandaar dat een van de wachtposten verzucht: geef mij maar een stevige aardbeving. Mensen verliezen hun geliefden of zien hun geliefden niet meer, de scheiding. De eenvoudigste pleziertjes van het leven, zoals het strand en de zee, worden verboden. De pandemie maakt het leven monotoon. <p>

Eerst is er wanhoop, als het verlies en het gemis nog pijn doen. Daarna wordt wanhoop een gewoonte, als de herinnering aan je geliefde verbleekt. Mensen worden doelloos dwalende schimmen. <p>

Om dat te voorkomen: probeer de herinnering levend te houden. Probeer de liefde levend te houden. Dat hebben we gezien aan Rambert. Maar tegelijkertijd: Blijf de werkelijkheid onder ogen zien. Het universum zwijgt, de mens is niet langer de maat der dingen. Bescheidenheid past ons. <geel>Juist door de absurde werkelijkheid te aanvaarden kan de hoop op een betere toekomst blijven leven. </geel>
https://www.vrt.be/vrtnws/nl/2020/05/28/joseph-roth-radetzkymars-geert-mak/

Geert Mak lyrisch over "Radetzkymars" van Joseph Roth uit 1932: "Boek leest alsof het gisteren is gepubliceerd"
Een van de meesterwerken die u in uw leven gelezen moet hebben: zo omschrijft Geert Mak "Radetzkymars", de legendarische roman van Joseph Roth uit 1932. Recent is een nieuwe editie verschenen waarvoor de journalist het voorwoord heeft geschreven. "Het is een symfonie van heimwee en nostalgie."

Alexander Verstraete
do 28 mei 2020  19:30
Bij "Radetzkymars" denkt u wellicht aan de mars die Johann Strauss senior in 1848 componeerde en die elk jaar het op één na laatste werk is dat tijdens het nieuwjaarsconcert van de Wiener Philharmoniker in Wenen weerklinkt, maar wist u dat het ook de titel is van een legendarische roman van Joseph Roth (1894-1939)?

Roth pende "Radetzkymars" al in 1932 in Berlijn bijeen aan de vooravond van de machtovername door de nazi's. Geboren als Jood in Oostenrijk schetste hij het verval van het machtige Habsburgse rijk en de dubbelmonarchie van Oostenrijk en Hongarije. Dat deed hij door de ogen van luitenant Carl Joseph von Trotta.

Lees voort onder de afbeelding van Joseph Roth:

Joseph Roth.
Joseph Roth.
In de wereld van de literatuur groeide "Radetzkymars" in geen tijd uit tot een klassieker die op ongeziene wijze de ondergang van de wereld van voor de Eerste Wereldoorlog in beeld brengt. Zeker in Duitsland geldt het boek als een meesterwerk dat zijn gelijke niet kent.

Bijna 90 jaar later is een nieuwe editie van "Radetzkymars" in het Nederlands verschenen. Het gaat om een vertaling van Els Snick met illustraties van Jan Vanriet. Opvallend: het voorwoord is van de hand van Geert Mak, de journalist bekend van het boek en de serie "In Europa".

Dit boek is al ongeveer 90 jaar geleden verschenen en toch leest het alsof dat pas gisteren gebeurde.

Geert Mak
Lees voort onder de cover van de nieuwe editie van "Radetzkymars":


"Tegen Roth zeg je geen nee en tegen Snick ook niet", zegt Mak in "De wereld vandaag" op Radio 1. "Roth is een legendarische schrijver. Dit boek is al ongeveer 90 jaar geleden verschenen en toch leest het alsof dat pas gisteren gebeurde. Je hebt een paar auteurs die helder als glas en modern schrijven en dat is Roth."

"Roth was niet alleen een schrijver, maar ook een belangrijke journalist in de jaren 30. Bijna elke journalist kent zijn naam. Het is een journalistenjournalist omdat hij zo prachtig details kon beschrijven alsof je er zelf was bijgeweest."

""Radetzkymars" gaat over het verval van het Habsburgse rijk. Dat maakt het verhaal zo actueel. Je denkt dat we in een periode van overgang leven waarin alles kraakt, van de Europese Unie tot de macht van de Verenigde Staten. Net als ten tijde van "Radetzkymars" leven we in een tijd van verschuivende imperia. Dat maakt een heleboel dingen herkenbaar."

Beluister hier het gesprek met Geert Mak in "De wereld vandaag" (en lees voort onder de audio):

"Tegen Joseph Roth zeg je nooit nee"



0:00 / 5:00
"Roth zoop als een tempelier en hij maakte overal schulden. Vanaf zijn 20e heeft hij nooit nog een eigen bed gehad, hij leefde altijd in hotels. Na de opkomst van Hitler geraakte hij echt in ballingschap. Zijn leven is altijd erg dramatisch geweest."

""Radetzkymars" is een symfonie van heimwee en nostalgie, terwijl Roth eigenlijk een erg moderne man was. Tegelijk had hij een verlangen naar het oude keizerrijk waar alles goed en veilig leek, maar in werkelijkheid een verkruimelend en ineenstortend imperium was."

Sommige mensen vergelijken "Radetzkymars" met de Europese Unie, maar dat is een minder goede vergelijking.

Geert Mak
"Sommige mensen vergelijken "Radetzkymars" met de Europese Unie, maar dat is een minder goede vergelijking. Het Habsburgse rijk was een uit zijn krachten gegroeid middeleeuws imperium, terwijl de Europese Unie soms haar tijd vooruit is. Het is een erg moderne constructie."

Toch ziet Mak veel parallellen tussen toen en nu: "De gevoelens van onbehagen, van "Wat gebeurt er nu eigenlijk?" en "In welke overgangsperiode zijn we beland?", dat is het herkenbare van "Radetzkymars". Daarom vind ik het fantastisch dat deze nieuwe editie er is. Het boek hoort bij die paar meesterwerken die u echt een keer in uw leven moet hebben gelezen."
"""
Graf te Blauwhuis
voor buurvrouw H. te G.

Hij rende weg, maar ontkwam niet,
en werd getroffen, en stierf, achttien jaar oud.
Een strijdbaar opschrift roept van alles,
maar uit een bruin geëmailleerd portret
kijkt een bedrukt en stil gezicht.
Een kind nog. Dag lieve jongen.

Gij, die koning zijt, dit en dat, wat niet al,
ja ja, kom er eens om,

Gij weet waarom het is, ik niet.
Dat Koninkrijk van U, weet U wel, wordt dat nog wat?


Gerard Reve (1923-2006)
Uit: Nader tot u
"""Hulshorst, als vergeten ijzer
is uw naam, binnen de dennen
en de bittere coniferen,
roest uw station;
waar de spoortrein naar het noorden
met een godverlaten knars
stilhoudt, niemand uitlaat
niemand inlaat, o minuten,
dat ik hoor het weinig waaien
als een oeroude legende
uit uw bossen: barse bende
rovers, rans en ruw
uit het witte veluwhart.
Stroll's best kept secrets are the many ways you can extend and refine it!

!!!The Goodies page

*I have a page of goodies I and others have specifically made for Stroll. Find it [[here|https://giffmex.org/stroll/goodies.html]].

!!!The ~TiddlyWiki toolmap

*The [ext[TiddlyWiki toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]] is a list of hudreds of plugins you can use with Stroll. Keep in mind that plugins that tamper with the layout could break the Stroll layout.
"""
Courgette, uitje, kastanjechampignons, tijm, geraspte kaas, crème fraiche, Maggie blokje. 

Courgette halveren en uithollen. Uitje fruiten,  champignons en courgette snippers erbij, peper, zout en tijm erbij. Maggie blokje weinig water oplossen. Crème fraiche erbij,  kaas erover.  In de oven. 
‘It is a fact of history that most of the great artists in the Western tradition have felt involved with the solution of problems more than the expression of their personality’’

The creation of an individual work involves making plans and initial marks, testing these ‘‘hypotheses,’’ and using feedback for revision.

The neglect or even denial of values seems to me the greatest danger in that trend towards the dehumanization of the humanities’’ (Gombrich, 1984, p. 25)

Again, ‘‘I do not think that the value of any work of art to the mind can be demonstrated . .. . Art ... offers us a range of metaphors ... however, we are entitled to speak of poor and rich vocabularies and resources’’
Hij is onafhankelijk van anderen op een aantal sleutelideeën in de hedendaagse studie van creativiteit gekomen. Denk aan Galenson's typologie. Zijn opvatting over psychologische regressie als een middel om tot grotere originaliteit te geraken is consistent met empirische bevindingen (Martindale, 1990). Het begrip Zeitgeist is fundamenteel flawed. Zijn nadruk op het creatieve individu past in de traditie van cogntive-historical case studies. We zoomen in op een paar thema's : defining creative products, elaborating the nature of creators’ mental structures (schemata, problem representations, etc.), and under-
standing the role of evaluation and (possibly) learning in creativity.

{{Defining Creative Products||dt}}{{Creators' Cognitive Structures||dt}}{{Evaluation and Learning Processes||dt}}
"""
Groene mixed salade 
Tomaatjes, walnoten, zonnepitten
Stukjes appel
Dressing met balsamico 
Plak geitenkaas met honing onder de Grill/oven 
"""Dit wordt het laatste gedicht wat ik schrijf,
nu het met mijn leven bijna is gedaan,
de scheppingsdrift me ook wat is vergaan
met letterlijk de kanker in mijn lijf,

en, Heer (ik spreek je toch maar weer zo aan,
ofschoon ik me nauwelijks daar iets bij voorstel,
maar ik praat liever tegen iemand aan
dan in de ruimte en zo is dit wel

de gemakkelijkste manier om wat te zeggen), -
hoe moet het nu, waar blijf ik met dat licht
van mij, van jou, wanneer het vallen, weg in

het onverhoeds onnoemelijke begint?
Of is het dat jíj me er een onverdicht
woord dat niet uitgesproken hoeft voor vindt?
"""
Waneer ik morgen doodga,
vertel dan aan de bomen
hoeveel ik van je hield.
Vertel het aan de wind,
die in de bomen klimt
of uit de takken valt,
hoeveel ik van je hield.
Vertel het aan een kind
dat jong genoeg is om het te begrijpen.
Vertel het aan een dier,
misschien alleen door het aan te kijken.
Vertel het aan de huizen van steen,
vertel het aan de stad
hoe lief ik je had.

Maar zeg het aan geen mens,
ze zouden je niet geloven.
Ze zouden niet willen geloven dat
alleen maar een man
alleen maar een vrouw
zo lief had als ik jou.
{{1. Verlangen naar uitzicht||dt}}{{2. The Attitude of an Astronaut||dt}}{{3. Therapeutisch naar de aarde staren||dt}}{{4. Ruimtevaarders zonder sterren||dt}}{{5. Ik ben zo groot als wat ik zie||dt}}{{6. Kosmologisch bewustzijn||dt}}{{7. De geheime ademhaling van de aarde||dt}}{{8. Een antwoord op de verte||dt}}{{9. Het museum van de maan||dt}}{{10. Zonsondergang op Mars||dt}}{{11. De mythe van de menselijke autonomie||dt}}{{12. Het heden doet er steeds minder toe||dt}}{{13. Een schaduwwereld binnen handbereik||dt}}{{14. Sterrenstelsel Dwingeloo||dt}}{{15. Nergens, ergens, overal||dt}}{{16. Natuurparken aan de hemel||dt}}{{17. In lichtjaren heeft niemand haast||dt}}{{18. Nachtwacht||dt}}
Onderzoek naar depressie bij transgenders. Inderdaad meer dan bij cisgenders. Meer bij vrouwelijke transgenders dan bij mannelijke. Geavanceerde statistische technieken.

Maatschappelijke relevantie 4
Vakrelevantie 3
Leesbaarheid 4
Diversiteit 5

!Get help


*Here is a [[Stroll layout cheat sheet]].<br><br>

*https://tiddlywiki.com/#Working%20with%20TiddlyWiki will help you learn more about ~TiddlyWiki<br><br>

*[[This link|https://tiddlywiki.com/#Formatting%20in%20WikiText]] will show you basic wikitext formatting.<br><br>


*The ~TiddlyWiki [[Google group|https://groups.google.com/forum/#!forum/tiddlywiki]] has many knowledgeable people who can help you with problems. Add the word Stroll and I should see it the same day or next day, unless I am traveling. <br><br> //''Note:'' I will try to help you if you run into a problem. But I will probably not take up your suggestions to change Stroll more to your liking. <span class="red">Please do NOT ask us to help you with questions about ~TiddlyMap.</span> There are too many incompatibilities between ~TiddlyMap and Stroll.  ~TiddlyWiki is infinitely customizable, and there are also numerous plugins you can add, found at the [[TiddlyWiki toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]].//<br>

!Acknowledgements

Stroll was made with the help of many people:

*[[Anne-Laure Le Cunff|https://twitter.com/anthilemoon]]'s enthusiasm for (and promotion of) ~TiddlyBlink was a big inspiration behind the changes in Stroll
*[[Saq Imtiaz|https://twitter.com/saqimtiaz]] custom-made his Stories plugin for Stroll, and made many recommendations for Stroll. 
*Stroll also uses plugins from [[danielo515|http://contextplugin.tiddlyspot.com/]], [[flibbles|https://flibbles.github.io/tw5-relink/]], and [[snowgoon88|http://snowgoon88.github.io/TW5-extendedit/#About%20the%20Edit-CompText%20plugin]].
*Many people at the [[TiddlyWiki Google group|https://groups.google.com/forum/#!forum/tiddlywiki]] made great recommendations regarding the form and functionality of Stroll.
*And of course, [[Jeremy Ruston|https://twitter.com/Jermolene]] is the creator of ~TiddlyWiki, the platform Stroll is built on.

Thank you to all of you!
Stroll is a free gift to you. The time I was able to put into creating it was made possible by my employer, //Resonate Global Mission.// 

If you find Stroll helpful, ''please consider a donation toward our support with Resonate''. [[(Link)|https://www.resonateglobalmission.org/support/our-missionaries/david-and-blanca-gifford]]

(We aren't allowed to promote any projects outside our Resonate budget, but family and friends have asked that I make my Kindle wish list available. If a donation to a Christian mission organization is not your thing, you could show your support of Stroll by getting me a book. [[here|https://www.amazon.com/hz/wishlist/ls/1OTJM9IE7SPVS/ref=nav_wishlist_lists_1?_encoding=UTF8&type=wishlist]].)

If you want to more about us, see our own website, https://giffmex.org.

Blessings,

//''Dave Gifford''//
"""Een schilderij heeft een lijst nodig,
zoals geluk doodsangst.

Wind bladert in tuin
en ineens slaat een bladzij
zich om. Zoals ik door je haren ga,
en zo anders als ze dan liggen.

Eindelijk is alles hetzelfde.
Kijk eens, zegt geluk, en toont ons het nu.
Het beeft een beetje in zijn handen.

Uit: Schoolslag. Gedichten. Amsterdam/Antwerpen: De Arbeiderspers, 1994
"""Ik hou van ochtendlijk vrijen,
vóór alles weer moet
nog even mógen. En nadien buik aan rug
nog wat tegen elkaar aanliggen in de klaarte
van net-klaargekomen-zijn.

Buiten ligt alles helder vastgevroren,
een klare vriesochtend is altijd klaarder
dan een klare zomerochtend, ongeveer zoals
helderheid in een zwart-witfilm
helderder is dan in kleuren.
Alles is zichtbaar. De naakte feiten
hebben kou.

Maar wij niet. Na de liefde buiten komen
is zoiets als van de sauna
in ijskoud water springen: je voelt het
nauwelijks. Je voelt het net genoeg
om je ijzersterk te weten.

Uit: De Gedichten (p. 144). Amsterdam/Antwerpen, De Arbeiderspers, 1998.
"""Het was stil,
maar de liefde begeleidde ons.
De hemel was grauw,
maar een zalige lucht keek ons aan.
De blauwe vlam van uw ogen, het rode dons
van uw wangen, de stille baan
van uw lijf, de wondere wijs
van uw woorden, de klare wil
van uw liefde, zij waren een licht, een vlam,
of zon vlakbij uit de aarde opkwam.
"""
ZIE je ik hou van je, 
ik vin je zoo lief en zoo licht -- 
je oogen zijn zoo vol licht, 
ik hou van je, ik hou van je.
En je neus en je mond en je haar 
en je oogen en je hals waar 
je kraagje zit en je oor 
met je haar er voor.
Zie je ik wou graag zijn 
jou, maar het kan niet zijn, 
het licht is om je, je bent 
nu toch wat je eenmaal bent.
O ja, ik hou van je, 
ik hou zoo vrees'lijk van je, 
ik wou het helemaal zeggen -- 
Maar ik kan het toch niet zeggen.
 
Herman Gorter, Verzen 1890
<div class="tc-wf-table-of-contents">
<<my-toc-linked-selective-expandable-body "Het Bureau" sort[tocnr]>>
</div>









































"""
1962
Nieuwjaarskaarten, ruzie met Haan
Brief van Frans Veen




























PDF bestand openen
Schermafdruk van programma maken en in spoorboekje stoppen
WEBEX adres erboven
Het sterfbed van de jonge zoon van rechter Othon, Philippe, is verschrikkelijk, ook omdat het zo lang duurt. Hij is als eerste ingeënd met een experimenteel serum. Het serum dat gedeeltelijk werkt lijkt de oorzaal van het lange lijden te zijn. Iedereen is verbijsterd, inclusief dokter Rieux en pater Paneloux. Deze scène is ongetwijfeld de emotionele kern van het boek. //Paneloux liet zich op zijn knieën zakken en niemand vond het vreemd hem te horen zeggen, met een wat verstikte stem, maar duidelijk verstaanbaar ondanks de anonieme jammerklacht, die een eeuwigheid leek te duren: ‘Mijn God, red dit kind.’//

Na het sterven van Philippe Othon spreken Rieux en Paneloux. Rieux is geëmotioneerd. Er staat: //Nog steeds even driftig draaide Rieux zich om en gooide hem vierkant voor de voeten: ‘Paneloux, dit kind was in elk geval onschuldig! Dat weet u even goed als ik!’ //... Dan zegt Paneloux: //‘Weet u, dokter,’ zei hij bedroefd, ‘ik heb zojuist begrepen wat ik onder genade moet verstaan.'  Maar Rieux had zich weer achterover laten zakken op het bankje. Hij overwon zijn teruggekomen vermoeidheid en antwoordde, wat vriendelijker: ‘Ik niet, ik weet het. Maar ik wil daar niet met u over discussiëren. We werken samen aan een gemeenschappelijke taak die godslasteringen en gebeden te boven gaat. Dat is het enige wat telt.’//
<br>Try it out on <span class="blue">[[Muffin!]]</span>
<$checkbox field='v00' checked='ja' unchecked='nee'></$checkbox>
Interessant: de levensstijl van Sartre en De Beauvoir lijt nog steeds behoorlijk herkenbaar. Na de oorlg werd de filosofie van de vrijheid om zelf te kiezen mateloos populair onder de jongeren. De officiële instanties waren tegen. Niet alleen de Kerk (de werken van Sartre op de index) maar ook de marxisten (vrijheid van het individu paste niet in hun maatschappijopvatting). Raymond Aron bracht rond de jaarwisseling van 1932/1933 de fenomenologie van Husserl onder de aandacht van S en De B. Na een filosofiestudie in Berlijn. "Wie fenomenoloog wordt kan zelfs over deze cocktail nadenken en er filosofie van maken". Sartre zag hier een nieuwe filosofie in. Na de zomer (1933!) ging Sartre zelf naar Berlijn om er te studeren. De mens schept zichzelf (L'existence précède l'essence). Zelf je weg kiezen, ook bij het trolleyprobleem. Vrijheid is zowel opwindend als angstaanjagend. Sartre en De B leden een vrij leven: filosofie en leven zijn één. 

Kierkegaard: werd geboren in 1813 in Kopenhagen. Gebruikte het begrip existieel op een nieuwe manier. Een geboren luis in de pels. "Abstractie is desinteresse. Voor iemand die leeft is zijn bestaan van het allerhoogste belang". Cogito ergo sum? Nee, ik leef en ik kies ervoor en dat gaat vooraf aan elke uitspraak over mezelf. Dit bestaan is //mijn// bestaan. Sartre las Kierkegaard en ontleende aan hem het begrip existentie. We maken voortdurend keuzes. Dat brengt een doordringende angst met zich mee. De duizeligheid als je van een hoge rots naar beneden kijkt. Angst is het duizelen van de vrijheid. Antwoord van Kierkegaard: geloofssprong in de armen van God. Dat was niets voor Sartre en De Beauvoir. 

Nietzsche:

Existentialisme:
Existentialisten houden zich bezig met het *individuele, concrete menselijk bestaan.*
Ze vinden dat ons menselijk zijn fundamenteel verschilt van het zijn van alle andere dingen. Andere dingen zijn wat ze zijn, maar als mens ben ik wat ik kies op elk moment. Ik ben *vrij* -
en daarom ben ik *verantwoordelijk* voor alles wa ik doe, een duidelingwekken feit dat
*angst* veroorzaakt voor het menselijk bestaan zelf.
Anderzijds ben ik slechts vrij binnen bepaalde *situaties*, waaronder factoren zoals mijn iologische en psychische gesteldheid en de fysieke, historische en sociale variabelen van de wereld waarin ik ben 'geworpen'.
Maar ondank die beperkingen wil ik altijd meer: ik ben hartstochtelijk betrokken bij allerlei persoonlijke *projecten*.
Het menselijk bebstaan is dana ook *dubbelzinig*: beperkt door grenzen en tegelijk transcendent en uitdagend.
Een existentialist die ook *fenomenologisch* denkt hanteert geen abstracte regels voor het omgaan met deze consities, maar concentreert zich op het *beschrijven* van de beleefde ervaring en geeft weer hoe die zichzelf aan hem presenteert.
Door de ervaring nauwgezet te beschrijven hoopt hij of zij dit bestaan beter te begrijpen en ons aan te zetten tot een meer *authentiek* leven.
Merleau-Ponty was de meest revolutionaire van het stel. Zijn hoofdwerk: Fenomenologie van de waarneming (1945). Ook van belang voor de cognitieve psychologie. We bestaan door compromissen te sluiten met de wereld. Merleau-Ponty werd in 1945 hgl filosofie in Lyon. In 1949 werd hij hgl psychologie aan de Sorbonne waar hij Piaget opvolgde. Beïnvloed door de gestalttheorie. Mijn geschiedenis beperkt mij niet in mijn toegang tot de wereld, maar is juist mijn middel om ermee in contact te treden. Sartre wilde juist vrij zijn van banden en beperkingen. Merleau-Ponty balanceerde tussen de psychologie en de filosofie. <p>
Onze ervaring van de fenomenen komt tot ons via de sensitiviteit, beweeglijkheid en aandachtigheid van ons lichaam. Zelfs als we abstract denken maken we gebruik van beelden. Als fenomenen ons bereiken zijn ze al gevormd door onze verwachtingen gebaseerd op eerdere ervaringen. Dat ding op tafel zien we als een zak snoep, niet als een verzameling vormen en kleuren. De groep mannen op het veld is een voetbalteam. Een Rorschach vlek is een plaatje van iets. We hebben deze wijze van waarnemen in onze vroege jeugd geleerd. De ontwikkelingspsychologie is van essentieel belang voor de filosofie. Onze waarnemingen zijn nog altijd met de wereld van de kindertijd verbonden. Denk aan die zak snoep. We 'zien' de breekbaarheid en gladheid van het vensterglas. Onze waarneming is ook verbonden met onze propriocepsis. Mijn eigen lichaam is niet in object, het is mij. Propriocepsis uit zich ook in in een uitbreiding van mijn lichamelijk bewustzijn. De blinde die voelt met zijn stok. Het bestaan van deze wonderen wordt pas duidelijk als het mis gaat. Zie Oliver Sacks. Ons sociale bestaan speelt ook een rol. We gedijen niet zonder anderen. Denk aan baby's die mensen uit hun omgeving imiteren. Bij de geboorte glijden we een wereld in waarin we totaal worden ondergedompeld, zo lang we leven. Bewustzijn is een 'plooi' in de werkelijkheid. Die plooi is er een poosje maar wordt uiteindelijk weer gladgestreken. Naast het beeld van het gevouwen kleed ziet Merleau-Ponty het bewustzijn als chiasme, een gekruiste en in elkaar gestrengelde vorm. Het grijpen is gegrepen. Ik kan de dingen zien maar kan ook zelf worden gezien. Ik raak iets aan maar dat ding raakt ook mij aan. Ik sta niet buiten de wereld zoals een kat die naar een aquarium kijkt. De zee en het strand. Het gaat om de belangrijkste fenomenologische regel: de terugkeer naar de dingen zelf en die beschrijven. Zoals een schilder schildert. Het bewustzijn is continu verbaasd over zichzelf.
!!! Waarin de existentialisten ruzie maken over de toekomst

Na Hiroshima vrees voor een derde wereldoorlog. Sartre: we beschikken nu over de macht om onszelf te vernietigen en we moeten er elke dag voor kiezen om te leven. Camus: de mensheid moet kiezen tussen collectieve zelfmoord en een intelligenter gebruik van de techniek - tussen hel en rede. 
Edmund Husserl bekleedde in Freburg een leerstoel filosofie sinds 1916. In 1928 met emeritaat. Freiburg de staat van de fenomenologie. Emmanuel Levinas, briljante jonge Joodse Litouwer, was een van zijn leerlingen. Fenomenologie als nieuw levensideaal, bijna een nieuwe religie. Sartre las Husserls werk in Berlijn. Hij heeft Husserl zelf nooitontnoet. Zowel Husserl als zijn vrouw hadden het Jodendom verlaten en waren protestants geworden. Ze kregen drie kinderen. Slechts weinige mensen, onder wie leerling Edith Stein, konden zijn handschrift lezen. Wat is fenomenologie? Meer een methode dan een theorie. Fenomenen beschrijven. Geen vooroordelen, terug naar het beschrijven van de dingen zelf. Het gaat dus steeds om beschrijven, de dingen zoals ze zich voordoen. Fenomenen: elk ding, object of gebeuren zoals het zichelf aan mij voordoet in de ervaring. Achter de zuiver subjectieve ervaring van het fenomeen zit geen objectieve werkelijkheid. Alle abstracte vooronderstellingen en emotionele associaties moeten opzij gezet worden. De fenomenologische reductie. Het resultaat is een enorme bevrijding. De wijnproeverij is een goed voorbeeld. Hartverscheurende muziek kan dank zij de fenomenologie rechtstreeks worden ervaren. Als je naar Ralph Vaugh Williams' *The lark ascending* luistert, dan stijgt mijn ziel op. Dat is wat muziek is. Denk ook aan religieuze en mystieke ervaringen. De fenomenologie stelt ons in staat om 'fantoompijn' te analyseren. Zie Sacks' *En been om op te staan*. Het gaat erom hoe iemand zijn of haar wereld ervaart, niet hoe die echt is. Een formele methode om toegang te krijgen tot de menselijke ervaring. De fenomenologie bevrijdt ons vn politieke en andere ideologieën. Dat maakt de fenomenologie verrassend revolutionair. Psychologie: we zoeken niet naar wat de geest is maar wat de geest doet. Brentano: het gaat om de intenties, de intentionaliteit van de geest, datgene waarnaar de geest zich uitstrekt. Het is onnatuurlijk om mentaal niet actief te zijn, om niet aan iets te denken. Onze geest *is* gerichtheid op iets anders. Deze drie eenvoudige ideeën - beschrijving, fenomeen, intentionaliteit - verschaften de assistenten van Husserl genoeg inspiratie om decennialang onderzoek te doen. De fenemenologie gaf Sartre de vrijheid om zo avontuurlijk te schrijven over gewone dingen. Sartre stelde dat intentionaliteit de geesst naar buiten duwt, naar de wereld en de dingen. Dat geeft de geest een enorme vrijheid. De dingen hebben geen vastgelegde 'inwendige aard' die ons kan tegenhouden. We vliegen naar buiten, naar de boom, maar blijven ook buiten de boom, omdat die me ontwijkt en weerstaat. Bewustzijn wordt gezuiverd en helder als en sterke windvlaag. Daarbinnen is niets meer, behalve een impuls om naar buiten te gaan. Voor Sartre houden we op te bestaan als we onszelf opsuiten ' in een warme behaaglijke kamer met de luiken dicht'. We lopen op stoffige wegen, dat is de definitie van wat we zijn. Husserl zelf keerde terug naar soort filosofisch idealisme - de buitenwereld bestaat niet, alles is een subjectieve hallucinatie. Een verlangen naar zekerheid. Bracht hem dicht bij Descartes: Cogito ergo sum, een introspectief beginpunt. Augustinus: Zoek niet buiten jezelf; keer je naar binnen. De waarheid huist in de innerlijke mens. Later ging Husserl zich weer richten op de wereld waarin de ervaring plaatsvindt.

[] test
Tegenover de fenomenologen plaatst Heidegger het zijn van de dingen. Ze zijn er, buiten je, in je, boven je, onder je, tegen je aanschurend. Keer terug naar de dingen zelf en herinner je je eigen zijn! Geïnspireerd door Brentano's dissertatie over de verschillende betekenissen van het woord 'zijn' bij Aristoteles. Heidegger had geen of hoogstens een merkwaardig gevoel voor humor. Hij had een 'ondoordringbare' uitstraling, dat gaf hem een betoverende greep op studenten. Je wist nooit helemaal wat je aan hem had, dus je hing aan zijn lippen. De kleine magiër uit Messkirch. Daniel Dennett in het satirische *Philosophical Lexicon*: een heidegger is een zwaar instrument dat door dikke substanties heen boort, als in de zin: 'Het ligt zo diep verborgen dat we een heidegger nodig hebben'. Bij Heidegger is het zijn zelf iets anders dan alle zijnden, dingen in de wereld. Eén zijnde heeft een duidelijker 'zijn' dan alle andere entiteiten en dat ben ik zelf. Ik kan mij verwonderen over het zijn van de dingen. Ik ben zelf de weg naar het antwoord op de vraag wat 'zijn' is. De vraag moet vanuit de filosofie worden gesteld en niet vanuit de psychologie. We hebben niets aan hersengolfjes of antwoorden op vragenlijsten. Heidegger noemt 'ik' of de mens niet mens, mensheid, geest, ziel of bewustzijn. Levert allemaal verkeerde associaties op. Nee, liever: Dasein, erzijn. Herken je niet te snel in wat Heidegger beweert, blijf vragen. Heidegger wilde niet begrepen maar ervaren worden (Steiner). Je kunt Heidegger zien als experimentele schrijver of dichter.
Begin jaren 30: grote armoede in Duitsland. Dreiging van een nieuwe oorlog. Grote ontevredenheid over de socialistische regering, de Joden en de communisten. De rally's van de nazi's oefenden grote aantrekkingskracht uit. Op 30 januari 1933 werd Hitler tot kanselier benoemd. Grote overwinning bij de verkiezingen van 5 maart. Op 14 juli werden alle politieke partijen behalve de NSDAP verboden. Sartre in Berlijn merkte van dit alles niets. In juni 34 ging hij terug naar Parijs. Toen wel angst en ongeloof. Heidiger (in Zijn en Tijd): als de mens angstig is, dan voelt hij zich ontheemd (unheimlich) en dan stort de alledaagse vertrouwdheid van zijn wereld ineen. De beter opgeleiden dachten dat het succes van Hitler niet lang zou duren. Ook Karl Jaspers dacht zo. Bruno Bettelheim: in die tijd wilden weinig mensen hun leven riskeren voor zoiets onbelangrijks als de groet met de opgeheven arm, en toch werd daarmee de kracht van het verzet geboden. Arendt: de fragmentatie van het moderne leven maakt mensen gevoeliger voor de invloed van demagogen waardoor totalitaire bewegingen meer kans krijgen. (Totalitarisme). We tonen een gebrek aan verbeeldingskracht en aandacht als we niet adequaat reageren als de tijd daarom vraagt. De ontkenning van het gebod: Denk! van Heidegger. Heidegger: het erzijn heeft de neiging om onder de invloed te raken van 'het men' (das Man), een onpersoonlijke identiteit die ons berooft van de vrijheid om zelf na te denken. Authentiek leven vereist dat je je verzet tegen de invloed daarvan. Het men zit in jezelf, het men-zelf. Eigenlijk kennen we de stem daarvan beter dan de stem van ons eigen zelf, de stem van ons geweten. We moeten weer terug naar ons authentieke zelf. Wees jezelf! Ontwaak, kom in beweging, doe iets, maak een keuze. In april 1933 werd Heidegger lid van de NSDAP en rector van de universiteit van Freiburg. Hij werd een overtuigde nazi, zoals ook bleek uit zijn notitieboeken, de Schwarzen Hefte, die in 2014 werden gepubliceerd. Husserl raakte zijn toegang tot de universitaire faciliteiten kwijt. Ook Karl Jaspers zag het met verbijstering aan. Goede vriend en geestverwant van Heidegger. Op 14 april 1934 nam Heidegger ontslag als rector. Vanaf dat moment beweerde hij niets meer met het nazisme te maken te hebben. H's commentaar in 1945: Dummheit. Maar de waarheid was dat Heidegger sympathiek bleef staan tegenover het nazisme. Hij bleef zijn nazi-speldje dragen. Een zekere dubbelzinnigheid in Heideggers karakter. Staat H's filosofie los van zijn persoonlijke en politieke fouten? Eigenlijk is elke kerngedachte op zichzelf al dubbelzinnig. Sartre: H. heeft geen karakter, dat is het probleem. Zoiets schreef Arendt ook aan Jaspers. Geleidelijk aan ontstaat er een ommekeer, een *Kehre* in H's denken. Weg van de vastbeslotenheid en de beslistheid naar een meer ontvankelijke, poëtische manier van denken. Terug naar Todtnauberg, de bossen. Waar elk ding eenzaam en langzaam wordt. Nazikitsch van de allerergste soort. Arendt vluchtte met haar moeder. Een bevriende familie had een huisje op de grens van Duitsland en Tsjecho-Slowakije. Ze gingen er eten en namen de buitendeur naar Tsjechië. Vandaar via Genève en Parijs naar New York.

Jaren 30: politieke crisis in Europa. In 1936 in Frankrijk: alles beter dan oorlog, zelfs fascisme in Frankrijk. De Beauvoir vond dat ook maar Sartre niet. Hij wilde niet gedwongen worden zijn eigen manuscripten op te eten. Iedereen had visioenen van dreigende rampen. Sartre krijgt meer belangstelling voor mensen die worden meegesleept door historische krachten, terwijl ze toch vrije individuen blijven. Sartre duikt opnieuw in Heidegger, een filosofie als de stoïcijnen en de epicuristen die je leert om te leven. Het hele Husserl archief verhuist naar Leuven, evenals Malvine Husserl. Merleau-Ponty dook in de manuscripten en ontdekte dat Husserl weer van zijn idealisme was afgestapt. Meer aandacht voor de Umwelt waarin ieder mens leeft. Lichaam, levenswereld, propriocepsis en socile contexten. Invloeden van Heidegger? Toch nog steeds grote verschillen. Heidegger wilde terug naar het verloren paradijs. Husserl niet. Hij zag meer in de ontmoeting van culturen door reizen, migratie en handel. Daar waren de oude Grieken juist goed in. Heidegger keerde zich naar binnen, Husserl juist naar buiten. Tegen het mysticisme, de cultus van het zuiver lokale. Voor de geest van de verlichting, de vrije wetenschap. De ontmoeting met vreemden kan je perspectief totaal veranderen (Gabriel Marcel). Zo veranderde Merleau-Ponty's filosofie door het contact met Husserls manuscripten. Een rijke filosofie van belichaming en sociale ervaring. Lang leve de Leuvense pater franciscaan Herman van Breda die de nalatenschap van Husserl heeft gered.
In september 1939 startte de schemeroorlog, de phony war, de drôle de guerre. Een gespannen sfeer, maar er gebeurde weinig. Geen gasaanvallen of bombardementen. Camus was ook naar Parijs gekomen. Hij vond alles vreemd, buitenissig, zonder toekomst. Hij schreef De Vreedeling, de Mythe van Sisyphus en Caligula, drie absurden, over de zinloosheid en absurditeit van het menselijk bestaan. Sartre, in de Elzas gemobiliseerd als meteoroloog, schreef 12 uur per dag aan projecten. *Het zijn en het Niet* en *De Wegen der Vrijheid*. In mei 40 was het gedaan. Duitsland viel Nederland, België en Frankrijk binnen. Sartre werd krijgsgevangene. De Beauvoir keerde terug naar Parijs, ging weer lesgeven en tekende een Ariërverklaring. Ze ging een tulband dragen. De collaborerende regering sloeg burgerlijke vermaningen uit en dreigde met geweld. Burgerlijke waarden moeten niet worden vertrouwd. Kierkegaard (nadruk op vrijheid een keuze) en Hegel (geschiedenis vindt plaats op een epische schaal waarbij individuen worden opgeslokt) waren haar inspiratiebronnen. Sartre zat in Triër gevangen en schreef aan zijn grootste filosofische werk: l'Être et le Néant. Sartre wist te ontsnappen. Dit zijn slechte ogen kreeg hij een consult voor de oogarts en kon hij zo het kamp uitlopen. Hij had de lichamelijke nabijheid van de andere gevangenen in het kamp goed verdragen. Dat was een openbaring voor hem. Hij moest erg wennen aan het leven in Parijs. Hij wilde iets doen en richtte een verzetsgroep op. En van de leden, Jean Paulhan, liet kleine verzetsgedichten achter op cafétafels. De cafés bleven belangrijke ontmoetingsplaatsen. Ze speelden een hoofdrol in het sociale leven van Sartre en De Beauvoir. Ze ontmoeten Jean Genet en Albert Camus. De laatste in 1943 in het theater. Ze kenden elkaar al, hadden al over elkaars werk geschreven. De Beauvoir: hij was eenvoudig en vrolijk. Camus' moeder was ongeletterd en doof, zijn grootmoeder ongeletterd en gewelddadig. Zijn jeugd in armoede heeft hem getekend. Camus bleef zich in Parijs een vreemde voelen. Hij miste de zon. Meursault drukt ook de schijnbare emotieloosheid met daaronder de afgrond uit van het Parijs in de oorlog. L'Étranger kwam in 1942 uit, net als *De Mythe van Sisyphus*. Waarin hij laat zien dat het zelfs binnen de grenzen van het nihilisme mogelijk is om het nihilisme te overschrijden. We zien het fundamentele probleem van het leven niet omdat we maar doorgaan en niet nadenken. Sterke invloed van Kierkegaard, zijn essay uit 1843 *Vrees en beven*. Het offer van Abraham. Wat Kierkegaard verbaast is de manier waarop Abraham een Isaak in staat zijn om terug te keren naar hun gewone leven, na het radicale afscheid. Abraham geloofde nog altijd in de liefde voor zijn zoon. Hoe leef je verder als de zin verloren is gegaan? Maak een onmogelijke sprong, blijf kalm en ga door. Maar: voor Sartre en De Beauvoir was het leven niet absurd. Het leven is vol betekenis, voor ieder anders. Sartre stelde dat ervaring altijd geladen met betekenis tot ons komt. We zien een voetbalwedstrijd, niet en sterk rondtrekkende mannen. We kunnen de betekenis wel uit het oog verliezen, als we geen greep meer hebben op de dingen. Bij dit soort breuken hapert de intentionaliteit, maar we zien geen grotere waarheid. Het leven ziet er pas pointillistisch uit als er iets mis gaat. Voor Sartre is het ontwaakte individu geëngageerd met de wereld bezig, in het volste vertrouwen dat het iets te betekenen heeft. Zo ben je helemaal vrij. Vrijheid is het grote thema van Sartre's filosofie. [182] Het Zijn en het Niet (1943) is een knipoog naar Heideggers Zijn en Tijd. Ook niet afgemaakt. Vrijheid jaagt ons angst aan, maar we kunnen er niet aan ontkomen omdat we vrijheid *zijn*. Al zijn in het gebieden, het *pour-soi*, is vrij, dat zij wij. Het menselijk bewustzijn. Daarnaast het *en-soi*, al het andere, incl. de dieren. Het *pour-soi* is niets, een luchtbel temidden van het zijn. Maar dan wel actief en met intentionaliteit. Bewustzijn is gerichtheid. Ik ben niet, dus ik ben vrij. Ik ben wat ik besluit te zijn. Angst, de doordringende onvrede met jezelf en je het bestaan. Kierkegaard: duizeligheid, hoogtevrees, de angst om van de rots te springen. Keuzes zijn nodig maar kunnen me niet binden. Denk aan de gokverslaafde die langs het casino loopt. We doen dingen, leggen onszelf beperkingen op, projecten, balustrades tegen de angst. De ober die speelt dat hij kelner is. Kwade trouw maakt het leven leefbaar. Kwade trouw maakt iemand van niemand. Te goeder trouw zijn is geen excuses zoeken voor jezelf. Keuzes maken doe je in een situatie, een facticiteit. Juist dankzij de dingen kunnen we vrij zijn. Zelfs het vooruitzicht van de dood kan me niet beroven van mijn existentiële vrijheid. De oude stoïsche gedachte: **ik kan niet kiezen wat er gebeurt maar wel wat ik er in gedachten van maak.** We moeten gepassioneerd en hartstochtelijk betrokken blijven bij wat er met ons gebeurt en bij wat we kunnen bereiken. We moeten niet denken dat vrijheid ooit gemakkelijk zal zijn. *De Vliegen*: Orestes doodt zijn eigen moeder en Aegisthus, wreekt zijn vader een bevrijdt Argos. Geen schaamte meer maar wel schuld. Vrijheid. De Beauvoir: het menselijk bestaan vraagt om transcendentie, buiten jezelf treden, niet om immanentie, passief in jezelf blijven. Wat zegt Camus in La Peste? Rieux accepteert het lot (zouden Sartre en De Beauvoir nooit doen) en probeert de schade zoveel mogelijk te beperken. Relativering van heldendom en vastbeslotenheid. Na de bevrijding in augustus 44 koos Camus tegen de doodstraf, Sartre en De Beauvoir vonden dat er ferme beslissingen genomen moesten worden. Het schisma over de vraag wanneer geweld geoorloofd is. Sartre en De Beauvoir stelden dat de oorlog hen had veranderd. Een minder sterk individualistisch vrijheidsconcept. Een meer marxistisch georiënteerde visie, waar het leven een doel had en sociaal was. Je moet vuile handen maken. Ga aan de slag en doe iets! Schrijven van politiek geëngageerde literatuur. Les Temps Modernes. Veel opwinding en vrees. De wereld lag in stukken, daardoor leek alles mogelijk. Er waren nieuwe filosofen nodig: de existentialisten. Sartres lezing in oktober 45 baarde veel opzien. Boris Vian leider van de feestafdeling van het existentialisme. Alles in Parijs, maar met een geweldige fascinatie voor alles wat Amerikaans was, vooral de jazz. Ook de Amerikaanse litteratuur: Hemingway, Faulkner, Steinbeck, Dos Passos. Sartre, De Beauvoir en Camus werden uitgenodigd om naar de VS te komen wat ze deden. Sartre in 1945. Hij sprak slecht Engels, maar deed wel een nieuwe minnares op. Camus in 1946. Voelde zich niet op zijn gemak, behalve in de vervallen wijk Bowery, net Europa. De Beauvoir in 1947. Ook zij ontmoette een minnaar. De VS: de toekomst, meer zelfvertrouwen dan de Sovjet-Unie. Alle drie verafschuwden ze de rassenongelijkheid. In Parijs werden zwarte musici . schrijvers op handen gedragen.
Duitsland 1945: Puinhopen. Ontstellend veel mensen zwierven rond, 12 miljoen verdreven Duitsers uit Centraal- en Oost-Europese landen. Heidegger kreeg een verbod om te doceren. Hij schrijft over de helende kracht van het uitgestrekte bos. Bevrijding van de verwoesting die de aarde al eeuwen aantast. Ook de verwoesting van kapitalisme en communisme. Wachten... Heidegger kreeg een inzinking. In 1950 mocht hij weer doceren. Zijn zoons keerden terug uit krijgsgevangenschap in Rusland. Heidegger maakte een ommekeer door. Het ging me om aandachtig en ontvankelijk zijn, wachten en open staan. Contra de moderne techniek die van de aarde opeist wat are van haar willen. Geldt ook voor de landbouw. De mens is een monster geworden die de wereld beveelt als een militair. De dingen worden bestelbaar en zijn geen Gegenstand meer. De mensheid verzwelgt zichzelf. Machines die ons de baas worden, atoombommen. We moeten terug naar de oorsprong van de geschiedenis, om daar de vernieuwing te vinden. Heidegger predikt gelatenheid, de dingen in hun waarde laten. Zie de poëzie, een manier van zijn. De dingen in staat stellen om zichzelf te tonen. Ab herten in het bos. Paul Cézanne: Het landschap denkt zich in mij en ik ben zijn bewustzijn. Heidegger: door ons vindt het wonder plaats. We zijn een open ruimte in het bos. Breuk met Jaspers. Ook met Levinas, die een andere kant uit ging. De relatie tussen het zelf en de ander wordt het fundament van zijn filosofie. Mede op basis van Buber. Mensen kijken elkaar aan: communicatie, morele verwachting. Maar jij blijft jij. Relaties zijn fundament van ons bestaan. Breuk met Simone Weil. Ze overleed in augustus 43 in de VS aan o.a. anorexia. Murdoch bewonderde Weil. Meer ethiek in de filosofie, zelf bij Sartre. Sartre en Heidegger, dat werd niks, ook niet na de oorlog. Heidegger noemde Sartre's l'Être et le Néant Dreck. Sartre noemde Heidegger de Oude Man uit de Bergen
De Tweede Sekse van De Beauvoir in een experiment in het toegepaste existentialisme, het existentialisme toegepast op gewone mensen. Twee verhalen: de patriarchale geschiedenis van de mensheid en de individuele geschiedenis van de vrouw van geboorte tot ouderdom. Camus vond dat ze de Franse man ridiculiseerde. Werd snel in het Engels vertaald met groot effect, het invloedrijkste werk van de existentialistische beweging. Diepe existentiële verschillen tussen mannen en vrouwen. Er bestaan volgens De Beauvoir veel mythen over de vrouw. Theorieën als korsten om de fenomenen (Husserl). Sprookjes, de man als de prins en de vrouw als Doornroosje. Meisjes leren om zich bescheiden en beschaafd te gedragen. De wereld is voor de vrouw niet beschikbaar maar wordt beheerst door het lot. De aangeleerde neiging om zichzelf te zien als "ander" ipv als transcendent subject. Hegel: de meester ziet zichzelf als meester en de knecht ziet zichzelf als knecht. De knecht adopteert het gezichtspunt van de meester en ziet hem als subject en zichzelf als object, een vervreemd perspectief. Deze structuur stort pas in als de knecht ontwaakt, en rebelleert en tot bewustzijn komt. Ook Sartre vond de meester-knechtdialectiek van Hegel interessant. Stel ik sta in de gang van een hotel en gluur door een sleutelgat. Ben volledig geconcentreerd. Dan komt er opeens iemand aan. Ik word me van mezelf bewust als gluurder. Mijn glurende blik wordt een bekeken blik. Mijn transcendentie - mijn vermogen om mezelf te verliezen in wat ik waarneem - wordt getranscendeerd door de transcendentie van de ander. De ander drukt mij een stempel op in plaats van mij vrij te laten. Ik probeer dat te controleren door net te doen of ik mijn schoenveter vastmaak. Het toneelstuk Met gesloten deuren (Huis Clos) gaat hierover. Drie mensen in een kamer: soldaat, lesbienne, flirtende dame. Bekijken elkaar met een veroordelende blik. Ze zijn in de hel. "De hel, dat zijn de anderen." Na de dood bevriezen we in de ogen van anderen. De vrijheid om controle te houden over de indruk die we wekken verliezen we in de dood. Volgens Iris Murdoch maakt Sartre van liefde een 'strijd tussen twee hypnotiseurs in een afgesloten kamer. De Beauvoir: menselijke relaties bevatten verschillen in status en rol. Sartre negeerde de verschillen tussen mannen en vrouwen. Beide seksen nemen de man als maatstaf. Zie de taal. Vrouwen zitten vaak voor de spiegel: ze zien zichzelf als object. Ook als object van sexuele begeerte. Vrouwen leven dus in kwade trouw, ze denken dat ze objecten zijn. Ze identificeren zich met hun immanente beeld ipv met hun transcendente bewustzijn waarin ze vrij zijn voor-zichzelf. (Denk aan de ober). Maar de subjectiviteit in de vrouw wil in het centrum staan. Een innerlijke strijd in elke vrouw. De Beauvoir beschouwt het probleem hoe je vrouw wordt als de existentialistische vraag bij uitstek. De Beauvoir overtroefde Sartre met De Tweede Sekse. Ze liet zien hoe moeilijk het is om je uit je historisch bepaalde situatie los te maken. Maar ze twijfelde er niet aan dat we ondanks alles existentieel vrij zijn. Net als de werken van Darwin, Marx en Freud legde De Tweede Sekse culturele mythen bloot. Sartre was geïnteresseerd in de biografie. Een focus op de vroege levensjaren, invloed van Freud, op zoek naar de oerscène. Zie zijn biografie van Jean Genet, drie jaar na De Tweede Sekse. Sartre ontmoette Genet in café de Flore in de oorlogsjaren. Genet steunde outsiders, verliezers. Hij steunde de studenten in opstand, maar "Als ze ooit de macht krijgen, zal ik me tegen hen keren". Sartre waardeerde dat. De heilige Genet. Hoe komt het dat Genet een dichter is geworden? Als tienjarige rebel stal het adoptiekind kleine voorwerpen van zijn gezin en de buren. Op heterdaad betrapt. "Je bent een dief!" Genet bevroor in de blik van de ander. Hij werd een object met een negatief etiket. Genet nam dat etiket over, hij werd een dief. Vergelijkbaar met de beweging die De Beauvoir bij vrouwen waarnam. Genet ontsnapte door zich zijn vervreemding eigen te maken, hij eigende zich het imago van dief, vagebond, homoseksueel en prostitué toe. De vernedering werd verheven tot het sublieme. Gevangenissen werden tempels, moorddadige gevangenen werd object van de grootste tederheid. Daarom noemt Sartre hem een heilige. Onderdrukking getransformeerd tot vrijheid.
Ostjude: Geert Mak schrijft in een voorwoord bij Joden op Drift: de migratie van de Joden uit Oost-Europa werd aan het eind van 19e eeuw deels in gang gezet door de pogroms in het tsaristische rijk, deels ook door het uitzichtloze bestaan in de talloze joodse dorpen en stadjes, overal in Polen, Roemenië en Rusland. Men emigreerde naar Wenen, Parijs, Amsterdam, en verder naar New York en Chicago. Roth zegt er zelf over: De Oost-Europese jood hunkert naar het Westen. Hij denkt dat Westen vrijheid betekent, een kans om te werken, op ontwikkeling van talenten, op rechtvaardigheid en vrijheid van geest.... Velen keren terug. Nog meer blijven er onderweg steken. De joden uit het Oosten hebben nergens een vaderland, maar op elke begraafplaats hebben ze graven. 

Het zoeken naar een vaderland werd actueel na het uiteenvallen van de Oostenrijks-Hongaarse monarchie. Allerwegen werd in Europa aan het eind van de Eerste Wereldoorlog geroepen om zelfbeschikking voor de afzonderlijke volken. Die kwam er ook, het rijk viel uiteen. Alleen voor de joden was er geen nieuw vaderland in Europa. Zij werden ballingen. Dat is ook de levensgeschiedenis van Roth zelf. En dat is het hoofdthema van al zijn teksten, essays en romans. 
Camus wordt gezien als bestrijder van het idee dat hoop doet leven. De hoop dat er misschien wél een betekenis in het leven is. De hoop dat er toch een goede vader is, die ons gaat belonen als we goed doen. Die ons bestraffend toespreekt als we kwaad doen. Het idee dat er iemand over ons waakt. Het idee van een hiernamaals, waar er geen angst is, geen pijn en geen verdriet. En waar we allemaal eeuwig zullen leven. Volgens Camus is dat levensgevaarljik. Dan leef je het toekomstige leven en niet het leven nu. Hoop leidt je aandacht af van de werkelijkheid, het sust je in slaap, het is opium. Terwijl we ons juist bewust moeten worden van de onontkoombare werkelijkheid, lering moeten trekken uit onze ervaringen. <p>
Aan het eind van zijn eerste preek stelde Paneloux dat hij //"Nooit [...] zo sterk als nu de hand van God gevoeld [had] en de hoop die het christendom alle mensen bood. Dwars tegen alle hoop in hoopte hij dat onze stadgenoten, ondanks de vreselijke tijden en het kermen van de stervenden, het enige christelijke woord tot de hemel zouden richten, het woord liefde. God zou zorgen voor de rest."// Dat is een vorm van hoop waar tegen Camus zich verzet. Filosofische zelfmoord noemt hij dat. Religie, nationalisme, racisme, sexisme. Doppen in je oren stoppen, velen om je heen doen dat.

"""Kwaad kan het nooit, het begeren
naar wat ons voortdurend ontsnapt
Alleen het verzuurd begeren
ceremonieel opgelapt
kan ons leven bezeren

Verander nu gauw
van kleren
Verzaak aan rekeningen
Vertrouw op haperingen

Uit Gedichten 1948 - 1993. Amsterdam: De Bezige Bij, 1994
"""Later, mijn jongetje, word je een man,
later reikhals je als een giraffe naar het hoe en het waarom
Men zal je stempelen als bagage
Men zal je kwetsen om je wens en je droom
En jij zal trachten eens en voorgoed te fotograferen
het hoe en het waarom van de vrouw
die kantelt in je lakens
die zingt naarmate je ontdubbelt in haar vel:
En nog later, jongetje, wordt
je leven een plakboek.
Maar nog lange niet, nog lange niet.

Uit: Gedichten 1948 - 1993. Amsterdam, 1994.
Onderzoek naar de stroma die de tumorcellen van alvleesklierkanker omgeeft. Een vezelachtige structuur die de tumorcellen onbereikbaar maakt voor cytostatica. Het gaat in het bijzonder om bepaalde immuuncellen die de afwerende werking van andere immuuncellen onderdrukken. Bepaalde suikerstructuren op de tumorcellen bevorderen de ontwikkeling van monocyten die uitgroeien tot immuuncellen die de werking van andere immuuncellen onderdrukken. Dit onderzoek laat zien dat ook cellen uit de stroma de ontwikkeling van de verdachte immuuncellen stimuleren. 

Goed stuk onderzoek, van groot wetenschappelijk en praktisch belang. Wat je mist is een schets van de context. Op internet vind je dat er andere methoden worden onderzocht om de stroma te reduceren, met succes. Dat plaatst het voorgedragen onderzoek in een bepaald perspectief. Dat perspectief mis nu.

Maatschappelijk belang 4
Wetenschappelijk belang 4
Leesbaarheid 3
Diversiteit 1
Totaal 12
"""
‘Ik versta onder liefde:
de duizenden nuances van vriendelijkheid en vriendschap,
van hartstocht en hoofsheid,
van bedachtzame eerbied en mededogen,
waarmee mensen elkaar bejegenen.
Ik versta onder liefde
ook de wijsheid en de wetenschap,
fantasie en volharding,
waarmee de aarde wordt opgebouwd,
steeds weer,
tegen alle afbraak in.’
{{[[1. Loneliness]] [[2. The Limits of Self-Help]] [[3. Unsocial Media]]  [[4. The Fragile Family]]}}
"""Zeven maal om de aarde gaan,
als het zou moeten op handen en voeten;
zevenmaal om die ene te groeten
die daar lachend te wachten zou staan.
Zeven maal om de aarde gaan
 
Zeven maal over de zeeën te gaan,
schraal in de kleren, wat zou het mij deren,
kon uit de dood ik die ene doen keren.
Zeven maal over de zeeën gaan -
zeven maal om met z'n tweeën te staan.
"""samen lopen we
in het licht
van de ondergaande zon
mijn kleine zoon en ik

hij legt zijn hand
in mijn hand en vraagt:
'maakt God de zon
morgen wakker
en schijnt hij dan weer
voor iedereen?'

'voor iedereen'
zeg ik en ik weet
dat het eens zo
geweest moet zijn

voor Auschwitz

'dag zon' zingt hij:
'dag God, tot morgen'

dan wacht hij
vol vertrouwen
op de nieuwe dag
{{[[5. From 'We' to 'I']] [[6. Markets without Morals]] [[10. Time and Consequence]]}}

https://techpulse.be/nieuws/134266/tien-gekke-geluidsillusies/

<html><iframe width="560" height="315" src="https://www.youtube.com/embed/XS7IAcsRcgA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>

https://blog.donders.ru.nl/?p=2234

Heel veel illusies dus! Via Diana Deutsch kunnen we een heel verhaal maken. 
https://www.dbnl.org/tekst/_nie010197501_01/_nie010197501_01_0074.php

https://www.paulvangulick.com/post/onstoffelijk
<$reveal state="$:/state/sidebar" type="nomatch" text="no">
<$button set="$:/state/sidebar" setTo="no" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no">
<$button set="$:/state/sidebar" setTo="yes" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-left}}</$button>
</$reveal>
Inhoud tiddler view-taak (tag $:/tags/ViewTemplate 

<$list filter="[is[current]tag[#taak]]">
<br>Status:
<$select field="status"><$list filter="[tag[#status]]"><option>{{!!title}}</option></$list></$select><br><br>
Inhoud:
<$edit-text field="wat" tag="textarea" class="tw-edit-texteditor myTextEdit"/><br>
<$transclude tiddler="$:/core/ui/EditTemplate/tags">
</$list>
\define checklist()
<$checkbox tiddler="$:/_cpa/Data/todos" tag="todo:$(currentTiddler)$">
<$link to="$(currentTiddler)$" tooltip="Create new detailed task">
$(currentTiddler)$
</$link>
</$checkbox>
\end
<$macrocall $name="checklist" />
<$action-sendmessage
     $message="tm-edit-text-operation"
     $param="wrap-selection"
     prefix=<<now "|^0hh:0mm|">>
     suffix="|"
/>
Galenson distinguished seekers, or experimentalists, from finders, or conceptual innovators. Seekers have more deductive, data-driven, trial-and error approaches, where the process of elaborating an idea is more important than the basic concept. Seekers often start working on a project without clearly defined goals and do not know in advance what the final product will be like. They show considerable continuity with tradition and in their work, as they repeatedly tackle a few themes. Building on this foundation, they develop skills and typically peak late in their careers. In contrast, finders have more deductive, theory-driven approaches, where the basic concept is more important than its execution or elaboration. Finders start with clearly defined goals and largely know in advance what the end product will be like. These revolutionaries show less reverence for tradition, prize originality, and work on a multiplicity of problems, each rather independent from the others. 

Gombrich zelf: 


<<<
Creative articulation can take two almost opposite directions. The artist can strain the medium in an effort to extend its range and thus to discover novel possibilities at the extremes ... . But he can also make discoveries by refining his medium, by introducing a more subtle calibration.. . . More dramatic innovations are more easily described and appreciated than their miracles of refining ... [this has] introduced a bias into the discussion of artistic achievements which is far from healthy. (pp. 206–207)
<<<


Nogmaals:


<<<
Problems in the realm of art .. . may ... be recalcitrant. Yet there is no intrinsic reason here why the solution should always elude the artist bent on ordering a large but limited number of elements which may and do fall into place and come right ... Such an artist ... works within the medium that is pre-shaped by tradition. He has before him the benefit of countless experiments in creating orders of a similar kind and value. Moreover, in setting out to create another such ordered and meaningful arrangement of tones, he will, during the process of creation, discover new and unintended relationship which his watchful mind can exploit and follow up, till the richness and complexity of the work transcends in fact any configuration that could be planned from scratch ... . Strangely enough our age ... has yet fallen for a conception of creativity in art which sees only the individual creator and his state of mind. It forgets that even Bach, great as he was, could not have invented that marvelous medium that is the Western system of music—or if it does not forget it, it tends to regret such traditionalism and to imply that every artist should invent his own system. (Gombrich, 1979a, p. 129)
<<<

Deze passage laat goed Gombrich' voorkeur voor de seeker-rol zien: de noodzaak van geleidelijkheid en traditie, een afkeer van originaliteit als doel op zichzelf, kritisch oordeel, en de uitwerking van ideeën in creativiteit. 
{{Artistic Preferences||dt}}
Dimensies van ongemak:<p>

1: Politiek <p>
2: Persoonlijk geluk. It raises a fundamental question about where we are going in the market-economic, liberal democratic West. We may have won the battle for life and liberty, but the pursuit of happiness still eludes us. We keep chasing it, but it keeps running faster than we can. <p>
3: De economie van de ongelijkheid. De alsmaar groeiende kloof. In 1965 kregen de bazen 20 keer zoveel betaald als de arbeiders. Vandaag de dag 312 keer zoveel. Former International Monetary Fund economist Raghuram Rajan, in his book The Third Pillar (2019), argues that the human innovation. The result, as we are seeing, is social unrest, violence and populism. Rajan argues that markets must re-establish their connection with the web of human relations and become socio-economics.<p>
4: Aanval op het vrije woord op Amerikaanse en Britse Universiteiten. To an ever greater extent, mob rule is taking the place of what was once the sacred mission of the university, namely the collaborative pursuit of truth. The idea that certain views, and people holding them, might be banned merely because they might upset someone, which is what is happening in many academic circles today, is astonishing. It is the new intolerance. Afschrikwekkend voorbeeld: de weigering om Jordan Peterson een research fellowship aan de Cambridge University Divinity School te verlenen omdat hij op de foto gestaan zou hebben samen met een dame met een opruiende tekst op haar t-shirt.<p>

Alle vier fenomenen zijn gevolgen van een langdurig experiment: //de beweging van wij naar ik.// Alle culturen hebben drie systemen: de economie, de staat en het morele systeem, het geweten, de stem van de samenleving in het zelf, het Superego, de wil en het woord van God. We kunnen anderen betalen om iets te doen (de economie), we kunnen anderen dwingen om iets te doen (de politiek) of we kunnen anderen overtuigen om iets te doen (het morele systeem).<p> 

‘Society’, said Lord Devlin, ‘means a community of ideas; without shared ideas on politics, morals, and ethics, no society can exist.’ Society is constituted by a shared morality. Although Nietzsche challenged this view as early as the 1880s, it remained the prevailing public opinion until the 1960s. To be a member of society was to be socialised, to internalise the norms of those around you, to act for the good of others, not just yourself. The assumption was that you must be part of something larger than yourself before you can be yourself. Moraal creëert vertrouwen. Friedrich Hayek put it well. We get along with one another, he says, because ‘most of the time, members of our civilization conform to unconscious patterns of conduct’.<p>

It is what George Washington meant when he said, ‘Human rights can only be assured among a virtuous people.’ And Benjamin Franklin when he said, ‘Only a virtuous people are capable of freedom.’ Als je het gedeelde morele systeem verliest, dan raak je ook de vrijheid kwijt.<p>

Hoe is dit veranderd? De existentialisten vonden dat er geen object morele orde bestaat, alleen individuele keuzes op basis van emoties. Maar een gedeeld moreel systeem werd nog wel geaccepteerd. Dat veranderde in de jaren 60. Eerst de liberale revolutie (volstrekte autonomie, enige voorwaarde dat we elkaar niet schaden), daarna in de jaren 80 de economische revolutie, daarna in de jaren 90 de technologische revolutie. Steeds stond het zelf centraal. Sinds de jaren 60 wordt het woord "rechten" steeds meer gebruikt. <p>

Wat kunnen we outsourcen en wat niet. Kun je geheugen outsourcen, in je telefoon stoppen? Niet alles, wel de tafels van vermenigvuldiging? Without memory, there is no identity, and without identity, we are mere dust on the surface of infinity. <tgroen>Dat gaat wel erg ver!!</tgroen> Ethiek wordt gereduceerd tot economie. Liefdadigheid wordt geoutsourced naar de staat. A free society is a moral achievement, and it is made by us and our habits of thought, speech and deed. Morality cannot be outsourced because it depends on each of us. Without self-restraint, <tgroen>OK</tgroen> But now our children and grandchildren are paying the price of abandoning a shared moral code: divided societies, dysfunctional politics, high rates of drug abuse and suicide, increasingly unequal economies, a loss of respect for truth and the protocols of reasoning together, and the many other incivilities of contemporary life. De markt en de staat zijn voor rijkdom en macht, niet voor armoede en onmacht. <tgroen>Dat vind ik weer echt holle retoriek.</tgroen> Zonder gedeelde moraal is er geen samenleving. Er zijn subgroepen en identiteitspolitiek. Economie en politiek gaan over competitie, moraal gaat over samenwerking. <tgroen>Weer erg zwart-wit! Volgens mij is moraal geen systeem naast economie en politiek maar een kenmerk van economisch en politiek handelen.</tgroen><p>

Ik ben geen cultuurpessimist. David Brooks and Jean Twenge, have noted that Generation Z (or Gen-Z for short), those born in or after 1995, are more moral and altruistic than the preceding generations, Generation X and Millennials.
|>|>|>|>|!Persoonlijke gegevens|
|BSN Jos|074472598||||
|BSN Anne|131468509||||
|Digid Jos|~JosBeishuizen|15Mei1950!|||
|Digid Anne|~AnneCarienBeishuizen|~VanRemmen22!|||
|Postbank 2409044|~JosBeishuizen|12December2016!|||
|Mastercard|5248860104730211|05/22|051|3387|
|RABO|NL31 RABO 0384525830 6618|3018|||
|~KvK|WW3SBB6M|14Mei1950!|||
|SSE-Amsterdam|14Mei1950!||0987||
|~VluchtNoord|12December2016!|NL12INGB0006360579|5566||
|Teufel Raumfeld|josbeishuizen@gmail.com|c3pWS7|||
|Raumfeld Expand|http://192.168.1.1/|m9845jzpKDC3|||
|HP Officeprint PRO 8610|HP direct: 23823302||||
|KPN 0629016832|klantnr 40100653608||||
|KPN 0629016832|14Mei1950!|puk 36217275|pin 0000|simkaart nr 84080540|
|~VvE site|https://vve379.munnikvvebeheer.nl/|josbeishuizen@gmail.com|14Mei1950!||
|~OneDrive|jbn780@vu.nl|14Mei1950!|||
|Google|josbeishuizen@gmail.com|14Mei1950!|||
|Github|https://josbeishuizen.github.io|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|||
|>|>|>|>|!Tijdschriften|
|Instructional Science|http://www.editorialmanager.com/truc/default.aspx|Jos Beishuizen|cathrien85||
|Metacognition and Learning|http://www.editorialmanager.com/meta/default.aspx|Jos Beishuizen|beishuizen4||
|Educational Research Review|https://ees.elsevier.com/edurev/|j.j.beishuizen@vu.nl|14Mei1950! ||
|Learning and Instruction|Evise|j.j.beishuizen@vu.nl|14Mei1950!||
|>|>|>|>|!Websites|
|XS4ALL|klantnr 1466963, jjbeis, 14Mei1950!|tvabonn 20000002983702|pin 6118|FB5490@xs4all.nl 1234|
|Canaldigitaal|klantnr 76658337|smartcard nr 33730163541|josbeishuizen@gmail.com|14Mei1950!|
|Bibliotheek AMC|https://literatuur.amc./|acvanremmen|12December2016||
|De Volkskrant|josbeishuizen@gmail.com|14Mei1950!|||
|Trouw|josbeishuizen@gmail.com|14Mei1950!|||
|Consumentenbond|22293496|josbeishuizen|14Mei1950!||
|Github|https://github.com/JosBeishuizen||||
|Travis-ci account|https://travis-ci.org/JosBeishuizen||||
|Bookstack|http://192.168.178.42|josbeishuizen@gmail.com|14Mei1950!||
|Passwords beheren|passwords.google.com||||
|>|>|>|>|!Hardware en Software|
|TP-LINK Range Extender|http://192.168.178.29|http://tplinkrepeater.net|admin|admin|
|Fritz.box|https://fritz.box|https://192.168.178.1/|dish8001|WLAN |
|SPSS voor Linux|710183fe2d7b342ce9af||||
|PDF Studio|3IKLICI75D9EP7U9LP267AEVB4|https://www.qoppa.com/pdfstudio/demo/download|||
|>|!Persoonlijke gegevens en rekeningen|
|BSN Jos|074472598|
|BSN Anne|131468509|
|Digid Jos|~JosBeishuizen|
||15Mei1950!|
|Digid Anne|~AnneCarienBeishuizen|
||~VanRemmen22!|
|NL90INGB0|~JosBeishuizen|
|002409044|14Mei1950!|
|Mastercard|5248860104730211|
||05/22|
||051|
||3387|
|NL31RABO|3018|
|0384525830||
|~KvK|WW3SBB6M|
||14Mei1950!|
|SSE-Amsterdam|20Juni2020!|
||0987|
|NL12INGB|~VluchtNoord|
|0006360579|12December2016!|
||5566|
|>|!Internet en software|
|PDF Studio|3OD2IULGVJI5C691J0V0Q5Q3SG|
|Teufel Raumfeld|josbeishuizen@gmail.com|
||c3pWS7|
|Raumfeld|http://192.168.1.1/|
|Expand|m9845jzpKDC3|
|0629016832|klantnr 40100653608|
||14Mei1950!|
||puk 36217275|
||pin 0000|
||simkaart nr 84080540|
|~VvE site|https://vve379.munnikvvebeheer.nl/|
||josbeishuizen@gmail.com|
||14Mei1950!|
|~OneDrive|jbn1780@vu.nl|
||14Mei1950!|
|Google|josbeishuizen@gmail.com|
||14Mei1950!|
|XS4ALL|klantnr 1466963, 14Mei1950!|
||tvabonn 20000002983702|
||pin 6118|
||FB5490@xs4all.nl 1234|
|Canaldigitaal|klantnr 76658337|
||smartcard nr 33730163541|
||josbeishuizen@gmail.com|
||14Mei1950!|
|Trouw|josbeishuizen@gmail.com|
||14Mei1950!|
|Passwords beheren|passwords.google.com|
|Czaar&Toon-2.4|Czaar229!|
|UPC3280717|S!naasapp3l|
|>|!Hardware en Software|
|TP-LINK|http://192.168.178.29|
||http://tplinkrepeater.net|
||admin|
||admin|
|Fritz.box|https://fritz.box|
||https://192.168.178.1/|
||~MerciaFrancaElsAda|
|PDF Studio|3OD2IULGVJI5C691J0V0Q5Q3SG|
||https://www.qoppa.com/pdfstudio/demo/download|

|>|!Tijdschriften|
|Instructional Science|http://www.editorialmanager.com/truc/default.aspx|
||Jos Beishuizen|
||cathrien85|
|Metacognition and Learning|http://www.editorialmanager.com/meta/default.aspx|
||Jos Beishuizen|
||beishuizen4|
|Educational Research Review|https://ees.elsevier.com/edurev/|
||j.j.beishuizen@vu.nl|
||14Mei1950!|
|Learning and Instruction|Evise|
||j.j.beishuizen@vu.nl|
||14Mei1950!|
|Consumentenbond|22293496|josbeishuizen|14Mei1950!||
|Github|https://github.com/JosBeishuizen||||
|Travis-ci account|https://travis-ci.org/JosBeishuizen||||
|Bookstack|http://192.168.178.42|josbeishuizen@gmail.com|14Mei1950!||
|SPSS voor Linux|710183fe2d7b342ce9af||||
"""Natuur is voor tevredenen of legen.
En dan: wat is natuur nog in dit land?
Een stukje bos, ter grootte van een krant,
Een heuvel met wat villaatjes ertegen.

Geef mij de grauwe, stedelijke wegen,
De'in kaden vastgeklonken waterkant,
De wolken, nooit zo schoon dan als ze, omrand
Door zolderramen, langs de lucht bewegen.

Alles is veel voor wie niet veel verwacht.
Het leven houdt zijn wonderen verborgen
Tot het ze, opeens, toont in hun hogen staat.

Dit heb ik bij mijzelven overdacht,
Verregend, op een miezerigen morgen,
Domweg gelukkig, in de Dapperstraat.
"""Ik heb van 't leven vrijwel niets verwacht,
't Geluk is nu eenmaal niet te achterhalen.
Wat geeft het? - In de koude voorjaarsnacht
Zingen de onsterfelijke nachtegalen.

Uit: Avond (1950), opgenomen in Verzamelde Gedichten (1965)
Uitgever: Polak & Van Gennep
"""Niet anders is de gang van ieder leven: 
Men raakt aan 't eind van alle dingen los. 
Wat heeft mij even een geluk hergeven? 
Een neevlige einder, een verdoezeld Bosch.
"""
November
 
Het regent en het is november;
Weer keert het najaar en belaagt
Het hart, dat droef, maar steeds gewender,
Zijn heimelijke pijnen draagt.
En in de kamer, waar gelaten
Het daaglijks leven wordt verricht,
Schijnt uit de troosteloze straten
Een ongekleurd namiddaglicht.
De jaren gaan zoals zij gingen,
Er is allengs geen onderscheid
Meer tussen dove erinneringen
En wat geleefd wordt en verbeid.
Verloren zijn de prille wegen
Om te ontkomen aan de tijd;
Altijd november, altijd regen,
Altijd dit lege hart, altijd.

J.C. Bloem
 
In memoriam Inge Sol
https://www.nybooks.com/articles/2002/02/28/emperor-of-nostalgia/

Emperor of Nostalgia
J.M. Coetzee
February 28, 2002 issue

Reviewed:

The Collected Stories of Joseph Roth

translated from the German and with an introduction by Michael Hofmann
Norton, 281 pp., $27.95
1.
At the apogee of a reign that commenced in 1848 and ran until 1916, Franz Joseph, Emperor of Austria and King of Hungary, ruled over some fifty million subjects. Of these fewer than a quarter spoke German as a first language. Even within Austria itself every second person was a Slav of one kind or another—Czech, Slovak, Pole, Ukrainian, Serb, Croat, Slovene. Each of these ethnic groups had aspirations to become a nation in its own right, with all the appurtenances of nationhood, including a national language and a national literature.

The mistake of the imperial government, we can see with hindsight, was to take these aspirations too lightly, to believe that the advantages of belonging to an enlightened, prosperous, peaceful, multiethnic state would always outweigh the pull of separatism and the push of anti-German (or, in the case of the Slovaks, anti-Magyar) prejudice. When war—precipitated by a spectacular act of terrorism by ethnic nationalists—broke out in 1914, the empire found itself too weak to withstand the armies of Russia, Serbia, and Italy on its borders, and fell to pieces.

“Austro-Hungary is no more,” wrote Sigmund Freud to himself on Armistice Day, 1918. “I do not want to live anywhere else…. I shall live on with the torso and imagine that it is the whole.” Freud spoke for many Jews of Austro-German culture. The dismemberment of the old empire, and the redrawing of the map of Eastern Europe to create new homelands based on ethnicity, worked to the detriment of Jews most of all, since there was no territory they could point to as ancestrally their own. The old supranational imperial state had suited them; the postwar settlement was a calamity. The first years of the new, stripped-down, barely viable Austrian state, with food shortages followed by levels of inflation that wiped out the savings of the middle class and violence on the streets between paramilitary forces of left and right, only intensified their unease. Some began to look to Palestine as a national home; others turned to the supranational creed of communism.

Nostalgia for a lost past and anxiety about a homeless future are at the heart of the mature work of the Austrian novelist Joseph Roth. “My most unforgettable experience was the war and the end of my fatherland, the only one that I have ever had: the Austro-Hungarian monarchy,” he wrote in 1932. “I loved this fatherland,” he continued in a foreword to The Radetzky March. “It permitted me to be a patriot and a citizen of the world at the same time, among all the Austrian peoples also a German. I loved the virtues and merits of this fatherland, and today, when it is dead and gone, I even love its flaws and weaknesses.” The Radetzky March is the great poem of elegy to Habsburg Austria, composed by a subject from an outlying imperial territory; a great German novel by a writer with barely a toehold in the German community of letters.

Moses Joseph Roth was born in 1894 in Brody, a middle-sized city a few miles from the Russian border in the imperial crownland of Galicia. Galicia had become part of the Austrian Empire in 1772, when Poland was dismembered; it was a poor region densely populated with Ukrainians (known in Austria as Ruthenians), Poles, and Jews. Brody itself had been a center of the Haskala, the Jewish Enlightenment. In the 1890s, two thirds of its people were Jewish.

In German-speaking parts of the empire, Galician Jews were held in low esteem. As a young man making his way in Vienna, Roth played down his origins, claiming to have been born in Schwabendorf, a predominantly German town (this fiction appears in his official papers). His father, he claimed, had been (variously) a factory owner, an army officer, a high state official, a painter, a Polish aristocrat. In fact Nachum Roth worked in Brody as agent for a firm of German grain merchants. Moses Joseph never knew him: in 1893, shortly after his marriage, Nachum suffered a brainstorm of some kind on a train journey to Hamburg. He was taken to a sanatorium and from there passed into the hands of a wonder-working rabbi. He never recovered, never returned to Brody.

Moses Joseph was brought up by his mother in the home of her parents, prosperous assimilated Jews. He went to a Jewish community school where the language of instruction was German, then to the German-language gymnasium in Brody. Half his fellow students were Jewish: to young Jews from the East, a German education opened the doors to commerce and to the dominant culture.

In 1914 Roth enrolled at the University of Vienna. Vienna at this time had the largest Jewish community in Central Europe, some 200,000 souls living in what amounted to a ghetto of a voluntary kind. “It is hard enough being an Ostjude,” a Jew from the East, remarked Roth; but “there is no harder fate than being an Ostjude outsider in Vienna.” Ostjuden had to contend not only with anti-Semitism but with the aloofness of Western Jews.

Roth was an outstanding student, particularly of German literature, though for the most part he looked down on his teachers, finding them servile and pedantic. This disdain is reflected in his early writings, in which the state-run education system appears as the preserve of careerists or else timid, uninspired plodders. He worked at a part-time job as a tutor to the young sons of a countess, and in the process picked up such dandyish mannerisms as kissing the hands of ladies, carrying a cane, wearing a monocle. He began to publish poems.

His education, which was leading him toward an academic career, was terminated by the war. Overcoming pacifist inclinations, he enlisted in 1916, at the same time abandoning the name Moses. Ethnic tensions ran high enough in the imperial army for him to be transferred out of a German-speaking unit; he spent 1917–1918 in a Polish-speaking unit in Galicia. His period of service became the subject of further fanciful stories, notably that he had been an officer and a prisoner of war in Russia. Years later he was still peppering his speech with officer-caste slang.

After the war Roth began to write for newspapers, and soon gained a following among the Viennese. Before the war Vienna had been the capital of a great empire; now it was an impoverished city of two million in a country of a bare seven million. Seeking better opportunities, Roth and his new wife, Friederike, moved to Berlin. There he wrote for liberal newspapers but also for the left-wing Vorwärts, signing his pieces “Der rote Joseph,” Joseph the Red. The first of his Zeitungromane, “newspaper novels,” came out, so called not only because they shared the themes of his journalism but also because he broke his text into short, snappy sections. The Spider’s Web (1923) deals presciently with the moral and spiritual menace of the fascist right. It appeared three days before Hitler’s first putsch.

In 1925 Roth was appointed Paris correspondent of the Frankfurter Zeitung, the leading liberal paper, at a salary that made him one of the best-paid journalists in Germany. He had come to Berlin to make a career as a German writer, but in France he found that at heart he was “a Frenchman from the East.” He was enraptured by what he called the silkiness of French women, particularly the women of Provence.

Even in his youth Roth had commanded a lucid, supple German. Now, using Stendhal and Flaubert—particularly the Flaubert of Un Coeur simple —as models, he perfected his characteristically exact mature style. (Of The Radetzky March, he would remark, “Der Leutnant Trotta, der bin ich,” consciously echoing Flaubert’s “Madame Bovary, c’est moi.”) He even toyed with the idea of settling in France and writing in French.

After a year, however, the Frankfurter Zeitung replaced him in its Paris office. Disappointed, he put in for a trip to Russia. His habit of (in his words) “handling in ironic fashion certain institutions, morals and customs of the bourgeois world” should not, he cautioned the editors, be assumed to disqualify him from reporting on Russia and the “dubious consequences” of the Russian Revolution. His series on Russia was a great success; reports from Albania, Poland, and Italy followed.

He continued to write fiction, taking pains to keep his distance from mere newspapermen. “I don’t write so-called witty commentaries. I sketch the features of the age…. I am a journalist, not a reporter, I am a writer, not a fashioner of lead articles.”

In 1930 he published his ninth novel, Job: The Story of a Simple Man. Despite, or perhaps because of, its sentimental, fairy-tale ending—the aging Mendel Singer, buffeted by the blows of fate and sinking into penury in the slums of New York, is whisked to safety by the idiot son he had abandoned in the Old World, a son who has unbeknown to him become a world-famous musician—Job became an international success (Roth confessed that he could not have written the ending without recourse to drink). Hollywood turned Job into a movie under the title Sins of Man, with all its Jewishness purged. Job was followed two years later by Roth’s most ambitious book, The Radetzky March. Six more novels appeared in his lifetime, all of them smaller in scale, and a number of short fictions.


The Radetzky March, incomparably Roth’s greatest novel and the only one on which he worked without undue haste, follows the fortunes of three generations of the Trotta family, servants of the crown: the first Trotta a simple soldier elevated to the minor nobility for an act of heroism; the second a high provincial administrator; the third an army officer whose life dissolves into futility as the Habsburg mystique loses its hold on him, and who perishes without issue in the war.

The trajectory of the Trottas mirrors the trajectory of the empire. The ideal of selfless service embodied in the middle Trotta falters in his son not because the empire has gone wrong in any objective way but because there has been a change in the air that makes the old idealism unsustainable (it is this change in the air that is the starting point for the dissection of old Austria in Robert Musil’s The Man Without Qualities). The young Trotta, born in the 1890s, may represent the generation of Roth and Musil (“Der Leutnant Trotta, der bin ich“), but it is his father, who late in life has not only to swallow the shame of his son’s failures but to discover—as he does with endearing humility—that the beliefs he has dedicated his life to have fallen out of fashion, who is the most tragic figure in the book, and who shows how much more complex Roth is as an artist than as the apologist for the Habsburgs he later became.

In Roth’s universe, it is among its most marginal subjects that the empire finds its most faithful followers. The Trottas, his exemplary Austro-Hungarians, are not German but Slovenian in origin. Having killed off one line of the clan, Roth finds a distant Trotta cousin through whom to continue, in Die Kapuzinergruft (1938; translated as The Emperor’s Tomb), a rather pale sequel to The Radetzky March, his fictional history of the decline of the imperial ideal into the cynicism and decadence of postwar Vienna.

Meanwhile Friederike Roth had become mentally ill and been hospitalized. She spent the 1930s in asylums in Germany and Austria; when the Nazis took control she was one of those selected to be euthanized.

In 1933 Roth quit Germany for good, and, after roaming around Europe for a while, settled in Paris. Translations of his work were coming out in a dozen languages; by most measures he was a successful author. His financial affairs were, however, in chaos. Furthermore, he had long been a heavy drinker, and by the mid-1930s had descended into alcoholism. In Paris he made his base in a tiny hotel room and spent his days in the café downstairs, writing, drinking, entertaining friends.

Hostile to both fascism and communism, he proclaimed himself a Catholic and involved himself in royalist politics, specifically in efforts to have Otto von Habsburg, grandnephew of the last emperor, restored to the throne. In 1938, with the threat of German annexation looming, he traveled to Austria as representative of the royalists to persuade the government to hand over the chancellorship to Otto. He had to depart ignominiously without being granted an audience. Back in Paris he urged the creation of an Austrian Legion to liberate Austria by force.

Opportunities to escape to the United States came up, but he let them pass. “Why are you drinking so much?” asked a worried friend. “Do you think you are going to escape? You too are going to be wiped out,” Roth replied. He died in a Paris hospital in 1939, after days of delirium tremens. He was forty-four.

2.
Though Roth tried his hand intermittently at short stories, his reputation has rested hitherto on his novels, above all on The Radetzky March. Now we have Roth’s Collected Stories, translated by Michael Hofmann, who also contributes an introduction in which he compares Roth at his best with Anton Chekhov.

The title The Collected Stories of Joseph Roth would seem to make a promise, and an unambiguous one at that: that we are being offered all of Roth’s stories. But what are stories? Instead of trying to establish formal criteria—a hopeless task—Michael Hofmann sensibly takes as his province all of Roth’s fictional prose with the exception of his novels. In the relevant volumes of the canonical six-volume German Werke edited by Fritz Hackert there are eighteen pieces of fiction not labeled Roman, novel. The Collected Stories consists of seventeen of these eighteen pieces; it pays no attention to the fact that some of the eighteen are not proper stories with beginnings, middles, and ends, but fragments of abandoned larger projects; or the fact too that four of them appeared, either during Roth’s lifetime or posthumously, as stand-alone books: April: The History of a Love (1925); The Blind Mirror: A Short Novel (1925); The Legend of the Holy Drinker (1939); and The Leviathan (printed in 1940, distributed only in 1945).

The missing eighteenth item is The Legend of the Holy Drinker, correctly classed by Hackert as a Novelle, a novella or long short story, rather than a Roman. The reason for its absence from The Collected Stories, tersely mentioned in the introduction, is that a translation (by Hofmann himself) is already on the market. The Collected Stories is therefore not, strictly speaking, the collected stories: it needs to be supplemented with either The Legend of the Holy Drinker or the composite volume Right and Left and The Legend of the Holy Drinker.
The first clear masterwork in the collection is “Stationmaster Fallmerayer” of 1933. Fallmerayer is a cool, self-sufficient man of a type we find often in Roth, going dutifully but without feeling through the motions of love, marriage, and parenthood. Then fate intervenes. There is a train crash near the town in provincial Austria where he is stationmaster. One of the passengers, Countess Walewska, a Russian (an irritating feature of these translations is that German conventions are used to transliterate Russian words), is brought to his house to recuperate from shock. After she leaves, Fallmerayer recognizes he has fallen in love with her.

Within months—the year is 1914—Austria and Russia are at war. Fallmerayer fights on the eastern front, kept alive by his resolve to see the countess again. In his spare time he teaches himself Russian. Sure enough, one day he finds himself in the vicinity of the Walewski estate. He announces himself; he and the countess become lovers.

Their idyll is interrupted by the Bolshevik Revolution. Fallmerayer saves the countess from the Reds and escorts her across the seas to the safety of the Walewski villa in Monte Carlo. But just when their happiness seems assured, Count Walewski, whom they had thought dead, reappears. Old and crippled, he demands to be taken care of. His wife cannot refuse. Fallmerayer sums up the situation and without a word walks out. “Nothing has ever been heard of him since.”

Roth’s feel for what can and what cannot be achieved in the short story form is sure. To the eye of a novelist—Tolstoy, for instance, whose impress is detectable not only on this story but on the just completed Radetzky March —the sequence of events from the first meeting of the stationmaster and the countess to the arrival of the count might seem merely to set the stage for the real question: What will a middle-aged Austrian who has abandoned family and country to follow a woman, and now finds himself adrift in postwar Europe, do with his life? Roth does not even broach the question. Without denying the power of love, even of amour fou, to make us into fuller human beings, he takes Fallmerayer to the brink of the what next? and leaves him there.

“The Bust of the Emperor” (1935) belongs squarely to Roth’s ultraconservative phase. Set in Galicia immediately after the World War, it concerns the quixotic Count Franz Xaver Morstin, who, despite the fact that his homeland now belongs to Poland, keeps a bust of Emperor Franz Joseph in front of his residence and goes around in the uniform of an Austrian cavalry officer. The story is told by an unnamed narrator who takes it as his task to commemorate this obscure, low-key protest against the course of history.

The narrator wastes no time in giving us his opinion of modern times. In the course of the nineteenth century, he observes caustically, it was discovered that “every individual had to be a member of a particular race or nation”:

All those people who had never been anything other than Austrians…began, in compliance with the “order of the day,” to call themselves part of the Polish, the Czech, the Ukrainian, the German, the Romanian, the Slovenian, the Croatian “nation.”

Among the few who continued to regard themselves as “beyond nationality” was Count Morstin.

Before the war the count used to have some kind of social role as mediator between the local people and the state bureaucracy. Now he is without power or influence. Yet the villagers—Jews, Poles, Ruthenians—continue to respect him. These folk are to be commended, advises the narrator, for resisting “the incomprehensible caprices of world history.” “The wide world is not so very different from the little village of Lopatyny as the leaders and the demagogues would have us believe,” he adds darkly.

Commanded by the new Polish authorities to remove the bust of the Emperor, Morstin supervises its solemn burial. Then he retires to the south of France to live out his days and write his memoirs. “My former home, the monarchy,…was a large house with many doors and many rooms for many different kinds of people,” he writes. “This house has been divided, broken up, ruined. I have no business with what is there now. I am used to living in a house, not in cabins.”

Works like “The Bust of the Emperor” and The Emperor’s Tomb are conservative not only in political outlook but in literary technique. Roth is not a modernist. Part of the reason is ideological, part temperamental, part, frankly, the fact that he did not keep up with developments in the literary world. Roth did not read much; he liked to quote Karl Kraus: “A writer who spends his time reading is like a waiter who spends his time eating.”

“The Leviathan” (1940) is an entirely different kind of story. Gone is Roth’s reticence about his Ostjude origins. Set not in Galicia but in neighboring Volhynia, in the Russian Empire, it is expansive, lyrical in tone, folkloric in manner. At its center is the Jew Nissen Piczenik, who, despite making a living selling coral beads to Ukrainian peasant women, has never seen the sea. In the ocean of his imagination all living things, including the corals, are watched over by a fabulous beast, the Leviathan of Holy Scripture.

Piczenik makes friends with a young sailor, begins to visit taverns with him and miss prayers. He forsakes his family to go to Odessa with his new friend, and stays there for weeks, fascinated with port life. Back home, he finds he is losing trade to a rival who sells newfangled celluloid beads. Yielding to temptation, he begins to mix celluloid beads with the coral; but even this does not restore his fortunes. He decides to emigrate. En route to Canada his ship sinks. “May he rest in peace beside the Leviathan until the coming of the Messiah,” run the last words of this most Jewish of Roth’s stories.

“Stationmaster Fallmerayer,” “The Bust of the Emperor,” and “The Leviathan” are works of Roth’s mature years. The earlier pieces in The Collected Stories are a miscellaneous lot, including humdrum pieces of naturalism, failed experiments, and abandoned fragments. Among the completed stories, two stand out. “The Honors Student” of 1916 is a remarkably confident debut. Set in small-town German Austria, it follows with a satirical eye the rise of Anton Wanzl, the honors student of the title, zealous, disciplined, obsequious, cunning—a being perfectly adapted to get ahead in the educational bureaucracy. Like many of Roth’s stories, however, it starts off full of ideas and energy, then loses its way and tails off.

The Wanzl character is reworked some fifteen years later, in a first-person narrative entitled “Youth.” The speaker comes across as cold-hearted, cynical, sensual yet mean with his emotions, excelling in literary study yet a stranger to the passions that animate great literature. “Youth” scarcely pretends to be fiction: we seem to be reading a mordant, barely veiled piece of self-analysis on Roth’s part.

“The Blind Mirror” (1925) is the story of a rather ordinary, dreamy, submissive, sexually naive working-class girl, a süße Mädel in Viennese parlance. Here Roth goes in for a pastiche of novelette style, mitigating syrupy sentiment with ironic touches and flashes of dark poetry. Fini works in a city office and lives in cramped quarters with a persecutory mother and a father invalided out of the army. Seduced by an older man, she soon finds how little relief there is in quasi-marital life with a lover who doesn’t wash, wears slippers around the house, forgets to button his fly:

Once a week, or maybe twice, they had congress on the studio sofa, a miserable surrender, silent and accompanied by silent weeping, like the desperate birthday celebrations of a terminal patient.

Belatedly Fini finds true love in the arms of a dashing revolutionary. When her lover disappears, she drowns herself. This uneasy mixture of parody, sentiment, and urban realism ends with the girl’s corpse in a medical school, on a dissecting table.

In his letters of the 1920s Roth keeps mentioning a large-scale novel he is working on. The novel never got written; all that is left are two fragments, reprinted here—strings of anecdotes, fantastic in character and dotted with striking imagery, based on his early years in Galicia. Later Roth transposed this material into a darker key and used it in a powerful short novel, Das falsche Gewicht (False Weight, translated into English as Weights and Measures), another work in which a man finds love too late in life to be able to enjoy it.

3.
Michael Hofmann has translated Roth before, and has won prizes for his translations. Hofmann’s English is as expressive, poised, and precise as Roth’s German at its best. However, Roth did not always write as well as he could, and what Hofmann does when Roth is at less than top form is cause for concern.

In “The Leviathan,” for instance, Roth writes of a “long nightshirt, sprinkled with a number of irregular black spots, evidences of fleas.” Hofmann condenses this to a “long flea-spotted nightgown.” In the same story Nissen Piczenik the coral merchant is greeted by his customers “with embraces and kisses, laughing and crying, as if in him they were recovering a friend decades-long not seen, and long missed” (Roth). In Hofmann he is greeted “with embraces and kisses, like a long-lost friend.” In both cases Hofmann seems to have decided that he can better render Roth’s meaning by recasting or condensing the text than by translating every word. But is it part of a translator’s job to give his author lessons in economy?

On occasion Hofmann improves on Roth to the point of rewriting him. In Hofmann we read of a pair of copper samovars “burnished by the setting sun.” To burnish metal is to polish it, to make it shine. Inside the word “burnish,” by a neat linguistic accident, lies the word “burn”—the copper shines because of the burning heat of the sun, so to speak. Any objection that English burnish derives from French brunir, to polish, which has nothing to do with burning, can be brushed aside: it turns out that burn– and brun– words are tangled at the root in their Indo-European past. The only trouble is that none of this verbal ingenuity is to be found in Roth, in whose German the sun is merely reflected (spiegelte sich) in the samovars.

Sometimes Hofmann seems to nudge Roth in a direction in which Roth is not actually going: the pressure of a man’s fingers on a girl’s arm is “insistent” when in the original it is merely soft. Sometimes, on the other hand, he misses a telling emphasis. To the narrator of “The Bust of the Emperor,” the generation that inherited power in Europe after 1918 was bad enough, but not as bad as (in Hofmann’s version) “the still more progressive and murderous inheritors” who succeeded it—a clear allusion to Mussolini, Hitler, and their cohort. But how can fascists be called progressive? In the German the word is moderneren, more modern: to Roth in his late phase, the modern line of thought that gave birth to the European nation-state also sanctioned the ethnic hatreds that would lead Europe to catastrophe.

Hofmann is British, and now and again uses British locutions whose meaning may escape the American reader. A young man plans to “see off” a rival for the affections of a girl (to drive him off the scene). One girl asks another whether she has “been poorly yet” (had her period). Someone “havers” (hesitates) at the door of a hospital. Just as there is a case to be made for translating into the dialect of English that the translator commands most vividly, there is a contrary case to be made for using as linguistically neutral, as mid-Atlantic, a dialect as possible.
<div class="tc-table-of-contents">
<<my-toc-linked-selective-expandable-body sort[tocnr]>>
</div>
"""
Geen dag kan zo beginnen,
als deze dag begon;
ik kwam mijn kamer binnen
en daar was enkel zon.

De klok was staan gebleven,
maar ik vroeg naar geen uur;
de tijd was opgeheven,
daar was slechts licht en duur.

En duur en licht en luister;
de winter was voorbij;
in rouwfloers sloop het duister
en vluchtte weg van mij.

De zon op drup en perel,
viel over knop en tak;
en voor me zong de merel
op buurmans pannendak.

Geen dag kan zo beginnen,
als deze dag begon:
ik kwam mijn kamer binnen
en daar was enkel zon.
""" Jongens, heb je verdriet,
sprak toen de leraar Grieks,
dan moet je woordjes leren, woordjes
leren. Hij knikte energiek
zodat er as viel op zijn vest,
maar dat was toch al vies.
Wij lachten halfvertederd,
halfmeewarig, want tragiek
daar wist je alles van en hij,
heel oud, haast vijftig, niets.
En dat het overging als je maar
woordjes leerde, dat was iets
zo absurds, zo dolkomieks
dat het in omloop kwam als een
gevleugeld woord. Het klapwiekt
nu verdrietig om mij heen
omdat ik later woordjes leerde
waarmee je 't monster kunt bezweren
en ik hem niet meer zeggen kan
hoe ik soms naar die stem verlang,
naar dat onhandige advies.	
"""
zoals de koelte ’s nachts langs lelies
en langs rozen
als wit koraal en parels diep in zee
zoals wat schoon is rustig schuilt
maar straalt wanneer ik schouwen wil
zo meen ik dat ook jij bent

als melk
als leem
en ’t bleke rood van vaal gesteent
of porselein
zoals wat ver is en gering
en lang vergeten voor het oud is

zoals een waskaars en een koekoek
en een oud boek en een glimlach
en wat onverwacht en zacht is en het eerste
en wat schuchter en verlangend en vrijgevig
gaaf maar broos is
zo meen ik dat ook jij bent


Over joden op drift heb ik al het nodige gezegd. Het essay, in 2015 opnieuw vertaald door Els Snick, is een liefdevol portret van het joodse Galicië, en ook een scherpe analyse van de manier waarop het Westen de joden wel of niet heeft ontvangen. 

In feite is boek Job hetzelfde verhaal in romanvorm. De uitgever schrijft: Job is het aangrijpende verhaal van een eenvoudige joodse man en zijn gezin, en tegelijkertijd de kroniek van een heel volk en van een tijdperk dat afloopt.

De vrome dorpsleraar Mendel Singer is de reïncarnatie van de Bijbelse figuur Job, veroordeeld om de beproevingen Gods te ondergaan. Singers vrouw en twee van zijn kinderen komen te overlijden, om naar Amerika te emigreren moet hij zijn gehandicapte zoon achterlaten, en ten slotte moet hij met lede ogen toezien hoe zijn dochter naar een krankzinnigengesticht wordt afgevoerd. Gebukt onder zijn zware lot komt Singer in opstand tegen God en verliest hij de moed om te leven, totdat er op een dag een haast wonderbaarlijke ommekeer van het noodlot plaatsheeft. Job is het aangrijpende verhaal van een eenvoudige joodse man en zijn gezin, en tegelijkertijd de kroniek van een heel volk en van een tijdperk dat afloopt.

De dochter Mirjam is geïnspireerd door Friedl, de vrouw van Joseph Roth. Roth adviseert zijn schoonouders om Friederike dit boek niet te laten lezen: "Misschien schaadt het haar mijn boek te lezen".
Help, we gaan terug naar normaal
Is dit nou vrijheid? Is dit nou vrijheid?

Joke Hermsen vreest de terugkeer naar het 'oude normaal'.<br>
JOKE HERMSEN

Trouw, 22 mei 2021

Een paar dagen geleden liep ik aan het begin van de middag met mijn fiets aan de hand door de binnenstad van Amsterdam. Ik was even afgestapt om van de zon te genieten en naar het verse loof aan de bomen langs de Prinsengracht te kijken. Hoewel de wind akelig koud was, leek het voorjaar eindelijk aangebroken. Ik passeerde een paar volle terrassen, waarop voornamelijk jonge toeristen waren neergestreken. Telefoon in de ene, glas bier of wijn in de andere hand, het was per slot van rekening al een uur 's middags. Niemand hield afstand of droeg een mondkapje.

Pas na het zoveelste terras werd ik mij van mijn reactie op al dit terrasjolijt bewust. Zodra ik een nieuw terras naderde, wendde ik mijn hoofd af en begon aandachtig de panden ter rechterzijde te bestuderen.

Waarom deed ik dat? Was ik bang om alsnog, op de valreep van mijn eerste vaccinatie, besmet te raken? Nee, want ik wendde mijn hoofd niet op overige drukke plekken in de stad af. Had ik het afgelopen jaar een terrasfobie of toeristenvrees ontwikkeld? Of was ik ten prooi gevallen aan een algehele agorafobie, die te maken had met het weer 'opengooien' van de samenleving? Dat klinkt immers toch een beetje als het opengooien van een arena vol wilde dieren.

Maar nee, besloot ik na enig zelfoverleg, dat kon het allemaal niet zijn. Toch was de neiging om het te doen bijzonder sterk, het ging bijna als vanzelf. Impulsief zwenkte mijn hoofd naar rechts. Waarschijnlijk had deze impuls met iets anders dan de toeristen zelf te maken, bedacht ik, terwijl ik bij het volgende terras mijn hoofd bewust niet afwendde en zelfs een vriendelijke glimlach tevoorschijn toverde, hoewel zij er mij wel degelijk aan herinnerden. Dat anders was mijn zorg en ergernis dat alles binnenkort 'terug bij het oude normaal' zou zijn, zoals de demissionaire premier ons al een paar keer glunderend had beloofd.

Het was net alsof ik met het afwenden van mijn hoofd dat oude normaal nog even niet onder ogen hoefde te zien. Terug naar normaal betekende immers ook terug naar de herrie, terug naar de vervuiling van zowel de stad als het luchtruim, terug naar de door Airbnb opgedreven huizenprijzen, terug naar de kletterende rol-koffers over de keien, terug naar het geglobaliseerde reisconsumentisme, dat behalve veel geld ook een immense voetdruk op de aarde achterlaat.

Ik moet bekennen dat eenzelfde ergernis mij ook was overvallen bij het zien van de vele foto's van glazen schuimend bier op sociale media, voorzien van verheffende onderschriften als: 'Eindelijk mogen we weer!' of 'Eindelijk zijn we weer vrij!' Nu houd ik ook van terrasjes, zeker in de zon, maar de grote vreugde over het gebroederlijk drinken in de buitenlucht, terwijl de ziekenhuizen nog vol covid-patienten lagen, kon ik toch niet delen. Ook de in de berichten zo vaak gebruikte woorden vrij of vrijheid vond ik eerlijk gezegd een beetje misplaatst. Alsof de gezamenlijk genuttigde alcoholconsumptie het vrijheidsideaal van de westerse mens het meest belichaamt.

Ik sprong weer op mijn fiets en trapte door de straffe wind naar huis. Want wat mochten we dan precies allemaal weer? Ja, we mochten opnieuw consumeren en geld aan het toerisme verdienen. Het was nog maar zeer de vraag of dit ons meer 'vrijheid' zou opleveren of dat we alleen nog een fractie sneller de ecologische ondergang tegemoet zouden gaan. Ik had, kortom, bar weinig fiducie in dat terug naar het oude normaal.

Na ruim een jaar van pandemie die wereldwijd al zo'n 3,4 miljoen dodelijke slachtoffers had geëist, van wie een derde in Europa, en de desastreuze klimaatverandering, die blijkt uit de zeven keer sneller smeltende ijskappen in Groenland, hoopte ik dat de meeste mensen er wel van overtuigd waren dat het juist anders moest.

Precies een jaar geleden waren we met een tamelijk bont gezelschap het initiatief #beternacorona gestart. We wilden een platform zijn voor de vele bewegingen op het gebied van ecologie, kunst en sociaal-economische rechtvaardigheid, zoals Extinction Rebellion, Nieuw Wij, Bits of Freedom, Keti Koti, De Turnclub en Milieudefensie. We vonden het belangrijk om deze progressieve krachten te bundelen, zodat we na de pandemie onze stem luider konden laten klinken.

We organiseerden online leesclubs, ondersteuningsprojecten voor musici, dichters en kunstenaars en zelfs een heuse #beternacorona-talkshow. Met Mercedes van Zandwijken en Menno Grootveld voerde ik gesprekken met diverse gasten over de verduurzaming van de stad, de mogelijkheid van democratische vernieuwing in de vorm van burgerraden, de voordelen van een basisinkomen, de kansenongelijkheid in het onderwijs en de bedreiging van onze privacy door big-data-bedrijven.

lege verkiezingsretoriek
Het was een heel diverse club mensen, die het lang niet altijd met elkaar eens waren, maar we deelden wel de overtuiging dat het roer om moet. We hoopten dat de door de pandemie opgedrongen pauzestand benut zou worden om eens goed na te denken over welke richting het met ons heen moest, wilden we onze planeet ook voor de komende generaties behouden. We hoopten dat de politieke bestuurders deze periode ook daarvoor zouden gebruiken en zelfs het voortouw zouden nemen, zoals bij de aard van hun functie past.

We kwamen tamelijk bedrogen uit. De pandemie sleepte zich bijna synchroon voort aan het toeslagenschandaal. Er kwamen amper andere onderwerpen aan bod dan het dagelijks gegoochel met coronacijfers en het gesjoemel inzake de verantwoordelijkheid voor de gedupeerde ouders. En toen kwamen er ook nog verkiezingen, met alle lege, electorale retoriek van dien.

De uitslagen logen er niet om: de meeste groene en progressieve partijen verloren fors en de winnaar was wederom de partij die bij monde van zijn voorman zo graag 'terug wilde naar het oude normaal'.

We bleven verbluft achter, want wat dat 'oude normaal' betekent, weet iedereen die de afgelopen tien jaar een krant heeft gelezen. Onder aanvoerderschap van deze partij is dat terug naar bezuinigingen op zorg, onderwijs, recht en cultuur en ook terug naar te weinig investeringen in duurzame energie, terug naar miljardensteun aan multinationals, terug naar structurele ongastvrijheid voor mensen in nood en zo kan ik nog wel even doorgaan, maar dat zal ik u besparen.

Dus vanwaar die immense vreugde op de terrassen? Misschien omdat de opening van de terrassen de laatste fase van de pandemie leek in te luiden, hoewel dat nog verre van zeker is. Misschien omdat men hoopte dat alle overige vrijheidsbeperkende maatregelen binnenkort ook worden ingetrokken. Die bewegingsvrijheid en de vrijheid van samenkomst en vereniging zijn in ernstige mate beknot. Ook is de vrijheid van beroepsuitoefening met name in het onderwijs, de cultuur-, reis- en horeca-sector aan banden gelegd.

Andere vrijheden bleven intact, zoals de vrijheid van meningsuiting, alhoewel we die meningen wel voornamelijk op sociale media moesten aanhoren en helaas niet in een theater, museum, bibliotheek, debatcentrum of boekhandel, waar doorgaans meer ruimte is voor " " diepgang en nuance. Maar als het openen van de terrassen symbool stond voor de opheffing van al die maatregelen en weldra ook alle culturele en onderwijsinstellingen hun deuren mochten openen, ja, dan viel het te begrijpen dat dit gevierd werd met een groot glas bier en de leuze 'eindelijk vrij!'.

proostende menigtes
Toch verdween mijn ergernis bij de aanblik van de proostende menigtes niet helemaal. Eenmaal thuis bedacht ik mij dat dit wellicht te maken heeft met de manier waarop er met het begrip vrijheid wordt omgesprongen, met name door politieke partijen die het hoog in hun vaandel - en prominent in hun naam - hebben staan, maar het in de praktijk amper belijden of slechts aan specifieke groepen voorbehouden. De vrijheid lijkt steeds meer op de 'bezoedelde vlag waar iedereen maar achteraan holt', zoals de 18de eeuwse filosofe Belle van Zuylen ooit schreef, 'op weg naar alle mogelijke ondeugden, misdaden en verderf'.

De vraag rijst ook nu wat vrijheid werkelijk betekent voor de moderne, westerse mens, die in een democratie leeft en door grondwettelijke rechten wordt beschermd. Berust het vooral op de vrijheid te consumeren waar en wanneer we maar believen, of moeten we vrijheid toch in een andere hoek zoeken?

Ik zette eerst maar eens een kop koffie en liep naar mijn studeerkamer. Tijd voor onderzoek. Vrijwel alle filosofen hebben zich op zeker moment de vraag gesteld: wat is vrijheid? En meer specifiek: wat is vrijheid voor de mens? Mijn blik gleed over de titels en bleef bij de namen van twee filosofen haken. Ik was op zoek naar een meer fundamentele benadering van de vrijheid, die als het ware aan alle andere voorafging. Ik wilde het moment waarop de vrijheid als mogelijkheid ontstond op de staart trappen.

Als je het over vrijheid wilt hebben, is het goed om je oor bij Immanuel Kant te luisteren te leggen, invloedrijk filosoof van de Verlichting. 'We zijn burgers van twee werelden', luidt Kants beroemde uitspraak. De menselijke vrijheid en daarmee het vermogen op het eigen handelen te reflecteren, ontstaat dankzij het verschil tussen de twee werelden die wij als mensen bewonen. Kant bedoelde hiermee dat mensen enerzijds in een aan tijd en causaliteit onderworpen, fysieke wereld leven, die hij als onvrij typeert, omdat deze gebonden is aan natuurwetten, die we niet zomaar aan onze laars kunnen lappen. Zo kunnen we niet vrij besluiten om te stoppen met eten, zolang we in leven willen blijven. Aan de andere kant bewonen we ook een wereld van ideeën, van de geest. Daarin zijn we wel vrij, want niet gebonden aan empirische wetten. We zijn niet alleen aan natuurwetten onderworpen wezens, maar kunnen dankzij onze talige en cognitieve vermogens een zekere afstand, oftewel vrijheid ten opzichte van ons fysieke bestaan verwerven. Deze vrijheid uit zich onder meer in kritische reflectie, creatieve verbeeldingskracht en de ervaring van een moreel geweten.

Menselijke vrijheid ontstaat dus op grond van een verschil. Je bent pas vrij, als je in staat bent een zekere afstand tot je behoeftes, lusten en driften te nemen. Of, om weer even naar het voorbeeld van de terrassen terug te keren, vrijheid ontstaat niet op het moment dat je het glas bier naar je mond brengt om je dorst te lessen, maar pas daarna, als je je afvraagt of het drinken van nog een glas bier wel goed is voor je gezondheid.

Vertraagd denken, noemt de Portugese neuroloog en filosoof Antonio Damasio dat, omdat het om een vertragen of uitstellen van de primaire lustbevrediging gaat. Op het moment van dit uitstel opent zich als het ware het verschil of de afstand tussen de ene en de andere wereld en kan het denken, waaruit de cultuur, wetenschap en ethiek ontstaan, een aanvang nemen. 'Het duurt even voordat het brein uitstijgt boven de onmiddellijk betrokkenheid van het lichaam en begrip en gevoelens begint te ontwikkelen voor bijvoorbeeld de morele dimensie'. Denken en dus ook de vrijheid, kosten met andere woorden tijd. Er is rust en aandacht voor nodig. En scholing, want iedere mens zal pas met een training van zijn geestelijke vermogens vrijheid kunnen verwerven.

Andere filosofen, zoals Hannah Arendt, hebben dit verschil tussen de fysieke wereld en de wereld van de ideeën ook betrokken op het verschil dat in de mens zelf bestaat. 'We zijn 'twee in een', schreef Arendt. Tweestemmige wezens, die met zichzelf van gedachten kunnen wisselen. Feitelijk doen we de hele dag niet anders, we praten tegen en met ons zelf, om het denkproces op gang te helpen en dan leggen we dit voor aan anderen.

Behalve door de 'uiterlijkheid' van het lichaam, dat onderhevig is aan tijd en causaliteit, wordt de mens ook gekenmerkt door de 'innerlijkheid' van gedachten, herinneringen en dromen. Vanwege die tweestemmigheid is de mens nooit voltooid, maar een wezen in wording, dat met elk nieuw inzicht als het ware opnieuw geboren wordt. Deze 'nataliteit' moet wel gecultiveerd worden. Als dit achterwege blijft of tekortschiet door verregaande bezuinigingen op onderwijs en cultuur, resten ons slechts de noodzakelijkheden en primaire driften van de fysieke wereld en worden we onvrij.

dialoog met onszelf
Vrij zijn we als we een dialoog met ons zelf kunnen voeren, ons handelen tot voorwerp van reflectie kunnen nemen en van daaruit in gesprek met anderen treden. Het gesprek over de wereld dat we gezamenlijk voeren, is een van de belangrijkste uitdrukkingen van onze vrijheid en voor Arendt daarom de voorwaarde voor een democratische samenleving. Als dat gesprek achterwege blijft en we ons steeds meer van de wereld afkeren en in onze privéstulpjes of bubbels terugtrekken, dreigt er 'wereldloosheid', die niet zelden uitmondt in een vorm van barbarij, zo waarschuwde zij.

Vandaar ook dat Hannah Arendt een groot voorstander was van volks- of burgerraden, als noodzakelijke aanvulling op de parlementaire democratie. Daar kan dat gesprek over de wereld worden gevoerd. Als mensen eens in de zoveel jaar een uitnodiging krijgen om zelf na te denken over belangrijke politieke kwesties, zullen zij zich niet alleen vrijer en dus 'menselijker' voelen, maar ook meer betrokken en verantwoordelijk. Ze zullen zich ook meer met elkaar verbonden voelen. Zo kan er een breder draagvlak ontstaan voor het nemen van ingrijpende beslissingen.

Zo liet de Franse burgerraad over het klimaat liet zien dat de honderdvijftig uitgelote burgers tot veel meer vernieuwende ideeën in staat waren dan hun gekozen volksvertegenwoordigers, die uit electorale belangen minder verregaande voorstellen deden.

Bovendien zijn 'politieke kwesties te belangrijk om alleen aan politici te worden overgelaten', zoals Arendt fijntjes opmerkte.

Rust, 'vertraagd denken', gesprekken over de wereld, scholing en inspiratie zijn dus nodig om werkelijk vrij te zijn. We worden niet vrij als we onbeperkt mogen consumeren of geld verdienen, maar als we onze kritische, ethische en creatieve vermogens blijvend oefenen. De mens is volgens Kant het enige wezen dat permanent opvoeding behoeft en ik ben sterk geneigd dit te geloven. Niet dat deze opvoeding ons altijd zal weten te redden, maar wel dat we zonder denken en verbeeldingskracht het tij niet zullen keren.

Onze vrijheid is dus afhankelijk van goed onderwijs en een rijk cultuuraanbod. Pas daarmee kan er een samenleving ontstaan die recht doet aan het wezen van de menselijke conditie: creativiteit en verbondenheid. Juist daarom hebben we naast open terrassen vooral ook open universiteiten, musea, theaters, concertzalen en bibliotheken nodig.

Maar helaas, juist die blijven vooralsnog gesloten. We mogen wel in een Python in een pretpark, was de boodschap van onze demissionaire premier, maar Bach, Mondriaan of Pina Bausch zijn niet essentieel. Nee, er is weinig reden om verheugd te zijn dat we binnenkort 'terug gaan naar het oude normaal'.

Het is tijd om het roer om te gooien en de twee werelden die wij bewonen van een gewisse ondergang te redden. En dat kan alleen als we gezamenlijk het gesprek voeren, waarin de verschillende wegen naar 'het nieuwe anders' gestalte kunnen krijgen. "

Een biertje op een terras, is dat nu echt vrijheid?

De samenleving gaat weer open, ziet u er tegenop? Reacties (max. 150 woorden) zijn welkom via tijdgeestreacties @trouw.nl . Graag naam en woonplaats vermelden.

joke hermsen
Joke Hermsen (1961) studeerde letterkunde en filosofie. Ze werkte als docent en onderzoeker aan verschillende universiteiten en schreef meerdere boeken over filosofie. In 1998 debuteerde ze als romanschrijver met Het dameoffer. Daarna verschenen diverse romans en essaybundels, waaronder Stil de tijd. Pleidooi voor een langzame toekomst (2009).


https://onsamsterdam.nl/het-kroegleven-van-joseph-roth-in-amsterdam

Het kroegleven van Joseph Roth in Amsterdam
18 mei 2014 • Door Els Snick

Op 19 mei voeren schrijvers en acteurs de literaire voorstelling Vlucht zonder einde op in de Stadsschouwburg. Een hommage aan Joseph Roth bij zijn 75ste sterfdag. De befaamde Joodse auteur woonde in 1936 een poos in Amsterdam. Hij schreef zijn romans aan de cafétafels - met altijd het glas onder handbereik.

“Ik ben een vreemde hier in deze stad, en daarom voel ik me zo thuis”, schreef de Joodse auteur Joseph Roth in 1927 in de Franse havenstad Marseille, een van de vele steden waar hij, reisjournalist en hotelmens, graag en vaak vertoefde. Net zo vreemd en net zo thuis voelde hij zich in Amsterdam, waar hij vanaf 1933 regelmatig kwam en in 1936 zelfs vijf maanden woonde. 

Op 15 maart 1936, een koude en winderige voorjaarsdag, kwam hij aan in Amsterdam met twee koffers waarin zijn hele hebben en houden stak. Hij was op de vlucht voor schuldeisers en voor een razende geliefde die hem (uit jaloezie? verdriet? armoede? alcohol?) in het Parijse café Le Sélect naar zijn zeggen met een geweer had willen vermoorden. 
Roth kende in Amsterdam enkele mensen van vroeger in Berlijn. De uitgeverijen Querido en Allert de Lange hadden in 1933 een afdeling opgericht waarin Duitstalig werk van emigrantenschrijvers werd uitgegeven. De medewerkers daar waren oude bekenden van hem. Hij logeerde in Hotel Eden, een eenvoudig pension op Warmoesstraat 24, vlakbij uitgeverij en boekhandel Allert de Lange op het Damrak. 

Roth was een legendarische drinker. Hij schreef zijn romans in kroegen, omringd door vrienden en bewonderaars, steeds met een vol glas bij de hand. Op een avond dat Roth in boekhandel Allert de Lange een lezing had gegeven, werd hij razend omdat de boekhandelaar geen jenever maar water voor de spreker had klaargezet. De baas van Hotel Eden zat in de zaal en kon gelukkig snel de gewenste borrel halen – het werd alsnog een geslaagde avond. Een dertigtal journalisten en schrijvers trok na de lezing naar café Reynders op het Leidseplein, waar Anton van Duinkerken een stoel beklom en een grafrede hield over “de onlangs overleden Joseph Roth”. Verzaligd dronk Roth zijn glas.  
De schrijver wandelde graag door het oude Joodse Amsterdam, van de Zeedijk over de Jodenbreestraat tot aan het Rembrandtplein. Hij kwam graag in café Schiller, met schrijvers als Johan Winkler en Maurits Dekker. Roth zat er dikwijl met de bekende acteur Johan Remmelts, die hij in Schiller leerde kennen toen die na een repetitie in de Stadsschouwburg met zijn collega’s kwam afgezakt. Hij ontmoette in Amsterdam heel wat bekende Amsterdammers en wie hem een tijd gezelschap hield en graag dronk, noemde hij al gauw zijn vriend. Het meest was hij te zien in het gezelschap van de gulle en joviale schrijver Anton van Duinkerken, drinkend, literaire plannen smedend, Hitler vervloekend. 

De dag begon voor Roth met een sober ontbijt in Eden: een kop koffie, een rauw ei en een eerste borrel. Met een bootje van het hotel liet hij zich overzetten naar het Damrak. Hij vermeed het lopen van lange afstanden om zijn door de alcoholverslaving gezwollen voeten te ontzien. Zijn eerste halte was café De Pool op Damrak 42-43, een bruine kroeg met een biljart waar veel kunstenaars over de vloer kwamen. Hij had er gezelschap van onder meer Gerth Schreiner, een Duitse emigrant die het in Nederland als journalist had gemaakt. Ook de kunstenaars uit de kringen van de katholieke uitgeverij De Gemeenschap kwamen er graag. Er bestaat één foto van Roth in Amsterdam: hij zit in het Noord-Zuid Hollandsch Koffiehuis bij het Centraal Station met de kunstenaars Charles Roelofsz, Maurits Mok, Frans Hannema, Charles Nypels en Joop Sjollema. Wiel van der Randen maakte het groepsportret. Ik vermoed dat ze van De Pool met z’n allen daarheen waren gegaan, bij wijze van afscheid, op de dag dat Roth uit Amsterdam vertrok.  
Van De Pool ging Roth naar café Scheltema, het trefpunt van de Amsterdamse journalisten vlakbij de belangrijke krantenredacties. De dagelijkse tocht vanaf het Damrak, over de Dam tot aan het begin van de Nieuwezijds Voorburgwal, trok de aandacht van de voorbijgangers. Met zijn wandelstok, gedeukte hoed en over de schouders geslagen cape, met zijn oud-Oostenrijkse officiersmaniertjes om de vrouwen met een handkus te begroeten en als een militair zijn hakken tegen elkaar te slaan, is hij in het collectieve geheugen blijven leven. 



<tblauw>dinsdag 2021, °</tblauw>

<<calendar>>
# Maak een kaart aan met als titel $:/config/ShortcutInfo/xxx, waarbij xxx de naam is van de shortcut die je wilt maken.
# Ga naar het Control Panel, tab Keyboard Shortcuts.
# Als het goed is staat daar onderaan een entry xxx, de naam van de shortcut die je wilt maken.
# Typ de toetscombinatie in die je wilt maken. 
# Ga nu naar de kaart met de beschrijving van het item in de EditorToolbar waaraan de shortcut moet worden gekoppeld. De kaart heeft als tag $:/core/ui/EditorToolbar en staat waarschijnlijk onder de tab System.
# Voeg een veld shortcuts toe en zet daarin: ((xxx)), waarbij xxx de naam is van de shortcut die je hebt gemaakt.
Camus schetst een somber beeld van de mens inwoners van Oran tijdens de pest: "Ze waren beroofd van hoop en van herinneringen, leefden vanuit het heden. We kunnen er niet omheen: de pest had iedereen beroofd van het vermogen tot liefde en zelfs tot vriendschap. Want liefde heeft een beetje toekomst nodig en voor ons bestond alleen het ogenblik." "Ze werden zo sterk door de epidemie beheerst, dat ze soms alle hoop vestigden op de slaap van de pest en zich betrapten op de gedachte: ‘Gauw, builen, dan ben ik er maar van af!’ Maar in feite sliepen ze al en was die periode één lange droom. De stad werd bevolkt door slaapwandelaars.<p>

Ik eindig met een dialoog tussen Bernard Rieux en zijn oude moeder, nadat ze samen Jean Tarrou hebben begeleid op zijn sterfbed.<p>

‘Bernard?’ <br>
‘Ja.’ <br>
‘Ben je niet moe?’ <br>
‘Nee.’<br>
Hij wist wat zijn moeder dacht en hoeveel ze op dat moment van hem hield. Maar hij wist ook dat de liefde voor een medemens niet veel om het lijf heeft, of althans dat een liefde nooit sterk genoeg is om in de juiste woorden uitgedrukt te worden. Zo zouden hij en zijn moeder altijd woordloos van elkaar houden. En zij zou op haar beurt sterven – of hij – zonder dat ze ooit in hun leven hun innige verbondenheid duidelijker onder woorden hadden gebracht. Op dezelfde manier had hij naast Tarrou geleefd, die die middag overleden was zonder dat hun vriendschap de tijd had gehad om werkelijk beleefd te worden. Tarrou had, in zijn eigen woorden, het spel verloren. Maar hij, Rieux, wat had hij gewonnen? Zijn enige winst was dat hij de pest had gekend en zich die zou herinneren, dat hij de vriendschap had gekend en zich die zou herinneren, dat hij nu innige verbondenheid kende, die hij zich ooit zou herinneren. Al wat de mens kon winnen bij het spel van de pest en van het leven, was kennis en herinnering. Misschien was dat wat Tarrou verstond onder ‘het spel winnen’! Er reed opnieuw een auto langs en mevrouw Rieux schoof wat heen en weer op haar stoel. Haar zoon glimlachte haar toe. Nadat ze had gezegd dat ze niet moe was, vervolgde ze: ‘Je zou een tijdje moeten gaan uitrusten, daarginds, in de bergen.’ ‘Je hebt gelijk, moeder.’ Ja, hij zou wat gaan uitrusten, daarginds. Waarom niet? Ook dat zou weer een aanleiding worden voor herinneringen. Maar als het daarom draaide bij het winnen van het spel, wat moest het dan zwaar zijn om enkel en alleen te leven met je kennis en je herinneringen en zonder hoop. Zo had Tarrou waarschijnlijk geleefd, en hij had beseft hoe onvruchtbaar een leven zonder illusies is. Vrede zonder hoop bestaat niet, en Tarrou, die de mens het recht ontzegde om wie dan ook te veroordelen, die niettemin wist dat een mens het veroordelen niet kan vermijden en dat zelfs slachtoffers soms tot beulen worden, Tarrou was zijn leven lang innerlijk verscheurd geweest en in tegenspraak met zichzelf, hij had nooit hoop gekend. Was dat de reden dat hij naar heiligheid had gestreefd en vrede had gezocht in het helpen van zijn medemens? Eigenlijk had Rieux geen idee, en het deed er niet zoveel toe. De enige beelden van Tarrou die hem zouden bijblijven waren dat van een man die het stuur van zijn auto stevig vastgreep om hem ergens heen te rijden, en dat van het zware, nu roerloos uitgestrekte lichaam. De warmte van een leven en een beeld van de dood, zoveel wist hij.
"""
Serveren met zomervruchtenmoes en plakken tomaat.
In grote kom 1/2 kop gehakte sjalotten en 1/2 kop basilicumblaadjes mengen. Het sap van 1 citroen, zout en peper toevoegen. Mengen en uitsmeren over 6 stukken kip en in een royaal met olie bestreken ovenschotel leggen.
Een beetje olie erover sprenkelen. Oven 180° voorverwarmen, ongeveer 30 min. zonder deksel bakken. Garneren met basilicum en schijfjes citroen.
<div class="tc-wf-table-of-contents">
<<my-toc-linked-selective-expandable-body "Kiza Magendane" sort[tocnr]>>
</div>

{{Proloog||dt}}
{{Deel I. Van vluchteling naar burger||dt}}
:{{1. Aan de rand van het huis brandt het vuur||dt}}
:{{2. De schakelleerling||dt}}
:{{3. Het politieke dier||dt}}
{{Deel II. Het huis dat Nederland heet||dt}}

Neoliberale identiteit.
Onderwijs geeft wereldbeeld mee. Jongeren ontwikkelen zich tot competitieve individualisten. 
Waardenvrij onderwijs -- competentiegericht opleiden.

Identificatie en separatie.

Onderwijs is niet waardenvrij.

Autoriteit is niet overbodig.
Kwalen: geen autoriteit en toenemende ongelijkheid.

Wat is autoriteit? Regelen van verhoudingen tussen mensen vrijwillige onderwerping interne dwang. Dus geen macht: externe dwang. Hannah Ahrendt. Voorbeeld: religie. Zelfde normen: voorspelbaarheid.

Geloof in de bron telt, niet de bron zelf. Augustinus, Romeinse filosofie, Griekse kennisleer. Ahrendt: we geloven niet meer in de bron. Nu: we geloven niet meer in de patriarchale macht. Steeds meer regelgeving.

Minder autoriteit, meer macht, meer sancties.

Herstel van autoriteit. Traditioneel of nieuwe grond voor vrijwillige onderwerping. Traditioneel: pyramide. Nieuw: andere structuur. De groep zelf als bron van autoriteit. Bottom-up netwerken. Ze duiken overal op. Arbeidsorganisaties. Opvoeding. Kind bij grootouders, crèche en ouders. Netwerkautoriteit. Onderwijs: vroeger duale confrontaties. Nu: een netwerk rond de leerling. Ouders, docenten, bestuur. Jongeren krijgen zelf een plaats in dit netwerk.

Jaime Omer Nieuwe Autoriteit

mi Lasagnebladeren.
Geraspte kaas.
Mozzarella (1)
Tomaten, twee broccoli.
Twee blikjes tonijn.
Bechamelsaus: melk, bloem, boter.
<<todolist-ui caption:"[[Let op Ekklesia]]" width:80% base:"ekklesia">>

"""
• Thoravertaling: Huub met Alex in december, Bettine met Skandalon in januari.
• Maandbrief --> Kwartaalblad
• Vluchtelingen Thomas Quartier
* Pop-up koor, Andrieke, eind januari: Mirjam
* Liturgie-experiment 12-02: Kees Kok
* Souterrain Henk Schreuder: Jacques Spaapen (sleutel)
* Communicatie: Seph
* Vereniging en Stichting:  Jos
* Gemeenschap: groepen en pastoraat: Marga
2 september 1894: Geboren als zoon van Nachum Roth en Maria Grübel in Brody. Brody was een middelgrote stad in het Oostenrijks-Hongaarse kroonland Galicië, met een gemengd Joodse, Poolse, Russische, Roetheense en Duitse bevolking. Vandaag ligt Brody in Oekraïne. Roth wordt opgevoed door zijn alleenstaande moeder in het huis van zijn grootvader, een Joods-orthodoxe textielhandelaar. In de familie was Duits de voertaal, met andere kinderen sprak Roth Jiddisch en Oekraïens. Van zijn vader is alleen bekend dat hij tijdens een handelsreis naar Duitsland krankzinnig is geworden en in 1910 overleed.

1901-1905: Roth is leerling aan de Baron Hirsch-school in de Große Pfarrgasse in Brody en krijgt vioolles.

1905-1913: Leerling aan het kroonprins Rudolf-gymnasium in Brody. De lessen zijn in het Duits en er wordt ook Pools, Hebreeuws en Grieks onderwezen. Roth heeft vooral grote belangstelling voor taal en literatuur. Eerste semester Germanistiek aan de Universiteit van Lemberg, de hoofdstad van Galicië en het huidige Lviv.

1914: Tweede semester Germanistiek aan de Universiteit van Wenen. Hoorcolleges aan de filosofische faculteit, lessen van professor Walther Brecht, begin van een levenslange vriendschap met medestudent Josef Wittlin. Op 28 juni wordt Frans Ferdinand van Oostenrijk in Sarajevo vermoord. Een maand later breekt de Eerste Wereldoorlog uit. In Wenen biedt Roth onderdak aan zijn moeder en een tante die voor het oorlogsgeweld uit Galicië zijn gevlucht.

1915: Publicatie van Roths eerste gedicht in de Österreichische Illustrierte Zeitung. Bijdragen aan diverse linkse en pacifistische kranten en tijdschriften.

1916: Na twee keer voor de militaire dienst te zijn afgekeurd, wordt Roth op 31 mei als vrijwilliger in het Oostenrijkse leger toegelaten. Hij volgt een eenjarige opleiding bij de 21ste infanteriedivisie in Wenen. Op 21 november overlijdt Franz Joseph van Oostenrijk. De dood van de oude keizer heeft grote symbolische waarde voor Roth en wordt een belangrijk thema in zijn vroege werk.

1917 en 1918: Militaire dienst in Galicië. Roth wordt ingezet als verslaggever voor de Illustrierte Kriegszeitung. Op zijn reizen tussen Wenen en Lemberg ziet hij de duizenden oorlogsslachtoffers die van het front terugkeren. Na de oorlog wordt Galicië Pools grondgebied, betwist door Oekraïne, en Roth kan niet terug naar huis. Maandenlang zwerft hij rond voor hij uiteindelijk in Wenen belandt. Hij begint te schrijven voor boulevardkranten.

1919: Als journalist geniet Roth steeds meer aanzien en hij wordt een vaste waarde in de Weense koffiehuiscultuur. In Café Herrenhof leert hij de negentienjarige Friederike (Friedl) Reichler kennen.

1920: In Wenen is het door de crisis nog moeilijk om werk te vinden en Roth trekt naar Berlijn. Hij schrijft reportages, essays en recensies voor verschillende bladen zoals de Neue Berliner Zeitung, het 12-Uhr-Blatt, het Prager Tagblatt en de Freie Deutsche Bühne.

1921: Roth wordt cultuurredacteur bij de Berliner Börsen-Courier. Hij geniet een hoge status in de Berlijnse artistieke milieus en is een stamgast in het Romanisches Café.

1922: Op 5 maart trouwt hij met Friedl in de synagoge van de Pazmanitengasse te Wenen. Ze wonen in Berlijn, eerst bij vrienden en daarna in een eigen woning. Hij wordt medewerker van de socialistische krant Vorwärts.

1923: Roth beslist om alleen nog in hotels te wonen, overdag werkt hij in hotels en cafés. Hij schrijft voor de spraakmakende Frankfurter Zeitung en wordt een gerespecteerd en goed betaald journalist. Met zijn reportages over Berlijn (gebundeld als Joseph Roth in Berlijn) baart hij opzien. Samen met Friedl maakt hij vele reportagereizen. Om de luxueuze levensstijl te kunnen aanhouden, werkt Roth dag en nacht. De Weense Arbeiter-Zeitung publiceert de roman Das Spinnennetz in dagelijkse afleveringen. Op 20 oktober verschijnt als eerste Nederlandse vertaling het essay ‘De man in de wc’ in de krant Het Volk.

1924: De romans Hotel Savoy en Die Rebellion verschijnen eerst als vervolgverhaal in de krant en daarna in boekvorm bij uitgeverij Die Schmiede in Berlijn. De Russische vertaling is in de Sovjet-Unie een groot succes. Roth maakt veel reisreportages. Friedl lijdt onder het onstandvastige hotelleven.

1925:  In mei wordt Roth buitenlandredacteur in Parijs voor de Frankfurter Zeitung. In de zomer gaat hij met Friedl naar Zuid-Frankrijk en schrijft Im mittäglichen Frankreich en Die weißen Städte. In het najaar verschijnen twee romans bij Dietz-Verlag in Berlijn: April. Die Geschichte einer Liebe en Der blinde Spiegel. Ein kleiner Roman.

1926: In januari en februari reist Roth door Duitsland en naar de Elzas. Friedl blijft steeds vaker alleen in Parijs. Ze heeft last van angstaanvallen. Op het einde van het jaar vertrekt Roth op reportage naar de Sovjet-Unie.

1927: Teleurstelling over de resultaten van de Russische revolutie. Reportages over Albanië, Joegoslavië en Polen. Bij uitgeverij Die Schmiede verschijnt Juden auf Wanderschaft. Roth is vele maanden onderweg en de gezondheid van Friedl gaat achteruit. In juni zijn ze weer samen in Parijs en nemen hun intrek in Hôtel Helvetia in de rue de Tournon 23. In de zomer gaan ze naar Marseille en Grenoble, in september naar het Glion bij Montreux in Zwitserland. Correspondentie met de Belgische socialist Hendrik de Man en met Stefan Zweig, pleitbezorgers van zijn werk. De roman Flucht ohne Ende verschijnt bij Kurt Wolff Verlag in München.

1928: Roth stelt hoge financiële eisen aan de Frankfurter Zeitung. Het krantenwerk staat hem tegen, hij zou zich volledig aan romans willen wijden, maar kan zich dat financieel niet veroorloven. Hij woont in chique hotels zoals het Englischer Hof in Frankfurt en Hotel am Zoo in Berlijn. In februari wordt Friedl voor een rustkuur naar de Franse kustplaats Saint-Raphaël gebracht. Op 28 april verschijnt de roman Zipper und sein Vater bij Kurt Wolff Verlag. Uitgeverij Die Schmiede publiceert het essay Das Moskauer jüdische Theater. Als Friedl in het voorjaar weer beter is, gaan ze samen naar Polen. Ze verblijven in Warschau en Lviv. In de zomer gaan ze eerst naar Bellinzona in Zwitserland en reizen via Locarno en Innsbruck naar Wenen. Friedl is uitgeput van het vele reizen. In Wenen wonen ze eerst in Parkhotel Schönbrunn en daarna in het centraal gelegen Hotel Imperial. Friedl is uitgeput. In oktober reportages in Italië, met bezoek aan Triëst, Merano, Milaan, Rome, Napels en Genua. De redactie censureert kritische passages over Mussolini en het fascisme. Roth is woedend. In november en december achtereenvolgens naar Frankfurt am Main, Wenen, Berlijn, Parijs, terug naar Wenen, naar Zürich en opnieuw naar Parijs. Daar is Hôtel Foyot in de rue de Tournon zijn vaste verblijf geworden. Op 13 december ondertekent hij een contract voor Hiob. Roman eines einfachen Mannes (in het Nederlandse vertaald als Job) bij de beroemde uitgeverij Gustav Kiepenheuer in Berlijn. Zijn literair aanzien stijgt.

1929: In januari wonen Roth en Friedl in Hôtel Beauvau in Marseille, ‘Hotelmens’ ontstaat. Roth is met verschillende romanprojecten tegelijk bezig en de verstandhouding met de redactie van de Frankfurter Zeitung is zo problematisch dat de samenwerking zelfs tijdelijk wordt stopgezet. Eerste bezoek aan Stefan en Friderike Zweig in hun villa op de Kapuzinerberg in Salzburg. Roth begint een relatie met de actrice Sibyl Rares. Kennismaking met Andrea Manga Bell, een journaliste uit Hamburg van half Cubaanse afkomst, die twee kinderen heeft van een Afrikaanse prins. Friedl wordt opgenomen in het psychiatrisch ziekenhuis Westend in Berlijn. Roth beschrijft haar psychose in de roman Hiob. In oktober wordt hij zelf ernstig ziek, zijn lever is aangetast door de drank. De roman Rechts und Links verschijnt bij Gustav Kiepenheuer.

1930: Stefan en Friderike Zweig helpen Roth om goede zorg voor Friedl te vinden en geven geld. Stefan Zweig moedigt hem aan om minder te drinken en zich op het schrijven te concentreren. In mei wordt Friedl opgevangen door haar familie in Wenen, die haar naar de gesloten psychiatrische instelling Rekawinkel bij Wenen laat overbrengen. De bundel Panoptikum. Gestalten und Kulissen verschijnt bij uitgeverij Knorr & Hirth. In de Frankfurter Zeitung loopt Hiob als vervolgverhaal, het boek wordt een bestseller en Roth breekt internationaal door. Door de bemiddeling van Stefan Zweig komt er een Engelse vertaling en ook de Franse en Nederlandse vertaalrechten worden verkocht. Kiepenheuer biedt een contract aan voor een volgende roman: Radetzkymarsch.

1931: Roth heeft schulden en is ziek. Stefan Zweig nodigt hem uit in een luxehotel in Antibes, waar hij in alle rust aan Radetzkymarsch kan werken. Affaire met de Vlaamse Maria Gillès de Pélichy. In maart is hij enkele dagen in Brussel. Hij staat in contact met kringen rond de uitgever en kunstverzamelaar Gustave van Hecke. Op het einde van het jaar begint de relatie met Andrea Manga Bell.

1932: Op 17 april verschijnt de eerste aflevering van Radetzkymarsch in de Frankfurter Zeitung. Het boek wordt meteen een bestseller. In juni en juli verschijnt Job als vervolgverhaal in de Belgische krant Le Peuple. Roth verblijft achtereenvolgens in Parijs, Frankfurt am Main, Ascona, Berlijn en Leipzig. Kerst en nieuw viert hij in Hamburg met de familie van Andrea Manga Bell.

1933: Op 30 januari benoemt president Hindenburg Adolf Hitler tot rijkskanselier. Roths romans worden verboden. Hij verlaat Duitsland en gaat naar Parijs. Manga Bell en haar kinderen volgen, hij staat financieel voor hen in. Roth onderhandelt met verschillende uitgevers over de oprichting van een Duitse uitgeverij buiten Duitsland en komt terecht bij de uitgeverijen Querido en Allert de Lange in Amsterdam. Zijn werk verschijnt bij beide uitgeverijen en hij schrijft artikelen voor emigrantentijdschriften als Das Neue Tage-Buch en Die Sammlung. In de zomer woont Roth in Hotel Schwanen in het Zwitserse Rapperswil. In december 1933 logeert hij enkele dagen in het Americain Hotel in Amsterdam, waar hij met zijn nieuwe uitgevers over contracten wil onderhandelen. Friedl wordt opgenomen in de psychiatrische instelling Am Steinhof in Wenen.

1934: Roths gezondheid verslechtert en hij kan de instelling voor Friedl niet meer betalen. Stefan Zweig geeft geld. Op 25 juli is er in Oostenrijk een poging tot staatsgreep door de nationaalsocialisten en de kanselier Dolfuss wordt vermoord. Roth sluit zich aan bij legitimisten, een conservatief-monarchistische beweging die ijvert voor de terugkeer van de Habsburgers. De keizerlijke troonopvolger Otto von Habsburg woont met keizerin Zita en haar andere zes kinderen in ballingschap in kasteel Ter Ham in Steenokkerzeel bij Brussel. Bij Querido Verlag in Amsterdam verschijnt Tarabas. Ein Gast auf dieser Erde. De zomermaanden brengt Roth in Zuid-Frankrijk door. Hij kan bij vrienden logeren, maar smeekt Stefan Zweig om geld, zodat hij een hotel kan betalen. Hij schrijft de Napoleonroman Die Hundert Tage. Der Antichrist verschijnt bij Allert de Lange. Het boek staat vol fouten omdat de drukker geen Duits kent.

1935: In mei komt Roth naar Amsterdam. Hij heeft meer tijd nodig voor de roman over Napoleon en vraagt Gerard de Lange, de zaakvoerder van uitgeverij Allert te Lange, meer voorschotten. Omdat schuldeisers hem blijven achtervolgen, reist hij naar Wenen, waar hij de procedure voor de scheiding van Friedl wil inzetten. Hij logeert in Hotel Bristol. Friedl kan worden opgenomen in de kosteloze instelling Mauer-Öhling bij Amstetten en Roth beslist toch niet te scheiden. In oktober verschijnt Die Hundert Tage bij Allert de Lange.

1936: Zweig wil Roths schulden betalen op voorwaarde dat hij Parijs verlaat en minder drinkt. Midden maart aankomst in Amsterdam. Verblijf in Hotel Eden in de Warmoesstraat 24. Hij krijgt geen nieuwe contracten bij Querido en Allert de Lange en het leven in Amsterdam is erg duur. Roth wordt een bezienswaardigheid in de stad, hij zit overdag in verschillende kroegen. Begin juli reist hij naar Brussel en woont een week in Hotel Siru aan het Brouckèreplein. Op 9 juli 1936 gaat hij Oostende, samen met Stefan Zweig. Hij woont in Hôtel de la Couronne op de hoek van de Vindinctivelaan en de Kapellestraat/Christinastraat. Er zijn veel Duitse emigranten in Oostende en Roth leert er de schrijfster Irmgard Keun kennen. Ze beginnen een relatie. Op 1 augustus gaat Roth naar Steenokkerzeel om Otto von Habsburg te ontmoeten. Van 17 september tot begin oktober woont hij in Brussel in Hôtel Cosmopolite op het Brouckèreplein. In Amsterdam verschijnt Beichte eines Mörders, erzählt in einer Nacht, het boek krijgt veel aandacht in de pers. Door de bemiddeling van Anton van Duinkerken krijgt Roth een gunstig contract bij uitgeverij De Gemeenschap voor twee nieuwe romans en voor de heruitgave en de Nederlandse vertaling van Radetzkymarsch. Begin november gaat de chef de réception van Hotel Eden ervandoor met de inhoud van de hotelkluis en Roths voorschotten. Hij gaat via Parijs en Wenen naar Lviv, waar hij de jaarwisseling in familiekring viert.

1937: In opdracht van een conservatieve Oostenrijkse krant komt Roth naar België om er verslag uit te brengen van de politieke situatie. Verblijf in Hôtel Cosmopolite. Hij reist naar Wenen als bemiddelaar voor de legitimisten in Steenokkerzeel. In mei verschijnt de roman Das falsche Gewicht bij Querido. Van 2 juni tot 27 juli is hij terug in Hôtel Cosmopolite, van 28 juli tot 21 september in Hôtel de la Couronne in Oostende. Omdat Roth niet tijdig het manuscript voor de roman Die Geschichte von der 1002. Nacht inlevert, komen er geen betalingen meer. Roth gaat terug naar Amsterdam en logeert in het City Hotel, hoek Rembrandtplein-Utrechtsestraat. Van 28 september tot 7 oktober is hij weer in Hôtel Cosmopolite in Brussel. Contact met Jan Greshoff en Nico Rost.

1938: Hôtel Foyot in Parijs moet worden afgebroken en Roth blijft er als laatste wonen. Hij neemt zijn intrek in Hôtel de la Poste aan de overkant van de rue de Tournon. Op 2 maart is hij in Wenen om een legitimistische staatsgreep voor te bereiden. In Steenokkerzeel maakt Otto von Habsburg zich op om naar Wenen te vertrekken. Op 18 maart wordt Oostenrijk aangesloten bij het Derde Rijk. Roth wordt in Parijs een spilfiguur in Duitse en Oostenrijkse vluchtelingenorganisaties. Hij verwerkt de politieke gebeurtenissen in Oostenrijk in de roman Die Kapuzinergruft. Die Geschichte von der 1002. Nacht kan niet verschijnen omdat de inhoud beledigend is voor de Oostenrijkse keizer.  1939 Roth wordt uitgenodigd door de Amerikaanse PEN-club om naar New York te gaan. Hij blijft in Parijs. Op 24 mei stort hij in als hij verneemt dat zijn vriend Ernst Toller in New York zelfmoord heeft gepleegd. In het ziekenhuis verbiedt de arts hem alcohol te drinken, hij krijgt een delirium tremens en vervolgens een longontsteking. Hij sterft op 27 mei in de vroege ochtend. Uitgeverij Allert de Lange verspreidt een persbericht en kondigt de publicatie van Die Legende vom heiligen Trinker aan. De begrafenis is drie dagen later op de Cimetière Thiais in Parijs. Talrijke Nederlandse en Vlaamse kranten publiceren een in memoriam voor Joseph Roth. In Brussel vindt er een herdenkingsplechtigheid plaats door de Cercle Culturel Autrichien, een vereniging van Oostenrijkse vluchtelingen. In december verschijnt Die Geschichte von der 1002. Nacht bij uitgeverij De Gemeenschap.

1940: Op 8 mei vallen de Duitsers Nederland binnen. De Gestapo valt binnen bij Querido en Allert de Lange. Friedl wordt overgebracht naar een psychiatrische instelling waar patiënten worden vergast. Ze overlijdt in juli.

<<ximg width:100% "/Cultuur/Het Gombrich Museum.png">>

|<<ximg width:400px "/Cultuur/Gombrich 1.png">>|<<ximg width:400px "/Cultuur/Gombrich 2.png">>|
|<<ximg width:400px "/Cultuur/Gombrich 3.png">>|<<ximg width:400px "/Cultuur/Gombrich 4.png">>|
|<<ximg width:400px "/Cultuur/Gombrich 5.png">>|<<ximg width:400px "/Cultuur/Gombrich 6.png">>|
|<<ximg width:400px "/Cultuur/Gombrich 7.png">>||
15-11-21 Hoe gaan we dit aanpakken? Hebben we dat boek van Samama nog? Ja in Google Books: https://books.google.nl/books?id=tLhsAwAAQBAJ&hl=nl&source=gbs_slider_cls_metadata_7_mylibrary

|<<ximg width:400px "/Literatuur/Samama De zin van muziek Inhoud 1.jpg">>|<<ximg width:400px "/Literatuur/Samama De zin van muziek Inhoud 2.jpg">>|

Vijf delen. Deel A lezen via tablet. Daar eens mee beginnen.

17-11-21 Deel A gelezen. Alleen het thema Taal en Muziek lijkt bruikbaar. Verder het idee dat we de lijn van Gombrich kunnen volgen, maar dan in de muziek. Nog een keer de lezing bij langs lopen.

<$details summary="Lezing Gombrich" open="no">
{{Lezing Gombrich}}
</$details>

Als we deze lijn doortrekken, wat krijgen we dan?

!! Componeren is experimenteren

1. Het schema. Componisten staan in een traditie, experimenteren en vernieuwen. Luisteren is verwachtingen toetsen. [[Vernieuwende componisten]]

2. [[Imitatio della natura]]. Geluiden en stemmingen.

3. [[Van functie naar vorm]]. Renaissance.

4. Schema's in de muziek. Het conservatorium. Muzikaal talent.

5. [[Illusies in de muziek]].

6. Van kind naar volwassene. Impressionisme.

7. Expressionisme.

23-11-21 Hoe gaan we verder. Toch maar deel B van Samama. Dat eerst afmaken.

24-11-21 Verder met deel  B van Samama. Waar gaat het over? Eigenlijk een verdieping van het begrip muziek. Muziek als tijdkunst. Bach's preludium vormt wel een mooie rooie draad. Deel C is dan de luisteraar, D de uitvoerende musicus en E de muziekgeschiedenis. 

13-12-21 We hebben een mooie outline. 

09-01-22 We hebben nog steeds een mooie outline. Hoe wordt die ingevuld? Misschien beginnen met het eerste onderwerp: de traditie en de vernieuwing. Vernieuwende componisten. 
Lijst van strategische onderwerpen voor bestuur en liturgisch team in 2022

Onderstaande lijst is geordend over de vergaderingen van bestuur en liturgisch team in 2022. De lijst is niet uitputtend, de ordening staat open voor verschuiving. Voorstel is om per vergadering twee onderwerpen wat grondiger te behandelen. Per onderwerp een korte notitie ter inleiding.

januari
1. Plaats Ekklesia in de (post-)coronasamenleving
2. Planning ledenraadpleging

februari
1. Diaconaat
2. Samenstelling liturgisch team

maart
1. Liturgievernieuwing na experiment in februari
2. Communicatie

april
1. Vereniging en Stichting
2. Gemeenschap: groepen en pastoraat

mei
1. Follow-up ledenraadpleging
2. Vervolg plaats Ekklesia in (post-)coronasamenleving
Linking, specifically bi-directional linking, is the heart of Stroll. Links create connections between your notes, and help you navigate quickly from one note to the next. Links are wrapped in double square brackets:

`[[This is what a link looks like]]`

!Autocompletion

Stroll has an autocomplete feature, so when you type `[[` and start typing a link name, it will display some of the tiddlers that have those characters.

<span class="bluebox">

''Activity:''

Open [[Autocompletion]] and follow the instructions in that tiddler to learn about autocompletion. Don't worry, you will be given directions to get back to the tutorial.

</span>

When you are done playing with the Autocompletion tiddler, you are ready for the next part of the tutorial.
Stroll has a references section below each tiddler, which lists any tiddlers that backlink to that tiddler. That way you can move back and forth quickly between tiddlers.

The references can be viewed in four different ways, or hidden completely. You can change them in the reference tab (<<icon {{$:/core/images/preview-open}}"">>) in the sidebar. 

*''Full text'' - displays each reference as a link and as the contents of that tiddler 'transcluded' into this tiddler.
*''Full text under sliders'' - displays each reference as a link and with a button to reveal and hide the contents of each tiddler separately.
*''Hidden'' - hides the references section from all tiddlers when you need to do that.
*''Highlights in context'' - displays each reference as a link and as highlighted search results, so you can see the context of the references without having to scroll through the entire tiddler.
*''Simple links'' - displays each reference as a simple link.

<span class="bluebox">

''Activity:''

In the sidebar, open the tab with the big pink eyeball (<<icon {{$:/core/images/preview-open}} "">>), if you haven't already. There you will find a link to a tiddler called `Muffin!`. Open Muffin! and click on the checkboxes there to see how they change the appearance of the links at the bottom of that tiddler. You will be given instructions to get back to the tutorial.

</span>

When you are done playing with my dog, head to the next part of the tutorial.
!Automatic renaming of links when changing tiddler titles

One more thing about linking: if you change the name of a tiddler, all the links to that tiddler will automatically be renamed. That will save you a lot of headaches later on.

<span class="bluebox">

''Activity:''

#Open the tiddler [[Dave Gifford]] and follow the instructions there. You will be led back to the tutorial from there.

</span>
1.1 Intro: https://www.youtube.com/watch?v=kavUbQ4FvyM
1.2 Behaviorism: https://www.youtube.com/watch?v=y4p-qyx2QQc
1.3 Cognitivism: https://www.youtube.com/watch?v=nPqdqI8yGx0
1.4 Constructivism: https://www.youtube.com/watch?v=dbaISl1y1Tk
1.5 Research Methods: https://www.youtube.com/watch?v=8Mqxkt066L0
"""
Uitje fruiten, wortel, stengel bleekselderij en knolselderij erbij.
Water koken, twee bouillonblokjes.
Half pond rode linzen afspoelen en erbij.
Salie, koriander takjes.
Peper en zout.
Half uur pruttelen en dan uit.
<$details summary="Quick Notes">
{{Quick Notes}}
</$details>
<$details summary="Routebeschrijving voor Anne">
{{Routebeschrijving voor Anne}}
</$details>
<div class="tc-wf-table-of-contents">
<<my-toc-linked-selective-expandable-body "" sort[tocnr]>>
</div>
<<newtids "
Het Bureau 001
Het Bureau 002
Het Bureau 003
Het Bureau 004
Het Bureau 005
Het Bureau 006
Het Bureau 007
Het Bureau 008
Het Bureau 009
Het Bureau 010
Het Bureau 011
Het Bureau 012
Het Bureau 013
Het Bureau 014
Het Bureau 015
Het Bureau 016
Het Bureau 017
Het Bureau 018
Het Bureau 019
Het Bureau 020
Het Bureau 021
Het Bureau 022
Het Bureau 023
Het Bureau 024
Het Bureau 025
Het Bureau 026
Het Bureau 027
Het Bureau 028
Het Bureau 029
Het Bureau 030
Het Bureau 031
Het Bureau 032
Het Bureau 033
Het Bureau 034
Het Bureau 035
Het Bureau 036
Het Bureau 037
Het Bureau 038
Het Bureau 039
Het Bureau 040
Het Bureau 041
Het Bureau 042
Het Bureau 043
Het Bureau 044
Het Bureau 045
Het Bureau 046
Het Bureau 047
Het Bureau 048
Het Bureau 049
Het Bureau 050
Het Bureau 051
Het Bureau 052
Het Bureau 053
Het Bureau 054
Het Bureau 055
Het Bureau 056
Het Bureau 057
Het Bureau 058
Het Bureau 059
Het Bureau 060
Het Bureau 061
Het Bureau 062
Het Bureau 063
Het Bureau 064
Het Bureau 065
Het Bureau 066
Het Bureau 067
Het Bureau 068
Het Bureau 069
">>
Vanochtend gewandeld in het Foresta Umbra, het Donkere Bomen Bos. Het was  daar inderdaad een stuk koeler dan hier bij het huisje. Rustig tochtje van een uur, op voorschrift van Cathrien. Na afloop nog enkele producten bij de verkopers gekocht. We zaten echt in het midden van de Gargano daar. 

Gisterochtend een rustige ochtend bij het huisje, in de heerlijke zon gelezen en naar de vogeltjes geluisterd. We zitten hier vrij hoog in een vallei die uitkomt op de kust. In de verte de zee. Gistermiddag een ijsco op de pier van Rico, lekker gelezen en een tochtje door het dorp. Vandaag begint een driedaags feest voor Maria. Vanochtend al vuurwerk, woensdag een processie. 

Het bevalt hier zeer goed, echt een heerlijk rustig plekje! Lekker lezen en luieren. 
Gisteravond de leesclub in Zwolle. We lazen Zwarte Schuur van Oek de Jong. Een prachtige roman over een kunstenaar die gebukt gaat onder een zwaar verleden. Als 14-jarige heeft hij een meisje van de zolder van een zwarte schuur geduwd waardoor zij om het leven kwam. Het schuldgevoel versterkt het isolement van het kind en later de schilder. Door geweld probeert hij een doorbraak te forceren. Wat niet lukt.

We waren met zes. Dirk en Elzemien ontbraken vanwege Elzemien's hersenschudding na haar ernstige valpartij drie weken geleden. Paula verblijft in een revalidatiecentrum naar haar heupoperatie. Vanwege haar Parkinson kan zij niet naar huis terugkeren.

De wereld is in de ban van het coronavirus. In Nederland zijn nu 8 besmetten.
"""Vanochtend: Anne en Cathrien naar O. om boodschappen te doen, ik Saar in bed gedaan. Daarna een fietstochtje naar Brecklenkamp. Vanmiddag eerst in de zon thee gedronken, daarna fietstochtje door Duitsland gemaakt. Cathrien op tafel in bad.
Telefoontje van Meindert (Simons nr. 1 in Leiden) leverde flinke katerstemming op. Kritiek aan mijn adres: te weinig buitenlandse publicaties. Wat eraan te doen? Niet zeuren en proberen meer gepubliceerd te krijgen. Echt een hogere prioriteit geven, planning aanpassen. Zoiets als: elke ochtend van &frac12;9 - &frac12;11, de beste tijd van de daag. Veel direct via Macintosh. Deze week beginnen met exp! Paper over dissonderzoek! Opsturen naar Acta of Instructional Science. In tweede instantie Cognition & Instruction. Paper met Meindert over genetisch model opzetten, paper over PWN voor J. of Comp. Based Learning. 

Leuker: Cathrien heeft in het afgelopen weekend het zwembad op de boerderij in Den Nul ontdekt. Met kurken en vlinders bleef ze meteen goed drijven. Bij het trapje omhoog en van de tweede, later van de eerste sport afspringen. Lang maken op de buik. Op de rug. Spetteren. Op de kant zitten en in het water springen. Tenslotte zelfs staan op de kant en in het water springen waarbij ze helemaal kopje onder ging! Geen kik gegeven! Dolenthousiast, niet meer weg te slaan uit het water. Iedereen stond er versteld van.

Voor Frances 9 mnd extra gekregen. Henk gaat op OWF-project zitten voor 2 jaar. Volhouden. 
Afgelopen week onder grote druk gestaan om een artikel af te krijgen dat besproken wordt in de HogCog komende donderdag. Het is gelukt, maar wel ten koste van de 6 punten aanpak. Ik zou een beetje slimmer moeten zijn in manier waarop ik mijn eigen werk beheer. OK, thuis de boel weer helemaal opgeruimd. Zo dadelijk de boel in Leiden opruimen en weer een frisse start maken.
    
Zojuist bij de tandarts langs voor de halfjaarlijkse controle. Met bewondering geluisterd naar de manier waarop Raymond en zijn vrouw strijden tegen de ovariumkanker waaraan zij nu al een jaar of twee lijdt. Erg knap en slim zoals ze de strijd aanpakken. Dapper strijdend maar ook met veel vindingrijkheid en intelligentie en geduld.
    
Afgelopen vrijdag bij Wim en Annette gegeten. Allerlei kleinere familieperikelen met de kinderen. Je verwacht zoiets niet na de crises die ze de afgelopen maanden hebben doorgemaakt. Maar het is toch ook wel weer te begrijpen, een soort reactie op de spanning. Wim en Annette zijn eigenlijk heel dappere en bijzondere mensen. Troubles in het werk bij zowel Wim als Annette lijken op wat anderen in deze leeftijdsfase ook meemaken. Lopen mensen rond hun 50ste tegen hun grenzen aan?
    
Cathrien heeft even wat afstand van Tobias genomen, op zijn verzoek. Hij denkt Cathrien in haar ontwikkeling te belemmeren. Hij vindt het erg fijn als zij er is en wordt erg neerslachtig als zij weg. Dan maar helemaal weg. Drie mooie boekbesprekingen van Cathrien gelezen: The Lost Tale of the Cranes, An Equal Voice, Moon Palace. Er spreekt veel rustige wijsheid en scherpzinnigheid uit haar teksten. Ik hoop dat ze medicijnen gaat studeren. Ze kan veel mensen tot zegen zijn.
"""De dag begon vanochtend vroeg: om 6.30 stonden Sanne Dijkstra en Bob Tennyson op de stoep om Leen en mij mee te nemen voor een bezoek aan Edison High School aan de andere kant van Minneapolis. De school bleek een oud gebouw te zijn waarin 1400 leerlingen uit blue collar gezinnen schoolgaan. In een voormalig magazijn stonden 12 Apples opgesteld waar leerlingen extra wiskundelessen met LOGO krijgen. De docent had zelf de werkbladen gemaakt, indrukwekkend materiaal dat echter door de leerlingen niet steeds werd nagevolgd en begrepen. De docent moest veel moeite doen om extra uitleg te geven. Een klein incident zorgde voor enige opschudding. Onze jassen hingen in een “locker” die niet op slot was. Opeens zie ik vanuit het lokaaltje hoe een meisje op de gang de locker openmaakt en mijn jas begint te doorzoeken! Ik loop naar haar toe en vraag wat ze zoekt. Ze loopt terug naar haar klas (neemt het slot mee) en wordt met veel gelach ontvangen. De docent van het computerlokaal en de toevallig aanwezige principal zijn enigszins verlegen met de situatie. Het slot komt weer terecht. Verder een weinig opwindende dag. Vanmiddag geslapen, gelezen, kaarten geschreven en gezwommen. Morgen naar San Francisco.

+
Vandaag is de kleine Mercia geboren, om 20.05, 2900 gram. Bevalling verliep (in het ziekenhuis vanwege de hoge bloeddruk) zonder complicaties, Cathrien heeft zelfs nog in bad gezeten.  
"""
12 juni is het feest, allen zijn wij blij van geest. Beelden zijn slecht voor mij, geluid is goed en belangrijk. Mediteren --> adem halen --> jezelf klein maken --> humor --> liefde voor Anne voelen. Je kunt overal in dit treintje instappen. Maar wel belangrijk dat je in dit treintje blijft zitten. 
Het enige wat helpt is doen. Stilzitten en nadenken leidt tot grote somberheid. Gebrek aan nachtrust werkt daar erg in mee. JE MOET ECHT OM 22:30 NAAR BED GAAN EN DAN SNEL GAAN SLAPEN!!! Vannacht viel ik pas om 1 uur in slaap en nu zit ik er als een dweil bij. Moet vandaag op Mercia passen. Ik hoop maar dat dat gaat lukken. Stilzitten achter de computer leidt ook tot grote somberheid, jammer genoeg. Het is op zich een brein uitdagende bezigheid. Maar verslavend en tot niets leidend. 
<<ximg "Pensionado/Geheugen/Dagboek/20061113 Dagboek.png">>
!!! Tiende vakantiedag

Gedaan: ´s Ochtends weer rondje Loretello. Boodschappen via Nidastore in San Lorenzo in Campo bij de SuperCoal. ´s Middags naar Corinaldo.

De dag goed begonnen met een rondje Loretello, zwem en planken. Ook 's ochtends is het uitzicht op de bergen prachtig.

|<<ximg width:300px "/Foto's/2021 Italië/0913 Ochtendwandeling.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0913 Uitzicht op de bergen vanuit Bocca di Lupo.jpg">>|
|borderless|k

Voor de boodschappen eerst naar Nidastore, maar daar zijn geen winkels, net als in Loretello. Wel weer een mooi plaatsje. Doorgereden naar San Lorenzo in Campo, waar we terecht konden bij de Supercoal. Nog even een capuccino op het pleintje en weer naar huis.

<<ximg width:400px "/Foto's/2021 Italië/0913 Nidastore.jpg">>

's Middags naar Corinaldo, prachtig stadje in de buurt. De trap met in het midden de Pozzo della Polenta is beroemd, verder de muren, waar je aan de binnenkant langs kunt lopen. Erg veel prachtige straatjes en huizen. Bijzonder was in een kerk het beeld van de heilige Lucia, met op een schotel haar twee ogen. Lucia is de patrones van de blinden. Bijzonder ook het verhaal van de heilige Maria Goretti, geboren in 1890, die op jonge leeftijd werd verkracht en vermoord door een man bij wie ze in huis woonde. De moordenaar werd tot 30 jaar dwangarbeid veroordeeld. In de gevangenis kreeg hij een visioen van Maria Goretti. Eenmaal vrij trad hij als lekenbroeder tot de orde van de Capucijnen toe in Macerata. Het verhaal maakte dermate veel indruk, ook het feit dat ze de man op haar sterfbed vergiffenis schonk, dat ze in juni 1950 door paus Pius XII heilig werd verklaard, in aanwezigheid van de moeder en de moordenaar. 

|<<ximg width:400px "/Foto's/2021 Italië/0913 Corinaldo.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0913 Anne bij de pozzo.jpg">>|
|<<ximg width:400px "/Foto's/2021 Italië/0913 Santa Lucia.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0913 Avond in Loretello.jpg">>|
|borderless|k

De avond in Loretello is prachtig. Zie ook de panorama-foto.

<<ximg width:100% "/Foto's/2021 Italië/0913 Panorama Bocca di Lupo.jpg">>
Weer terug naar Amsterdam na een week zingen in York. York Minster is een enorme kathedraal waar je je toch thuis gaat voelen, vreemd genoeg. 
Het zingen ging heel ontspannen. We hadden alle stemgroepen wel een paar goede stemmen. Martin hoefde niet zo vaak uit te pakken. Zelf heb ik nog nooit zo ontspannen gezongen, af en toe lekker een keel opgezet. Vond het allemaal erg mooi klinken en heb er erg van genoten. 
Was natuurlijk heel gezellig dat Anne woensdag kwam. Tweede helft vloog om. 
Veel gezellig gegeten met de koorleden. Met name met Alex en Jurgen. Leuk stel van rond de vijftig met twee studerende dochters. Alex zingt alt. Jurgen houdt zich bezig met de zelforganisatie van mensen in woonwijken. Zoiets als wat wij in Noord4Us doen, maar dan ook met de zorg en andere gemeenschappelijke zaken. 
De spanning stijgt. Nog geen tekenen. Ik werk koortsachtig aan artikel over rekenproject. Morgen afmaken als de tijd me nog gegund wordt. Vanmiddag aan een Hypercard-programma gewerkt. Fascinerend wat daarmee kan. Vanavond wat moeite met Sara en Cathrien. Saar erg driftig aan tafel. Als ze voor zes uur de maaltijd niet binnen heeft wordt het dollen. Ze slaat het eten uit je handen, gooit alles op de grond en zet het op een brullen. Ze kwam vanavond bij Anne op schoot wel weer tot rust zodat de vla nog naar binnen gelepeld kon worden. Ondertussen kiest Cathrien partij voor Sara en begint haar te verontschuldigen, wat wel weer heel aandoenlijk is. Kon C. vanavond ook slecht in bed krijgen. Moeilijk om streng te zijn en tegelijk Cathrien niet in alles af te kappen. 't Ging goed tot ze het schemerlampje aan wilde en natuurlijk het kapje vervangen moest worden. Liefde is ... dat je het nog net even verdraagt. Lukte mij niet. Achteraf spijt. Te laat naar huis gegaan. Morgen beslist om 5 uur stoppen!! En nu voortaan altijd!! Opruimen en wegwezen. Moeilijk. 't Moet kunnen, volgens plan werken. Je tijd indelen. Morgen gewoon met frisse moed opnieuw proberen. Nog nog even Sacks. Fascineren. 
"""
Alleen maar leuke dingen doen, dat was toch het idee? Ik doe mijn best maar het kost wel moeite. Vandaag heeft Sara haar nieuwe vrijer aan Gerrie en Cathrien voorgesteld. Tja. Berend gaat goed op zijn stage. Onderzoek naar de manier waarop zorgverzekeringen zorg inkopen bij zorgaanbieders. Het gaat om langdurige zorg, long term care. 
16:58  Tsja, het is zover! Gister een heel gezellige verjaardag. Ontbijt op bed (moederdag!). Cadeaus: mooie polo (?) met knopen van Cathrien en Sara, bon voor loopschoenen van Berend, mooi kunstwerk van Daan van Anne. Daarna gezellig ontbeten en naar de kerk. Curieuze dienst: mededeling van Ton Honig dat hij ernstig ziek is, twee oude mannen flauw gevallen van wie één heel ernstig ziek, een hersenbloeding. Niet echt een vrolijke verjaardagsdienst. Daarna naar huis, koffie met pa & ma. Om vier uur begon het feest in de aula van de Hildebrand-Van Loonschool. Heel gezellig versierd met lappen en slingers en ballonnen. Gerrie en Daniël hadden de catering in handen. Laura, Julia en Cathrien deden de bediening.  Alles uitstekend verzorgd. Enorme opkomst, eigenlijk is iedereen gekomen, behalve H. Oosterhuis (broer in Groningen bleek het slecht te maken). Moeder was er, Jan van Kilsdonk, Kitty, Dick van Arkel, Lyckle Aardema, natuurlijk de familie en de club, alle vrienden, incl. Elzemien, collega's (Pascal, Hanneke, Jessica, Samantha, Sandra + vriend, Frans + Nandi + Teun).

De muzikale bijdragen begonnen met een lied van Anne, en een duet van Anne en Cathrien, Purcell, heel zuiver en ontroerend. Daarna de gebruikelijke stukjes van vrienden en familie. Zelfs de Van Remmens hadden zich enorm uitgesloofd. Al met al een heel vrolijke en ontspannen sfeer. En het eten en drinken was heel lekker. Allemaal heel hartverwarmend, erg van genoten.


Het is nu 05:59. Gisteren een eerste uur op niveau gerealiseerd. Dat er vele mogen volgen. De Russen proberen nog steeds, ten koste van veel mensenlevens en een reusachtige ravage, in Grozny de touwtjes in handen te krijgen. De vraag is of Jeltsin dit overleeft. Vandaag belangrijk nieuws: vervanging Henriëtte de Jonge (en ook mijn bevordering naar schaal 14). Gisteren in de kerk Rinse Reeling Brouwer: God deelt Jeremia mee, dat Hij zelf nu alles aan het afbreken is. En dat Hij er zelf ook grote moeite mee heeft. Is dat een fin de siêcle gevoel: dat alles verkeerd gaat? Het gevoel van de teleurgestelde verwachting. Ook in het verhaal van Huub bij de vorige Kerstavond. 
Vandaag proberen minstens drie uren op niveau te realiseren.
Een dag die de geschiedenis zal ingaan. Een toespraak tot de natie van de minister-president, Mark Rutte. Vergelijkbaar met Joop den Uyls toespraak in 1972 tijdens de oliecrisis. Rutte kondigde aan dat 60% van de mensen besmet zal raken met het coronavirus. Dat we op drie manieren kunnen reageren: beheersen, z'n gang laten gaan, of proberen met wortel en tak uit te roeien. Dat we gaan voor het eerste alternatief. Maar dat we daar gemakkelijk een jaar mee in de weer kunnen zijn. Die 60% vind ik wel schokkend. Maar Cathrien vroeg zich af of dat percentage bij een gewone griepgolf ook wordt gehaald. In ieder geval zijn alle scholen dicht, alle crèches, alle schouwburgen en bioscopen. Alle sportevenementen zijn afgelast. Hoe lang gaat dit duren?

Anne ligt ook met koorts in bed. Gelukkig slaapt ze nu lekker met een paracetamol. Hopelijk loopt dat met een sisser af.
Sinds zaterdag in San Gimignano. Het weer en de auto blijken onzekere factoren te zijn in deze vakantie. Het weer: wisselvallig, regen, maar soms ook opeens weer volop zon en warm. ‘s Ochtends in ieder geval mist die ruime gelegenheid biedt tot alle mogelijke analyses. De auto: startmotor hapert, zaterdag handremkabel stukgetrokken. We gaan vandaag een garage opzoeken in Colle di Val d’Elsa om de handrem te laten repareren. Nog niet eerder meegemaakt: het weer en de auto als potentiële vakantiepret verstoorders. A.C. heeft er meer moeite mee dan ik. Ze mist bovendien de kinderen nogal. Verder valt er hier veel te zien. Gisteren (zondag) trokken veel Italianen er in de namiddag op uit om in de straten van San G. te flaneren, soms met parmantig uitgedoste kleine kinderen. De jeugd is onder te verdelen in diverse leeftijdscategorieën. Zo heb je jonge meisjes van 10 tot 15 jaar die groepsgewijs optrekken en wier gesprekken je dikwijls de namen van jongens hoort. Je hebt 18 - 20 jarige stellen, rondwandelend of vrijend in het park rond de Rocca. Verder zijn er natuurlijk oude heren die naast elkaar op stoelen bij een café langs de straat zitten.
"""Een warme en zonnige dag. Tot het ritueel van Cathrien naar bed brengen hoort “even vertellen”: een korte terugblik op de avonturen van de dag. Cathrien begint het verhaal tegenwoordig aan te vullen met details: “mama at een boterham”, in plaats van de pap die Anne vanochtend “eng” vond; “we reden op de tunnel”, het tunneltje vlakbij O. waar je hiervandaan doorheen komt; “ik zat in het karretje”, bij de supermarkt waar Cathrien en ik vanochtend boodschappen deden. Na de koffie bij huis gebleven. C. heeft in het badje gespeeld. Sara met haar benen in de zon. Vanmiddag na de siësta naar Ootmarsum gefietst om vader en moeder in de Wiemsel te begroeten. Ze hebben een prachtige “suite”. Cathrien had haar handen vol aan het aan- en uitdoen van alle lampen. Vanavond weer buiten gegeten en vader en moeder opgehaald voor de koffie. Plannen gemaakt voor deze week en Gerry gebeld: ze komt! Vanochtend vroeg iemand mij in het dorp hoe oud Cathrien was. Ik zei: 2 jaar en bijna 2 maanden. Waaraan Cathrien toevoegde: “Grote puzzel maken kan ik”.
Herdenkingskaartje/bidprentje Moeder
Formaat: Ongeveer 12 x 13 cm. Het wordt in de lengte dubbelgevouwen. Zie het voorbeeld.
Buitenkant rechts:
De foto van de cd. 
Buitenkant links:
Hartelijk dank voor Uw aanwezigheid en
Uw blijk van medeleven bij het leven en
overlijden van Egberdina Maria Louisa Beishuizen-ten Broeke
Binnenkant links:
Welzalig hij, die de God van Jakob tot zijn 
hulpe heeft,
wiens verwachting is op de Here, zijn God.

Psalm 146 : 5

Daaronder als watermerk de “handen”.
Binnenkant rechts:
Egberdina Maria Louisa ten Broeke

Sinds 25 mei 1934 gehuwd met
Tammo Hitjo Beishuizen, overleden op 17 september 1987

Geboren op 10 oktober 1910 te Zutphen
Overleden op 17 juni te Ermelo

Geloof, hoop en liefde kenmerkten moeders leven. Tot in de laatste dagen van de bijna 92 jaren, die God haar hier op aarde gaf, werden we door haar liefde en levenslust aangeraakt. Geloof, hoop en liefde bepaalden haar trouw en toewijding aan vader, aan ons, en ook aan het verstandelijk gehandicapte kind.

In de oorlogsjaren in Sneek zorgde zij dat 32 kinderen gekleed en gevoed naar de BLO-school van vader konden gaan. In Soestdijk kookte zij – als hoofd van de huishouding – voor heel het Van Arkel Instituut. Zij was er altijd voor ons. Ons huis stond open voor al onze vrienden en vriendinnen. Moeder zorgde mèt vader geregeld voor veel gezelligheid. Ze maakte met vader vele buitenlandse reizen. Ze leerde Engels om met haar kleinkinderen en later haar achterkleinkinderen in Nieuw-Zeeland te kunnen communiceren. Ze kon goed vertellen en voorlezen. Ze was een gewaardeerde sopraan in het koor. Ze creëerde haar eigen wereld met boeken, muziek en puzzels.

Een moeder die wist dat je zelf kunt bijdragen aan je eigen geluk, door de ander en jezelf te respecteren en ruimte te geven. Een sterke vrouw, die soms kwetsbaar oogde. Zij stond positief tegenover het leven en de mensen. Ze oordeelde niet, maar verraste met een positief, vaak humoristisch woord. 

Aan het eind van haar leven aanvaardde ze geduldig de omstandigheden van het ouder worden. Ze waardeerde de liefdevolle zorg waarmee men haar omringde in huize “Germar” en “De Dillenburg”. Ze vond kracht in haar geloof. Elke dag bad ze voor ieder van ons. Ze zag uit naar een toekomst in ‘s Heren huis.

We zijn heel erg dankbaar en trots dat Dien Beishuizen-ten Broeke onze moeder was. We zullen haar erg missen, maar zijn blij dat nu ook haar laatste hartewens in vervulling is gegaan.
"""Vrijdagavond van Ton Klein afscheid genomen. Gemma, de vrouw van Kees van Putten, vertelde dat René Diekstra zijn colleges altijd begint met een verhaal. Alle thema’s uit het college geeft hij een plaats in het verhaal. Dat vormt dan het samenbindende element. Ga ik ook eens proberen. Je kunt het verhaal natuurlijk ook aan het eind zetten. Lesje retorica!
Zaterdag twee goudvissen gekocht. Eindelijk een huisdier! Cathrien was er zeer mee in haar sas. De namen: Zwaantje (naar de zwaluw die we van de zomer hebben begraven) en Tutti (een Japanse goudvis met veel kleuren).
Zaterdag de 84e verjaardag van Moeder gevierd. Ze was heel goed te pas. Sara vroeg op een zeker moment tijdens de maaltijd: Wie betaalt dit allemaal?
Zaterdagavond door naar Diepenveen om daar de verjaardag van Richard te vieren. Uiteindelijk laat in bed, de kinderen sliepen bij Opa en Oma.
Zondag Thomas gedoopt. Pastoraal werker, die voorging, had een mooi citaat. Victor Frankl, psychiater, na terug keer uit Auschwitz: Twee eigenschappen helpen bij het overleven: het vermogen om te kunnen lijden en het vermogen om altijd licht aan de horizon te blijven zien, hoop op de toekomst te blijven houden. Als we deze wijze woorden nu eens een weekje vast probeerden te houden.

''Berend''
Berend is druk in de weer met leren lezen. Hij heeft er veel plezier in. Leest de botjes-boekjes al redelijk vlot. Sommige woorden zijn nieuw en moeten “gehakt” worden. Met de handen worden hakbewegingen gemaakt terwijl Berend eerst de eerste medeklinker leest, dan de middelste klinkergroep en tenslotte de laatste medeklinker. Als er aan het eind van de zin een uitroepteken staat leest Berend het laatste woord met luide stem.
"""Ernst, verantwoordelijkheidsgevoel, liefde. Ik zou er iets aan toe willen voegen: Iets tussen Yves Montand in “César et Rosalie” en Beethoven, en Anton Dreesmann in: lichte hypomanie, vaart om interne zwakheden het hoofd te bieden. No-nonsense, wat zijn je doelen: internationale publicaties, resultaten, gemotiveerde medewerkers, kwalitatief goed onderwijs, etc. Daar gaat het om. Hoe weersta je de bekoring van t.v. en computer? Geen gezeur, geen geharry, wat zijn je doelen, wat staat op het lijstje? Dat doen dus en met een beetje vaart en opgewektheid!
Op weg naar Leros. Eerst naar Athene en dan door met een binnenlandse vlucht. Ik vind het wel een spannende week maar Anne geniet er nu al van dus het zal wel goedkomen. Weersverwachting is heel gunstig, 30° en zwakke wind, dus hopelijk geen zeeziekte.
Gisteren de laatste klus met deadline afgemaakt: review van boek van Edwin Koster en Rob Boschhuizen over Effectief Reflectief Onderwijs. Kan ik nu een beetje vooruit gaan kijken? Genieten van het pensioen? Plannen en geplande taakjes uitvoeren?

Zaterdag met Cathrien en Jochem gesproken terwijl Mercia heel zoet in de box aan het spelen was. Cathrien had de avond tevoren een bord op de grond kapot gegooid en was daar hevig van geschrokken. We spraken over de vele ballen die Cathrien tegelijk in de lucht moet houden. Misschien goed om daarover toch eens een psycholoog te raadplegen, ook omdat Cathrien eigenlijk niet goed voor zichzelf kan kiezen. Verder besproken dat het nuttig is om weer een intervisiegroepje te starten. 
Vandaag hard gewerkt vanuit het principe dat zinvolle tijdsbesteding niet in de eerste plaats een kwestie is van dingen doen, maar van dingen nalaten. Vreemde gedachte: de tijd wordt actief verkeerd besteed! Het idee dat je aan van alles en nog wat niet toekomt kan betrekkelijk stresserend zijn. MAAR: het zit ingewikkelder in elkaar: stop eerst met het doen van verkeerde dingen, begin daarna te denken over het doen van goede dingen.
Dus bijvoorbeeld vanavond: niet naar de tv kijken, niet jezelf volstoppen met allerlei overbodigs. Het is al heel wat als dat lukt. Daarna proberen de vrijgevallen ruimte met iets nuttigs te vullen. How about that?
Cathrien is ziek: koorts, opgezette amandelen, oorpijn. Even aanzien, koorts in de gaten houden.<p>
Joke van Eekeres moet zich morgen in het AvL melden voor een borstoperatie. Dit is zonder meer een gemene ingreep van het Lot: Joke, die er met haar dochter Saskia alleen voor staat, net haar vader na een moeilijk ziekbed heeft begraven. Hopelijk zijn ze er op tijd bij en kan er wat aan gedaan worden. Een zware therapie is op zich al heel moeilijk. Geen reden tot uitbundige Kerst. Het is 15:52, de zon gaat bijna onder. We naderen de kortste dag.
Je werk, je gezin, je vriendschappen beschouwen als iets heiligs, iets dat je volledige toewijding vraagt. Je leven, je tijd, opvatten als iets waarmee geen seconde gespot mag worden. Voor veel mensen is dat misschien heel vanzelfsprekend. Dat gaat automatisch, ze zijn er expert in. Ik blijf hierin een beginneling, ik moet steeds opnieuw mijn weg zoeken en na een val proberen weer overeind te komen. En dan ook nog zoveel afstand bewaren dat je erom kunt lachen. Ik probeer dat Cathrien te leren, de betekenis van "Geeft niks hoor". Ze snapt het wel en heeft er ook steun aan.

Gisteren in de Engelse Kerk op het Begijnhof een stukje uit het N.T. gelezen, 1  Johannes zoveel. Ik moet het nazoeken maar de passage luidde ongeveer: Je tegenstanders jagen machtige goden na. Jij hebt een God achter je die sterker is dan al  die andere goden. (De liefde overwint alles). Ik mis het vertrouwen dat daarbij hoort. Ik begin niet aan deze maandagmorgen in de zekerheid dat ik mijn tijd voor 100% aan heilige doelen zal besteden. Eén ding weet ik wel zeker: het zoeken naar de goede weg laat je niet los. Ik zal me steeds opnieuw (achteraf) ongelukkig voelen bij een doodlopende zijweg. Misschien moet ik daarmee tevreden zijn.
Vanavond een mooi concert gehoord in de Kleine Zaal: Orlando Kwartet met Isabelle van Keulen, Haydn, Beethoven,  Brahms. De stand van zaken: moeizaam geworstel, te weinig afstand, zelfvertrouwen, concentratie. Onvoldoende scheiden wat belangrijk en onbelangrijk is. Overigens: de kinderen gezond, artikel over diss. af en bij Frances en Andries. Morgen naar Ala. College Functieleer II voor tweedejaars was een redelijk succes, eens zien hoeveel studenten het in sept. oplevert. Hoge werkdruk, te weinig slaap. Ik neig bepaald tot uitschieters en schiet niet zelden een bok, waarover later spijt. Dit gelamenteer moet een einde hebben. Zoeken naar afstand, relativering, scheiden tussen belangrijk en onbelangrijk. Ik weet niet hoe het moet. 

Berend: begint enorm te praten, zegt alles na, wordt iets rustiger maar kan als hij moe is ('s avonds tijdens het eten) flink te keer gaan. Sara: is meestal heel zorgzaam en poeslief, maar kan soms lekker knijpen of bijten, toont zich daarover niet bijster onder de indruk. Cathrien: na het logeerpartijtje bij Anne's ouders voorbeeldig, steeds opgewekt. Gaat nog steeds goed. Af en toe een inzinking. We houden vol. 
Vandaag de begrafenis van Inge. Hopelijk het begin van een iets rustiger periode. Morgen en vrijdag vrij genomen. Morgen om Sinterklaasinkopen te doen en Wim's moeder te begraven. Vrijdag om AC's verjaardag te vieren.

Brief aan Annette en Wim.

Amsterdam, 2 december 2002

Lieve Annette en Wim,
Zoekend in fotoalbums en schoenendozen naar tastbare herinneringen aan Inge kwam ik twee foto’s tegen, die ik op deze bladzijde plak. De foto hiernaast is gemaakt op jullie trouwdag, 24 juni 1976. Wij kenden Inge toen alleen nog maar als de zus van Annette. De foto onderaan de bladzijde is eind augustus 1992 genomen, toen we in Egmond een leesclubavond hadden over het boek “Op weg naar een dansfeest”. Was Inge toen al lang of nog maar pas lid van de leesclub? Ik weet het niet meer precies. In ieder geval ligt er een periode van 16 jaar tussen de foto’s, en is er sindsdien nog eens 10 jaar verstreken. Met elkaar een half mensenleven, zoals we nu weten. 

Ik vond ook een herinnering terug aan een avond van de filmclub, 29 september 1994. 
Gisteravond een mooie film bij Huub gezien: Brief Encounter van David Lean (Engeland, rond 1947). Mooie rollen van Celia Johnson en Trevor Howard. Man en vrouw ontmoeten elkaar in een stationsrestauratie. Vrouw bezoekt het stadje elke donderdag voor boodschappen, bibliotheek en bioscoop. Man idem: is arts en assisteert bij operaties in het ziekenhuis. Bij tweede ontmoeting gaat het gesprek over iets medisch: verschillende soorten stof die in je lichaam voor ontstekingen kunnen zorgen. Maar in feite zie je de twee liefde voor elkaar opvatten. Ze zijn beiden getrouwd met kinderen. Ze begrijpen dat ze een punt achter hun relatie moeten zetten. Uiteindelijk vertrekt hij met gezin als arts naar Johannesburg. Inge verbaasde zich over het verhaal. Verliefd worden en er dan weer mee stoppen, dat is toch niet van deze tijd. Je zegt toch niet bij de tweede ontmoeting: “Ik hou van je”. Dat is toch veel te zwaar. Eerder: “Ik vind je wel aardig”. Huub en ik stelden dat het verhaal ook nu nog op dezelfde manier zou kunnen plaatsvinden.
Misschien kun je zeggen dat Inge een afkeer had van romantische bevlogenheid. Jullie vertelden vandaag dat ze had gewaarschuwd dat de afscheidsbijeenkomst niet te soft mocht worden. Zelf laat ik me gemakkelijk meeslepen door romantiek in films of boeken. Daarom verschilden we nog wel eens van mening over een boek of film, wat weer aanleiding gaf tot geanimeerde en soms zelfs opgewonden gesprekken. Hoogtepunt was in mijn herinnering de felle discussie over het boek “Een been om op te staan” van Oliver Sacks. Ik voelde me aangesproken door de manier waarop Sacks zijn tijdelijke handicap beschreef. Inge vond zijn bombastische en zelfingenomen stijl van schrijven, links en rechts Amerikaanse dichters citerend, weerzinwekkend. Dat moeten we van nu af aan missen. Niet meer haar aanstekelijke lach, haar opvattingen die ze zonder omhaal van woorden poneerde. 

De Bijbel zegt dat de liefde sterker is dan de dood. Dezer dagen ga je daar wel eens aan twijfelen. Ik voelde me vorige week donderdag erg aangesproken door de dichtregels van Bloem, uit “November”: Verloren zijn de prille wegen, /Om te ontkomen aan de tijd; /Altijd november, altijd regen, /Altijd dit lege hart, altijd. Maar Joan, Dick en Huub zeiden terecht dat het lege hart niet het einde van het verhaal is. Samen kunnen we de herinnering aan Inge levend houden. Ik hoop dat we erin slagen om jullie daarmee een beetje tot steun te zijn.
Het is nu 6:37. Wat doen we met dit vroege moment. Even een stukje lezen in de artikelen van/over Ton van der Stap in Werkschrift, naar aanleiding van zijn 60e verjaardag. Tas inpakken. Stuk van Jan Blokker over de vraag: wat is katholicisme. Hij is verbaasd over het feit dat homoseksuelen erkenning van de bisschop van Roermond zoeken. Waarom? Je kunt toch heel goed homofiel zijn zonder de zegen van de bisschop van Roermond?
Proberen om elke voorliggende activiteit bewust en met aandacht en plezier op te pakken. Plezier, dat is dat warme gevoel in de buikstreek.

Vandaag veel te veel blijven hangen in computerzaken. Desondanks negen activiteiten voltooid. Plus dit dagboek.
""" Sophie † 86
Vanavond:
balans SSE
acties SSE
afspraak John
Sara sliep om 21.00 uur. In reiswieg, 20 minuten in de gaten gehouden. Weer op 6 voedingen. Met Cathrien naar bibliotheek. Geniet reuze van boekjes kijken en uit de kast halen. Wilde niet lopen --> buggy. Wil nog steeds niet op commando op de pot.
+ goede werkafspraken met Hans en Erik
+ commentaar op paper Fran
+ balans SSE gemaakt
+ gezellig met Cathrien naar bibliotheek geweest
-- reactie op Cathrien die niet wil lopen en niet wil plassen
11.30 uur. De eerste dag van de Mikroscience conferentie in Balatonalmádi zit erop. Er is heel wat gebeurd sinds zaterdagmorgen. Zaterdagmiddag hadden we om 2 uur met Gyula afgesproken voor een tochtje met de auto door de heuvels van Buda. Toen we om goed 2 uur in de auto stapten en weg wilden rijden gebeurde er niets na het omdraaien van het contactsleuteltje: accu leeg tot op de bodem. Duwen (een blokje om, Dirk en Joan achter de auto, ik erin) had geen effect. Gyula gebeld die om 5 over 3 met zijn gloednieuwe Trabant arriveerde. Aanslepen had ook al geen effect: de accu bevatte echt geen druppel elektriciteit meer. Wat nu te doen (zonder accuklemmen, onmiddellijk kopen!): de plaatselijke wegenwacht gaf geen gehoor. Intussen liep een man voorbij die Nederlands sprak (Hongaar, had na '56 15 jaar Nederland gewoond). Wist het adres van 2 privégarages in de buurt. Met Dirk opgezocht, aangebeld: geen succes, niemand thuis. Intussen was het 4 uur geworden, het tijdstip waarop we met Hedy hadden afgesproken voor het museum op de burchtheuvel. Zij moest ook gewaarschuwd worden. Goede raad was duur! Toen dook er opeens iemand in de straat op met kennis van zaken. Hij had startkabels, de auto naast de zijne gezet, de kabels aangesloten, en zowaar: de motor liep weer als een naaimachine!
<<ximg "Pensionado/Geheugen/Dagboek/20061120 Dagboek.png">>
!!! Zeventiende vakantiedag

Ontbijt is weer zeer rijk voorzien, inclusief de zelf gebakken cake. De oude dames en hun dochter zijn echt heel gastvrij. Om 10 uur staat de Mercedes voor de deur om ons naar de garage te brengen. De banden zijn verwisseld, we betalen de rekening en vertrekken met vier nieuwe banden. We rekenen af in de Albergo en vertrekken naar Vicenza.

Daar komen we rond half één aan. Gianni en Olivia zijn nog niet aanwezig en we maken een wandeling omhoog naar het Santuario. Het uitzicht over Vicenza is weer erg mooi.

<<ximg width:100% "/Foto's/2021 Italië/0920 Uitzicht op Vicenza.jpg">>

Om half twee kunnen we terecht in de Limonaia. We pakken de spullen uit, doen een dutje en hebben verder een rustige middag en avond bij ons huisje. 
Wat moet je als manager in een organisatie doen?

1. Stabiliseren: zorgen dat iedereen zijn of haar huidige taken goed uitvoert. Vergt deskundigheid en motivatie. Motivatie bij voldoende belangstelling voor de taak en voldoende succesverwachting. Duidelijk over taak. Zorgen dat iedereen weet wat hij of zij moet doen, en het gevoel heeft de taken goed te kunnen uitvoeren.

2. Verbeteren: deskundigheid verhogen via bewustworden van wat je doet. Twee artikelen realiseren is beter dan plannen maken voor vijf artikelen. Praktijken en protocollen op papier zetten, met collega's bespreken. Leren dus. Als manager stel je steeds de vraag: wat zijn je doelen en hoever zit je af van realisatie?

3. Veranderen: visie en doelen zelf ter discussie stellen. Luisteren zodat je goed op de hoogte bent van wat er leeft aan ideeën. Daar een open oor voor hebben. Zelf ook met ideeën komen, maar voorzichtig. Creatieve onrust en stabiliteit, gelijktijdig.
8.45. Cathrien gaat vandaag naar de kleuterschool! Hoewel wij haar voorlopig alleen 's ochtends naar school willen doen kwam ze vanochtend zelf met het idee om over te blijven en 's middags ook te gaan! We zullen zien hoe 't bevalt. Ze heeft er in ieder geval heel veel zin in.

Vandaag proberen op niveau te werken. Zelfvertrouwen vorige week aardig ondermijnd door tegenvallende prestaties. Concentratie! Urenplanning! Hardop denken! Rollen verdelen! Feit dat Simons heeft bedankt voor Leiden geeft toch enige voldoening uit leedvermaak. Hadden ze maar niet al hun kansen op een kaart moeten zetten. Weer een zomerdag.
8.55 uur. Aan het werk in een nieuwe week. Het "en toch"-gevoel is eigenlijk aan mij niet besteed. Bij de keuze tussen discipline en strengheid moet ik kiezen voor strengheid. Ik ben niet sterk genoeg voor discipline, vanuit een "positieve instelling". Anima mea, quare tristis es? Hierom dus,  het onvermogen om vanuit een vrije keuze en het "en toch"-gevoel de juiste koers aan te houden. Trefwoorden als "con eleganza, sober, met humor" lijken lapmiddelen. Ik moet het hebben van een strikte planning, geen zonnig gevoel, de zweep. Relatie met AC slecht. Ze leeft in een andere wereld, een andere cultuur, andere wijze van met elkaar omgaan. Commanderen, opdrachten, het werk moet gedaan, liever vandaag dan morgen. Boons "Menuet" tekent de verhoudingen meesterlijk, zij het iets extremer. Heb het gevoel dat ik me tegen AC's bejegening moet wapenen.  Ik kan me niet goed verplaatsen in haar wereld, of wil het niet. Toch houd ik van Anne, wil haar respecteren en een warm onderdak verschaffen, een plaats waar ze zich kan ontplooien. Waarom kan dit niet het richtsnoer van mijn handelen zijn? Hoe op haar agressie een antwoord te vinden dat niet strijdig is met dit hogere doel?  Complete zelfopoffering? Gedeeltelijke zelfopoffering?
Het ging om twee dingen: plezier en voldoening. Plezier hoort bij de basisinstelling, de anima. Dat hoort bij de keuze: er is geen andere weg. Klimmende zon. Licht dat ons laat met licht. Liefde die liefde wekt, vuur dat ons loutert. Voor ons de dood voorbij, stem die ons roept. Bron. Hart. Begin en einde. Onze vader. Heb het gevoel dat ik gevaar loop te verkillen, door de moeizame verhouding met AC. Haar kilheid wekt bij mij kilheid. Kilheid die kilheid wekt. Of is het teleurstelling in mezelf, dat ik haar niet aankan? Ik weet het niet. Feit is dat ik de liefde niet wil laten schieten. Het is de reddingslijn. Ik grijp hem. Tegen het cynisme waarvan het boek “Blauwe Maandagen” van Arnon Grunberg zo’n afschrikwekkend goed voorbeeld is. Wij rijden station Leiden binnen.
Huisje is voor drie kwart geschilderd. Ik ben begonnen aan “Het Martyrium” van Elias Canetti. Voorlopig lijkt het een corvee. Ironische stijl die mij niet zo ligt. Typische studeerkamergeleerde die zich door een huwelijk met zijn huishoudster naar de ondergang werkt. Een kwestie van volhouden. Vanmiddag gaan we wat later naar het strand om samen met de fam. Felzer te picknicken. Warm weer met een stevig briesje. Laatste vakantieweek. Vanavond proberen om een paar mooie citaten uit Montaigne te halen. Morgenvroeg weer aan het huisje werken. Laatste zijkant. Wanneer Desforges? Wanneer plan voor komend jaar?
De accu in Egmond wordt beschermd tegen te grote uitputting door een regelpaneel. Als er teveel stroom dreigt te worden afgenomen dan wordt de schakelaar omgezet. Te grote uitputting schaadt namelijk de levensduur. Soms bekruipt mij het gevoel dat mijn accu ook te zeer wordt uitgeput op het moment. Onderwijsverplichtingen, onderzoek, scripties, etc. etc. Proberen 's avonds consequent om 10 uur te stoppen. Geen tijd besteden aan onbelangrijke zaken. 

De muziek van de opera Idomeneo van Mozart is reuze populair hier thuis. Dankzij de fraaie bewerking van Frank Groothof op t.v. en op een bandje. Berend gaat ermee slapen. Cathrien zingt de aria's mee. In Egmond komt de watervoorziening steeds dichterbij. Bron geslagen, pomp (12V!) aangesloten. Werkt allemaal! Waterleiding blijkt gesprongen. Moet eerst gerepareerd.
"""
Tussen kerststal en kerstboom vat ik bij de tonen van het Requiem van Fauré de draad weer op. 20.30 uur. Cathrien heeft zojuist nog 200cc vlot opgedronken en vervolgens 10cc over mijn broek uitgespuugd. Ze ligt nu weer lekker te slapen.
Een gat van drie maanden is niet zo snel opgevuld. Gelukkig hebben we 14 dagen vakantie voor de boeg zodat er genoeg tijd is om bij te schrijven. Eerst maar eens het een en ander over Cathrien opschrijven. Drie maanden zijn bijna de helft van haar leven. Iedereen vindt dat ze erg veranderd is. Dat is zeker het geval. Toen ik vanochtend nog een paar foto's uit de couveuse aan Mieke Claassen-Dillo liet zien vielen mij juist weer de nog steeds herkenbare constante elementen in haar uitdrukkingswijze op. In de couveuse lag ze heel rustig maar was ze met haar kleine nekje en parmantige kinnetje ook heel "bewust" (hoewel ze sliep op de meeste foto's) of "aanwezig". In het begin vertrouw je je indrukken niet zo erg. Je verdenkt jezelf ervan dat je er teveel inlegt, met name wat je zelf welgevallig is. Toch overheerst nog steeds dezelfde indruk, versterkt door haar sprekende ogen, waarmee Cathrien iemand zo lang onderzoekend kan blijven aankijken, dat hij of zij beschaamd de ogen neerslaat. Cathrien lijkt vrij ernstig, ze lacht beslist niet op commando, hoewel ze juist de laatste tijd wat uitbundiger reageert bij herkenning. Ze begint bij het lachen nu ook haar ogen een beetje dicht te knijpen. 
“Dat er een ander dan ons door de dood beheerste leven mogelijk is.”, laatste woorden uit de preek van Huub Oosterhuis van gisteren. Het is duidelijk dat Moeder naar dat andere leven verlangt. Gisteren vonden Janny en Jan haar in stilte op bed liggend, wachtend. De dokter constateerde dat alle lichaamsfuncties nog in voortreffelijke conditie verkeerden.
Half 12 ‘s avonds, weer thuis en bij elkaar, gezond. Veertien dagen zonder kinderen hebben niet de ontspanning gebracht waarnaar we van te voren zo uitkeken. We zijn zo ingeburgerd geraakt in het leven met en voor de kinderen dat het niet goed mogelijk is om er zomaar even uit te stappen. Nog enkele omstandigheden werkten tegen. (1) Ik vond het heel moeilijk om er 14 dagen tussenuit te gaan. Heb een belangrijke bespreking i.v.m. proefstationproject gemist. (2) Het weer zat tegen. (3) De auto had kuren waardoor we vorige week maandag 3 garages moesten opzoeken, zonder succes. (4) N.a.v. deze tegenvaller kregen we een fikse ruzie waaruit bleek dat we te weinig tijd nemen om zaken met elkaar door te nemen. Ook Cathrien bleek de 2e week lastiger te zijn geweest. Pa en Ma van Remmen houden het op heimwee. Vanmiddag een heftige scene met Cathrien, op straat nog wel. Een ijsje bij de Italiaan. Er werden hapjes uitgewisseld. Opeens brullen nadat A.C. een likje uit Cathriens bakje had genomen. Wij boos en er bij Cathrien op aandringen om op te houden. Geen resultaat, ‘t werd erger. We werden allebei zo boos dat we de ijsjes in de prullebak gesmeten hebben en spoorslags naar huis gefietst zijn waar Cathrien op haar kamer werd gezet. Na een tijdje gekalmeerd en de belofte het niet meer te zullen doen. Hoe pakken we dit aan?
"""Eerste werkdag na de vakantie vanochtend begonnen met een gesprek met Andries Sanders. De gebeurtenissen voltrekken zich in de lijn der verwachtingen. Sanders start eigen onderzoekslijn en wenst daarvoor 2 vaste medewerkers + Paul Keuss. Ik heb hem krachtig gesteund in dat streven. Als het lukt zijn we twee man rijker. Als het niet lukt zijn we van Sanders af. ‘t Was een goed gesprek waarin voor het eerst (waar ik bij was) inhoudelijk werd gepraat. Sanders neemt je beet maar met open vizier zoals hij zelf beweert. Jan de Wit was niet tevreden met het resultaat. ‘t Zal mij benieuwen of hij nog een tegenactie onderneemt. Vanmiddag met de lui van het proefstation overlegd. Die Elize te Woerd is inderdaad een moeilijke tante. Sipkes intuïtie was correct. Uiteindelijk nog 2 uur zelf gewerkt + een uur vanavond. Een “goede” dag. Cathrien en Sara lagen elk heerlijk te slapen. Sara slaapt door van 8.30 ‘s avonds tot 6 uur ‘s ochtends! Toen ik thuiskwam bakte Cathrien een pannekoekje op haar fornuis. Ze zorgt ervoor dat je een bord, een beker, en mes, vork en lepel krijgt. Wat kan ze praten. Ze is de afgelopen maand enorm ontwikkeld en lijkt ook weer te groeien. Nu in bad en naar bed.

Brief aan Tjeerd afmaken! Lied J & J en Geert en Linda!
Is dit een snellere manier van typen? Hoe dat ook zij, vandaag was een goede dag.. Vanavond naar Romeo en Juliet geweest. Een schitterende pas-de-deux.
Eerste Kerstdag. Gisteravond Jan, Emmy en Marina op bezoek gehad voor de  kerstnachtdienst in de ekklesia. Emmy bleek een spraakzame en spontane vrouw te zijn, heel open en toegankelijk. Lijkt in niets op Janny. Doet je wel een beetje aan Madelon van Tertius denken. Voor Marina was het de eerste ontmoeting. Ze sloeg zich er dapper doorheen maar ging toch niet mee naar de kerk.
De dienst was mooi. Bij de eerste dienst waren Gerry er, Sara en Berend en Sietske, heel gezellig. Omdat Jan en Emmy niet kwamen opdagen zat ik tijdens de dienst enigszins in de rats over hun reilen en zeilen. Mooi voorbeeld van tegenslag en hoe ermee in te gaan. Gelukkig bleken de na afloop van de dienst gewoon achter ons in de kerk te zitten. Jan scheef na afkoop, weer thuis in Harderwijk: 

Hoi Jos en AC,
We hebben genoten van de ontvangst bij jullie thuis  en van de dienst.  Heel mooie ,prachtige muziek, mooie teksten. Emmy vond het ook heel fijn, ze vond het fijn jullie te ontmoeten.  Ze kent de familie alleen uit mijn verhalen. Inderdaad waren we vlug verdwenen, ik wilde ook bijtijds thuis zijn en dat is goed gelukt. Kon goed parkeren op de K.gracht. allemaal een rijke ervaring.  Bedankt voor alle aandacht.

Voor Anne was het voor het eerst weer een dienst in het koor. Ze heeft ervan genoten. Na afloop van de tweede dienst nog gezellig nagepraat met deze en genre. Om kwart voor één weer thuis. Twee mensen miste ik: Frank Garnier en Erik Jurgens. Was leuk om met Tom van der Grinten te spreken.
Omdat we gisteren met Joke van Eekeres een wandeling gemaakt hebben op de eerste lente-dag (afgelopen donderdag vond de Elstedentocht plaats!) was er geen tijd om in het dagboek te schrijven. Gisteravond een vrij uitvoerige brief naar Tjeerd en Kathleen geschreven. Eigenlijk zou die brief ook goed dienst kunnen doen als dagboekstukje. 't Bezoek van Joke en Saskia was een hele sensatie. Joke gaat heel rustig en zorgvuldig met Saskia om. De kleine meid vaart daar heel wel bij. Joke leer haar bijv. om met niet al te veel speelgoed in de weer te zijn. Een prima concentratie-oefening. Verder heeft Joke geen t.v. wat ook een zegen voor de kleine meid moet zijn! Ook de scène met het koekje maakte grote indruk op mij: wij nuttigen een taartje bij de koffie terwijl Saskia een koekje op een schoteltje krijgt en dat opeet als was het een gebakje van De Pompadour, bij elk hapje roepend: "Bijna op!". Je krijgt het gevoel: zo kan het dus ook. Nu moet erbij gezegd dat Joke in principe een groot deel van de dag beschikbaar is voor Saskia. Verder is het mogelijk dat Saskia van nature een rustig kind is. Maar toch: ik hoop dat wij met onze kleine ook zo weloverwogen en consequent zullen omgaan. Joke heeft veel aandacht voor Saskia, dat merk je. Joke is gelukkig weer aardig de oude (mede dankzij Saskia denk ik). Ik doe een voorspelling: over een half jaar woont ze weer in Amsterdam.

'k Heb de baby voelen schoppen, 't was meen ik op 20 februari, een nieuw hoogtepunt. Wat zou ik graag een kijkje in de baarmoeder nemen. Tien voor elf, ik stop, want ik wil morgen fris verschijnen voor staatssecretaris van Leijenhorst. Of zou een door zorgen gekweld gezicht meer indruk maken? We zullen zien.
Beste Vader en Moeder,

Ik zal u schrijven een brief van mijn leven: <br>
Ik werd geborden op 14 mei 1950. <br>
Ik was 6 jaar toen ik naar school ging. In 1956. Op een maandag. Ik vond het eerst wel een beetje griezelig. Ik kon ook nog niet fietsen, dus moeder moest me wegbrengen. Toen vond ik het niet meer zo griezelig! Het was ongeveer 2½ km: dus wel een aardig endje. Het was een drukte van belang op het speelplein - het speelplein was achter de school -. Wij moesten in het 2e lokaal zijn. Daar ben ik gebleven tot helft van de 2e klas ongeveer (want toen gingen we verhuizen). Maar goed om verder te gaan, ik zat van de deur af de derde rij de vierde bank naast Teo Bijsterbos. Mijn juffrouw D. van Arkel. Zij woonde op Julianalaan 32 in Soestdijk (daar woonden wij ook). Ik vond het wel leuk op school. De juffrouw was dan ook heel aardig. Ze vroeg van alles over ons. Hoe we heten, wanneer we geboren waren enz. We kregen ook van alles: een leesboek, een schrijfschrift enz. Ik had meteen nog geen vriendjes. Ik was ook niet op de kleuterschool geweest dus daar had ik ook geen vriendjes van. We kregen al onze boeken in een soortement kaft. Zoiets als een portefeuille. We hadden school van 8.45 tot 12.00 en vab 13.30 tot 15.30. Het duurde wel een possje maar toen kreeg ik vriendjes. Mijn allerbeste vriendje was Dikkie van Arkel. Een neefje van de juffrouw. Dat is nu nog mijn vriendje. In de eerste en de tweede klas kregen we zaterdags vrij omdat onze juffrouw dan handwerkles moest geven in de vierde klas. In de tweede klas kregen we juffrouw van Arkel ook nog. In de derde klas kregen we een meester. Maar daar was ik niet meer bij want ik verhuisde al in de tweede klas. Het ging heel  best op school. Ik was op twee na de knapste van de klas. Dat ging zo door tot ongeveer de helft van de tweede klas. 

Het was 11 juni de dag voor onze verhuizing. Het was op een woensdag. We hadden 's middags vrij. Ik ging met mijn vriendje Dikkie naar ons toe. Om te kijken naar het inpakken van alle spullen. Het was een leuk gezicht. Alles paste precies in de wagen. Maar het was wel een heleboek. Want er moest nog een aanhangwagen aan. We konden de hele middag kijken. Och, och wat verlangde ik naar morgen. En eindelijk viel de avond. Toen moest ik naar bed. Dat was natuurlijk niet zo leuk. Op zo'n kale kamer! Maar daar moeten we ons niks van aantrekken. De volgende dag kwam ..... Ik moest 's morgens nog naar school. Maar 's middags gingen we weg dus hoefde ik niet meer naar school. Mijn Vader had een Opel Rekord dus dat ging wel vlug. We verhuisden naar Ermelo. Van Soestdijk naar Ermelo was ongeveer 40 km. Da's wel een aardig endje. Het was ongeveer anderhalf uur rijden. Wij waren in Ermelo omstreeks 3 uur. Er hing een mooi bord boven de voorkamerdeur en daar stond op: HARTELIJK WELKOM. Dat hadden de werkjongens gedaan. Hier in Ermelo ging het ook best. Tot nu toe. Ik weet niet wat er in de toekomst gebeurt maar in ieder geval is het nu nog best. Vader en Moeder ik hoop dat u samen nog een goed leven hebt. De hartelijke groeten van Jos.

<<ximg "/Foto's/1959 Jos bij het schoolbord.jpg" width:350px>>
Mercia's eerste uitstapje op Tweede Kerstdag.

<<ximg width:% "/Foto's/201612 Mercia op Tweede Kerstdag, eerste uitstapje.png">>
Begin van een studeer- en schrijfweek in een geheim kamertje in het Provisorium. Laat het een week van humor en actie worden! Humor gaat volgens Tertius Bolhuis samen met diepte van geest. Hoe dit ook zij, ik "voel" bij mezelf dat het goede gevoel ontstaat als ik een beetje kan relativeren.

Maak me ernstig zorgen om Cathrien: prikkelbaar, opgezette klieren in de nek, rode vlekken op de wangen. Zit er iets ernstigs aan te komen, kunnen we iets doen? Goed eten, slapen, hopen en bidden. Anne kijkt er iets lakonieker tegenaan.
!!! Vijfde vakantiedag
De dag goed begonnen met een duik in de thermen hier beneden. Wel een beetje geklauter maar de warmte is bijzonder. 

Na siësta naar Montepulciano. Interessante tentoonstelling ovet de uitvindingen van Leonardo da Vinci. 
Op zoek naar meer evenwicht. Momenten van stress zonder de gebruikelijke adrenaline die je in beweging brengt. Deze week rustiger. Vandaag goed gewerkt na een valse start. Ik ben nu in het trotse bezit van twee werkkamers, een op Uilenstede en een op de campus in het Transitorium, met sleutel nog wel. Hoe lang blijft dit goed gaan. Vanavond gezellig gegeten met Geert en Linda. Nu nog even Babel en slapen.
Koningsdag in lockdown. Anne is teleurgesteld en somber, "wordt een saaie dag". Vooruitzichten ongewis, zou een langdurige zaak kunnen worden. Maar het is natuurlijk heel moeilijk om in de toekomst te kijken. 
Dat geldt alleen al voor deze dag. Vanavond en vanmiddag uiteindelijk gezellig geborreld en gegeten bij Elzemien en Dirk, corona of geen corona. 
Slapeloze nacht vanwege de kwestie van de lening/schenking. Door een andere berekening van de erfbelasting is het voordeel van schenken nog iets groter geworden. We gaan dus voor schenken. Maar dan is het terugschenken van de rente nog een kwestie.
""" 8.15: klaar om te beginnen met werken!
23.30 Het zit erop voor vandaag. Aan alle lopende zaken een uurtje gewerkt. Geeft je het gevoel veel gedaan te hebben. Hopelijk kan ik dit systeem de komende 14 dagen volhouden. Dan krijgen we het werk redelijk gedaan. Nog steeds veel moeite met het commentaar van Koops. Wat schrijft die man agressief! "Dit kan zo niet", etc. Oude schoolmeester als ik mij niet vergis. Probeer er het beste van te maken. Cathrien was vanmiddag enorm met Sara in de weer toen die in het wipstoeltje lag. Steeds de omslagdoek verleggen, over de beentjes, capuchon over het hoofd, speentje in de mond. Ze ging steeds op 't voeteneind zitten, zou het liefste bovenop Sara gaan liggen. Zeer enthousiast Wilde niet dat ik Sara op een gegeven moment in bed ging leggen. Saar liet het zich allemaal welgevallen. Vandaag overdag erg rustig, vanavond spoken. Ben benieuwd hoe het vannacht gaat. Afgelopen nacht om 4 uur wakker en de fles gegeven.
"""
Vandaag is Jan Willem 79 geworden. Het  gaat maar door. Gegeten bij Maarten en Tientje, heel gezellig. Waren net naar Sardinië geweest, heel enthousiast. Chaos in studeerkamer neemt verder toe, morgen echt proberen terug te dringen. Terug tot Ina Damman lees ik wel echt met nieuwe ogen. Psalm 139 naar Cathrien en Jochem gestuurd. Engeland ligt eruit,  verloren van IJsland nota bene, straf van God. 
Tweede Paasdag, kwart voor 11 's avonds. De kinderen nog steeds gezond, hoewel Sara vanavond wat huilerig was bij het slapen gaan. Je begint het als een voorrecht te leren zien: gezondheid, zeker na alle (kinder)ziektes van de afgelopen maanden, waarbij Cathriens ziekte van Pfeiffer de kroon spande. 

Gisteravond een interessante discussie tussen Adriaan van Dis en Umberto Eco: (1) Iemands gedrag of ook de natuur steeds maar proberen te interpreteren is nodig maar ook gevaarlijk (zie zijn nieuwe boek De Slinger van Foucault), en (2) een schrijver schrijft __nooit__ rechtstreeks over zichzelf (een uitspraak die Van Dis zeer verbaasde).
"""
Alweer een grote verandering op komst: Anne-Carien stopt met werken. Wat ik merk is dat ik veel behoefte heb (zoals iedereen) aan een interne locus of control. Die locus moet wel intern blijven, ook als Anne dagelijks om je heen verkeert. Overigens zijn tv en computer veel grotere bronnen van afleiding. Zou goed zijn om daar van nu af aan vanaf te zien. Gister was iedereen hier behalve Sietske. Ook Mercia natuurlijk. Heel gezellig. Weer even achter de vleugel gezeten. We kregen leuke foto's van het babyzwemmen, Mercia in het grote zwembad. Ze had er duidelijk schik in. Sara en Toon weer terug na drie weken vakantie in Portugal. Ze waren heel enthousiast over de reis. Die relatie, dat lijkt wel snor te zitten. Vanavond met Sam en Marga naar het NedPho in het Concertgebouw.
"""Ermelo. Rustige dagen aan het eind van 1987. Sara lacht steeds meer. Het wordt echt een vrolijke meid. Ze begint wat meer verschillende klanken uit te stoten en lijkt iets doelgerichter te werk te gaan. Ze draait zich om van buik naar rug. Op de buik liggen begint ze enthousiast met armen en benen te stampen. Verder nog weinig mijlpalen op motorisch gebied.

Er zijn dit jaar voor de Kerst ontzettend veel beroemdheden overleden: Simon Carmiggelt, Joop den Uyl, Geert van Oorschot, Anton Pieck, kardinaal Alfrink. Het lijkt erop dat de donkere dagen ron de kortste dag toch veel mensen de moed doen opgeven. Depressieve mensen worden meen ik soms behandeld door ze voor een flinke hoeveelheid T.L.-buizen te zetten.

De maand december was turbulent. Crisis in het Proefstation-team. Samenwerking met de mensen uit Utrecht loopt moeizaam door verschil in opvatting over wat onderzoek is. Twee dagen ziek in bed gelegen. Anne-Carien misschien in verwachting, of liever: zeker in verwachting maar misschien niet meer na een fikse bloeding. We waren eerst geschrokken, toen blij en nu in onzekerheid. Woensdag definitief uitsluitsel. De dagen hier in Ermelo zijn goed voor ‘t hervinden van ‘t evenwicht.
9.00 uur.  Het evenwicht moet door bewuste inspanning gehandhaafd blijven. Zonder voortdurend onderhoud verval je meteen tot lagere niveaus. Prachtig boek van Louis Paul Boon: Menuet. Echtpaar met dienstbode. Man controleert temperatuur in vrieskelders en denkt voortdurend na. Vrouw houdt meer van doen dan van denken. Prachtig portret. Het moet "gewoon" blijven, zoals vroeger thuis. Doelen stellen, iets willen bereiken, ipv vervallen tot bevrediging van behoeften. Laatste spreekt mij wel aan.  Ik hou ook erg van doelen stellen. Maar leef ook dikwijls op niveau van behoeftebevrediging. Gisteravond portret van Ed van der Elsken, lijdend aan botkanker, zelfportret. Camera en fototoestel bleven steeds vrij nadrukkelijk aanwezig. Communicatie met vrouw Anneke ging dikwijls over positie camera. Toch ook wel authentiek inzicht in voortschrijdend lijden, vreselijke pijn, ondanks krachtige bestrijding, o.a. met morfine. Lange weg, waarvan overigens het laatste half jaar buiten beeld bleef. 

Cathrien wilde vanochtend niet naar school. Problemen met stoelgang. Was bang dat het op school niet goed zou gaan. Uitgepraat. Toch vertrokken. Nu aan het werk. 
"""Vanochtend sloeg Cathrien haar handen om mijn nek en zei: je zit vast, je kunt niet weggaan! Gelukkig viel het afscheid mee. Op de VU bleek Frances niet mee te gaan naar Edinburgh, “schoonmoeder” overleden, oma op sterven. In Edinburgh bleek de koffer niet te zijn meegekomen! Eerst per taxi naar ICCE-bijeenkomst. Veel bekende gezichten. Moonen kwam meteen op me af: we hebben een ander gekozen, jij hebt verborgen argumenten. Wil je de brief nu hebben? Mijn reactie: dat laat ik aan jou over. Later kwam hij op het gesprek terug: je staat nr. 2, ik stuur nog geen brief, we moeten verder praten. Afwachten. Gesprek met Leon Henkens van het Ministerie. V.O. gaat naar het CPS. Naam? Kreeg de indruk dat de opzet van Oost minder werd gewaardeerd dan die van ons. Peter van der Sijde en ? die bij Carleer werkt. Vanavond in 50 min. per bus koffer van vliegveld gehaald! In de kroeg een gesprek met Henk Sligte van de UvA (De Zeeuw). Bleek Pask goed te kennen. Met de bus naar Pollock Halls waar het onderdak is (riante studentenkamer). Opruimen en nog even lezen.
"""Vanavond Jan W & T te logeren, ze gaan morgen weer terug naar Auckland. Gespreksonderwerp, zoals steeds in deze dagen: vader. Dat vader vaak stond te juichen als je het goed deed en geen steun was als het slecht ging kon Jan W zich nog goed herinneren. Ik heb wat dat betreft minder de klappen van de zweep gevoeld. De Soestdijkse jaren waren misschien wel de beste. Zou moeder er ook zo over denken? Haar eerste nacht alleen thuis. Hoe zou het haar vergaan? Robert vervult JW en T met zorg. Hij kiest nog steeds niet voor een bepaalde loopbaan. Is bij z’n laatste baas met ruzie vertrokken. Toch goed om JW en T zo gesproken te hebben en van nabij gevoeld te hebben. Ze weten nog niet wat ze met Kerst doen. We zien wel.

Vandaag op de VU overleg met proefstation, college vb en college geven. Vanmiddag op het Cals College. Emiels praatje was niet goed. Hij moet op dit punt meer begeleiding ontvangen. Al met al een leerzame dag. UZWUK: U ziet wat U krijgt.
Het is nu 08:49 uur. Op weg naar Leiden voor de eerste werkdag na de vakantie. Bij het maken van de lijstjes voor augustus bekruipt je onwillekeurig enig gevoel van benauwdheid. Ik wil in ieder geval proberen om alles rustig en met aandacht en plezier te doen, zo lang als ik dat kan volhouden. Vervolgens proberen de lijstjes af te werken. Lijstjes niet te lang maken!
Vandaag maar Egmond, voor het eerst een nachtje slapen. Weer belooft goed te worden.
Psychologiestudenten aan de VU komen besmet naar werkgroepen omdat ze bij afwezigheid een zware vervangende opdracht moeten maken. Misschien krijgen we dat nog voor onze neus in de COBEX. Kan natuurlijk niet. 

Nog even over Mercia. Woensdag hadden we tijdens de lunch over drukte maken. Vraag: schreeuwen de kinderen bij jou in de klas? Antwoord van Mercia: sommige kinderen schreeuwen maar ik doe dat niet! We spraken ook nog over het aantal meisjes en jongens in de klas: zijn er bij jou in de klas meer meisjes dan jongens? Daar moest Mercia even over nadenken. Gisteren ging Jochem met een vriend naar Duitsland voor een concert in Hamburg. Vraag van Mercia: zijn er in Nederland meer jongens of meer meisjes? Antwoord: ongeveer evenveel. Vraag: zijn er in Duitsland meer jongens of meer meisjes? Antwoord: ook ongeveer evenveel. Reactie van Mercia: als papa naar Duitsland gaat zijn er meer jongens dan meisjes!

Vandaag heerlijk gewandeld bij de Lage Vuursche. Prachtige herfst/winterzon. Nog even een paar foto´s.

|<<ximg width:400px "/Foto's/20211129 Lage Vuursche 1.jpg">>|<<ximg width:400px "/Foto's/20211129 Lage Vuursche 2.jpg">>|<<ximg width:400px "/Foto's/20211129 Lage Vuursche 3.jpg">>|
"""8.25: 	planten water
          planning
          uitdraaien: nwrev
                                             fv
                                             veer

12.00 uur. Saar ligt er weer in. Erg veel huilen vanavond. Heb een groot deel van de avond met haar op bed gelegen. Werd wel rustig toen ze op mijn borst lag. Zat haar iets dwars? Driftig? Ben benieuwd hoe zij (en wij) de nacht doorkomt. Cathrien gaat soms vervaarlijk op haar liggen, vandaag een paar keer. Ze snapt het niet. 
Geen topdag. Programma niet afgewerkt. Veel geklungel. Nu goed slapen en morgen opnieuw proberen. Beetje hardop denken en op bibliotheek in Cruickshank-hok.
!!! Twaalfde vakantiedag
Eerst even de mooie foto van Cathrien, Jochem en Mercia, die we gisteren ontvingen. 

|<<ximg "/Foto's/20170702 Familie Lybaart.jpg" width:400px>>|<<ximg "/Foto's/Resurrezione.jpg" width:400px>>|

Vanochtend eerst de zwem en toen naar het stadje voor cappuccino en cornetti. Daarna bij huis gebleven en vooral tijd gestoken in de masterthese van Aart Westerduin. Na de lunch en siësta naar Sansepolchro om de Resurrezione te bewonderen. Helaas waren ze bezig met een restauratie zodat we het prachtige fresco nauwelijks konden bewonderen. 

Daarna een glaasje in Sansepolchro gedronken. Beetje een streng stadje, lijkt op de ideale Renaissance stad. 

<<ximg "/Foto's/citta_ideale.jpg">>
Grappig, je kunt hier een dagboekaantekening maken die uiteindelijk gewoon in onenote terecht komt. Aan het begin van een nieuwe week. Ik vind het werk op dit moment te spannend en te veeleisend. Spannend: veel ingewikkelde personeelszaken. Ik bedoel hans buijze op het ig, hans zloch op de vu, geertrui slooten, de slechte service die het onderwijssecretariaat biedt. Ook de verwachhtingen die het college heeft. Verder het constante geworstel om alles af te handelen wat moet gebeuren. 

 

Is het inderdaad zo dat de harde lijn gaat winnen op de VU? Dat veranderingen in het onderwijs alleen nog gelegitimeerd kunnen worden vanuit de de verhoging van het rendement? Als dat zo zou zijn, dan zou het geld voor het plan HBHM er ook niet gekomen zijn. Dat plan heeft niets te maken met verhoging van het rendement van de VU. Ik denk dat bij Ad Verkleij hier de wens de vader van de gedachte is.  

 

Vanavond een interessante lezing van Kishore Mahbubani over de eeuw van Azië. Met Paul, Richard, vriendin van Paul en Anne, in Felix Meritis. De seven pillars of western wisdom die vanuit het Westen voor Azië beschikbaar zijn: 

 

# vrije markt 
# technologie 
# meritocratie 
# pragmatisme 
# vrede 
# rule of law 
# educatie 
 

The first pillar is free market economics. Free market economics does not just enhance economic productivity through incentives for good performance. Free market economic as l so leads to the continuous creation of new elites and removal of old elites. Indeed one little known fact is that the best description of the virtues of capitalism is provided by Karl Marx. His essays explain well how capitalism destroys feudal elites. The feudal Latin American elites failed in their economic reforms because they refuse to give up the "rent" income that they could extract from their privileged positions. "Rent" income distorts free markets. One quick way to promote economic growth is to destroy “rent" income. 

 

The second pillar is science and technology. An enormous shift is taking place in Asia. The late Nobel Laureate in Chemistry, Richard Smalley has predicted that by 2010, 9% of all PhD holding scientists and engineers will be living in Asia. 


The third pillar is meritocracy, which I have spoken about. 


The fourth pillar is pragmatism. The best definition of pragmatism is given by Deng Xiaoping when he said it did not matter whether a cat is black or white; if it catches mice, it is a good cat. He used this simple saying to explain to the Chinese people why China had to switch from centrally planned economics to free market economics. But Deng Xiaoping was not the first pragmatist in Asia. The first pragmatist were the Meiji reformers. After watching the total colonization of India by the British in 1850s and the humiliation of China in the Opium War of 1839-1842, the Japanese knew that they too would be colonized or humiliated if they did not change. So the Japanese Meiji reformers went out and copied the best practices of the West. 
The big untold story of Asia is how so many Asians have successfully copied this Japanese practice of adapting from the best. Earlier I had praised the South Korean success in development. One little known secret about the South Korean success is that South Koreans initiated their success by copying the Japanese. The reason why this secret is so little known is because the South Koreans get very angry if you suggest that they had copied from the Japanese. I discovered this when I wrote an essay in Time magazine mentioning this fact. The response was a flood of angry emails from South Koreans denouncing me. Given this strong Korean-Japanese rivalry, I thought it was a brilliant decision by Dr. Mahathir to award the contract to build one tower each of the Petronas Towers to rival Korean and Japanese teams. The result was spectacularly successful. 


The fifth pillar is the culture of peace. The remarkable thing about East Asia is that even though the biggest wars since World War II were fought in East Asia (the Korean War, the Vietnam War and the Sino-Vietnames War), the guns have been largely silent in our region since 1980. 


The sixth pillar is the rule of law. No modern economy an function without an impartial and fair rule of law. Foreign investors need this. So does international trade. This is why China is now producing more new well trained judges than any other country. But China's case also illustrates the enormous difficulty of fully implementing rule of law. Traditionally, most Asian societies have had rule by law, but not rule of law. Hence, the emperor issues edicts but is not bound by his edicts. China has a modern society but while in theory the CCP members are subject to the same rule of law as ordinary members, in practice they are often not. This is unlike America where even the President and Senators can be indicted or impeached. Fortunately, many Chinese CCP members are honest. If they are not, China's economy could not have grown so fast. However, in the long run, neither China nor any other Asian society can just rely on honesty. We need to adopt the Western system of rule of law, not rule by law, if we are to succeed. Andrew Mclntyre and Douglas Ramage have also said that President SBY "has taken more of a leadership role than his predecessors in the counter-corruption drive. His official approval and encouragement have created something of a virtuous circle of reinforcement and political probity." This is one of the reasons why the rule of law is needed: to prevent and eradicate corruption. 

 

The seventh and final pillar is education but it is in some ways the most important one. Without education - and I mean primary, secondary and tertiary education - no society can succeed. One reason why China and India are among the most successful Asian societies is that they have the largest number of students studying in American universities. In 2006-2007, China had 68,000 students studying in the US and lndia had 83,000 students. 

 

 
Vandaag een drukke dag met vanochtend een heidag van het Ekklesiabestuur en vanmiddag drie COBEX zittingen. Met een lastige nazit vanwege procedurefouten die goed afgehandeld moesten worden. Aan het eind nog even een gezellige borrel bij Hans en Joke Werner. Al met al toch wel een goed bestede dag.
17.45 uur. Weer een kleine mijlpaal in Cathrien's ontwikkeling: afgelopen zaterdag draaide ze zich voor het eerst om van rug naar buik. En nog wel in Ermelo bij Vader en Moeder, die natuurlijk heel trots waren.
<<ximg width:90% "/Dagboek/20070730 Dagboek.jpg">>
Weekend in Zuid-Limburg, Hotel Brull in Mechelen. Vrijdagmiddag mooie wandeling, zaterdagochtend idem. Gezellig gegegeten in Maastricht. Hotel was geheel in Sam en Marga stijl: degelijk, mooi uitzicht (op advies van Sam kamer aan de achterkant gereserveerd), veel onderwijzeressen, vaste plaatsen in de eetzaal. 

Twee afspraken gemaakt: verjaardag van Anne vieren op zaterdag 11 december van 4 tot 8 uur thuis met zo’n 35 man. Verder: oud en nieuw vieren in Egmond, van woensdag tot zondag 1 januari.

Vanochtend een duet van Leonard Bernstein op de radio: de wereld is niet bepaald perfect, maar: (refrein) we will build our house and chop the wood and grow our garden, we doen ons best. Goede en ontroerende instelling. Hoe houd je dat vast, bijvoorbeeld als Sara van 7 tot 8 zit te mokken en dan zeer verdrietig is als je weggaat zonder met haar viool gespeeld te hebben.
"""Tweede Paasdag, onze trouwdag. Ik bevind me op een weinig toepasselijke plaats: 10 km boven de Atlantische Oceaan, aan boord van een Lockheed Tristar met een vaartje van 900 km per uur richting New York. Afscheid nemen was een beetje doodgaan vanochtend. Cathrien die “tot zo” zei “ik geef mama wel een kusje”. Ik ga echt voorlopig niet meer de deur uit. Moeder liet gisteravond voor de telefoon ook al een traan. Voelt zich soms alleen. Moeilijk om de positieve kant van de dingen te blijven zien. Toch maar weer proberen. Eens kijken: deze vlucht duurt nog zo’n vier uur: Eerst een uur Roth. Dan een uur New Orleans, dan een uur een column proberen voor Didactief. Kwart voor zes nu, NL tijd. We zijn zojuist boven het vasteland van Canada aangekomen (St. John’s Island?). ‘t Wordt hobbelig, riemen vastmaken.
19.35 uur. We zitten nu boven Boston. Verwachte landing over 25 minuten. Niets te zien vanwege dichte bewolking. Continue herrie is wel vermoeiend. Cathrien ligt nu in bed. Ma hopelijk gearriveerd. Dit wordt een lange nacht.
"""We hadden ons gisteravond nauwelijks omgedraaid of er kwamen loeiende brandweerauto’s voorbij. Met een brandweerkazerne in de buurt is dat geen ongewoon verschijnsel. Opeens rook ik echter een scherpe brandlucht. We deden ‘t gordijn open en zagen niets meer door de dichte rookwolken! Een reuzeschrik. ‘t Bleek een etage in de Nic. Maesstraat te zijn, vlak bij de van Baerlestraat. Ben even gaan kijken. Angstaanjagend gezicht. De plafonds brandden als fakkels. Je realiseert je dat je zelf niet beschikt over een soort rampenplan. We hebben nu afgesproken: ik neem Cathrien en Anne neemt Sara. Florence (vandaag jarig) vroeg, toen ze het nieuws van de zwangerschap hoorde: Is Anne er psychisch op voorbereid? Dat is inderdaad een belangrijke kwestie. Enerzijds moet je nuchter constateren: je hebt geen keus. Anderzijds zou Anne misschien liever weer een tijdje de “baas over haar eigen lichaam” zijn geweest, zoals ze ‘t zelf noemt.
Vandaag de hele dag Proefstation West Nederland. Een beetje wennen aan het idee dat dit nu mijn hoofdklus is, in zekere zin mijn eigen project, waarbij de medewerkers als student-assistenten fungeren. Toch is dat voorlopig de beste oplossing. Nuttig gesprek met Marcel. Morgenvroeg eerst balans opmaken.
"""Weer aan 't werk.
Maandagochtend 08:41. President Obama van de VS probeert het wapenbezit aan banden te leggen. In Texas mogen burgers met een bepaalde vergunning (1 miljoen inwoners) sinds 1871 weer voor het eerst met hun wapens op straat lopen. Elke schietpartij leidt tot een verhoging van het aantal wapeninkopen. Obama wil nu het antecedentenonderzoek verscherpen.

Gisteren de kerstbomen op het Museumplein verbrand. 

Docenten op de UvA gaan actie voeren omdat ze vinden dat de selectie van een nieuwe Collegevoorzitter teveel in de achterkamertjes plaatsvindt.

Sara heeft een driedaagse cursus in het verlenen van eerste hulp in een crisissituatie. Kan altijd van pas komen. 

Berend moet deze week zijn stage bij het RIVM regelen. Hij volgt nu een 14-daagse cursus Innovatie, Gedrag en Economie over het gebruik van complexity science in de gezondheidszorg. 
Vandaag een prachtige ode aan pater van Kilsdonk van Jacques Klöters in de Argus van 15 september 2021

<<ximg width:100% "/Teksten/211004 Jacques Klöters over Van Kilsdonk in Argus.jpg">>

Dat is het, een voornamere laag in jezelf en anderen aanspreken, het "heilige".
"""Sara is ziek. Ze heeft sinds gisterochtend 38.5 koorts. Ze drinkt goed, slaapt redelijk en huilt tussendoor. Misschien heeft ze oorpijn. Moeilijk na te gaan. We hebben haar nu een finimal-tabletje gegeven. Je bent het helemaal niet van haar gewend. Hopelijk kikkert ze gauw weer op. Cathrien wordt opeens een stuk wijsneuziger. Ik zei gisteren bij het slapen gaan: Je bent toch papa’s grote meid! Waarop Cathrien: en Jaapje is Bartie’s grote meid. Als dat geen analogieredenering is! Ze heeft ook een nieuw woord voor ochtendjas bedacht: handdoekjas. Ze is zeer in haar sas met haar kamertje beneden.

Gisteravond moeder gebeld. Ze praat druk maar zegt dat ze zich wel moe van binnen voelt. Ze bouwt snel spanning op. Als ze ‘s nachts wakker ligt gaat ze tegen vaders foto praten die naast haar op het nachtkastje staat. Ze wil in huis het nodige veranderen. T.V. naar de voorkamer. Tafel in achterkamer en meubels eruit. Verder om huis wat bomen weg, mede ten gerief van de buren. Nu begint voor haar de moeilijke tijd en is het een kwestie van erop of eronder. Ik verwacht erop. Als ze haar zenuwen tenminste de baas kan blijven. Er zullen nog meer moeilijke momenten komen. Oom Wim ernstig ziek, tante Janny met een kwetsbaar hart, etc.
<<ximg "/Dagboek/20070806 Dagboek.png">>
<<ximg width:400px "/Teksten/20211206 Kinderen van het licht.jpg">>
!!! Derde vakantiedag

Vandaag een beetje uitgerust van de reis. Vanochtend naar Servigliano om boodschappen te doen. Er bleek markt te zijn, we konden flink inslaan. Even koffie gedronken op het mooie plein, bezoek aan de kerk en de supermarkt en weer naar huis. Lekker geluncht aan de ronde tafel onder de boom. Na de siësta naar Montefalcone Appennino gereden, mooi bergdorp. Rondwandeling om het dorp heen, flink dalen en stijgen. Anne wist zeker dat we er eerder geweest en gelopen hadden. Ik kon me er niets van herinneren, begint de Alzheimer toe te slaan? Vanavond laatste afleveringen van Normal People gezien, hartverscheurend mooi. Ze krijgen mekaar, eind goed al goed.

|<<ximg width:400px "/Foto's/2021 Italië/0906 Anne op de markt in Servigliano.jpg">>|<<ximg width:500px "/Foto's/2021 Italië/0906 Montefalcone.JPG">>|
|<<ximg width:400px "/Foto's/2021 Italië/0906 Krijtrotsen bij Montefalcone.JPG">>|<<ximg width:400px "/Foto's/2021 Italië/0906 Anne bij uitzichtpunt.JPG">>|
|<<ximg width:400px "/Foto's/2021 Italië/0906 Anne klimt omhoog.JPG">>|<<ximg width:300px "/Foto's/2021 Italië/0906 Lunch onder de boom.jpg">>|
|borderless|k
08:10    Enige opwinding na het posten van een sollicitatiebrief voor de baan van hoogleraar-directeur van het Onderwijscentrum van de VU. Heb er erg veel zin in, 45 fte, 75 man, veel te managen. Misschien kan ik nog eens de Martin van Amerongen van de VU worden. Of is Piet van Wieringen dat al? Zou het echt te gek vinden als dat ging lukken.

17:21    Een uiterst triest bericht van Nelleke van Wouwe: haar ouders zijn omgekomen bij een vliegtuigongeluk in Spanje. Een Cessna waarin ze met z'n tweeën vlogen. Ik hoop wel dat ze de draad weer weet op te pakken.
"""Een leuk spelletje dat je met Cathrien kunt doen: Wat kun je kopen bij Oom Kees? Worst? Ja. Kaas? Ja. Appels? Als Cathrien goed oplet zegt ze dan: “Nee, hè?”. Ze vindt het erg leuk en wil steeds dat je doorgaat.
Sara is zo gemakkelijk dat ik moet uitkijken haar niet te weinig aandacht te geven. Ze vindt het juist zo leuk om te keutelen en te lachen. Ze hoeft geen speen in bed en ook het popje mist ze niet (?) Ik ben geneigd om het er steeds bij te leggen, maar Anne vindt vast gewoontes, zoals bij Cathrien, dwingend en daarom onplezierig.
De maandag begonnen met werkoverleg met de equipe van het proefstation. Elise te Woerd fungeert als stoorzender van het type Anke van Tuyl. Vergt veel geduld waarover ik op dat moment niet beschik. Soms heb ik het gevoel veel botter te moeten worden zodat ik meer aantijgingen over me heen kan laten gaan. Heel moeilijk, zo niet onmogelijk.
Anne vindt dat ik te weinig tijd aan de kinderen besteed. Omdat ik overal te weinig tijd aan besteed zal dit wel kloppen. Wat te doen? Andere baan zoeken? Gewicht neemt opzienbaren toe. Eet ik lood?
Nacht. Anne heeft veel last van haar rug, gaat morgen naar de huisarts. Maak me er grote zorgen over. Lijkt heel erg op de fase naar de hernia in 1992. Met name ook in onze relatie. Heb nog eens de dagboekfragmenten gelezen uit die periode. Vreselijk om te lezen. Wat een totale kneus ben ik emotioneel, hier wordt niemand blij van. Aantekeningen over de kinderen zijn leuk, maar mijn eigen worstelingen zijn zeer deprimerend. Ha even niet door met dit project.

Morgen Anne helpen bij de dokter. Hoe moet dit verder?

Nog steeds nacht. Deze aantekeningen zijn misschien nuttig als uitlaatklep voor jezelf maar ongeschikt voor andere ogen. Het is verbijsterd om te lezen in wat voor modderpoel aan gedachten ik me mijn hele leven heb gewenteld. En al die volstrekt vruchteloze pogingen om orde op zaken te stellen. Uitermate deprimerend. Ik ga dit project onmiddellijk stopzetten. Alleen de teksten over anderen zijn het waard om verzameld te worden. Maar dan opnieuw de vraag, voor wie? Zeker niet voor het nageslacht. Dus alleen voor jezelf.

Voortaan alleen dingen doen die gezond zijn. De computer is ongezond, tobben is ongezond. Zorgen voor een ander is gezond, met vrienden spreken is gezond. De Ekklesia is heel ongezond. Oordelen over Anne is zeer ongezond. De gewone dingen doen is gezond, de ongewone dingen doen is niet gezond. Bijbel lezen is gezond. Geloven en daarmee bezig zijn is gezond.

Psalm 51: daar staat het. Lees die elke net zo vaak tot je begrijpt wat er staat.

Gij vraagt mij niet om gaven en offers.
Als ik, gebroken en vernederd,
mijn hart geopend houd voor U,
is dat mijn offer. Neem het aan.
Begin van de tweede week. Gladheid, ijzel, dooi. Vier Nederlanders bij de eerste drie van het EK-schaatsen voor vrouwen en mannen. Eh.. vier Friezen. Schaatsen, dat kunnen we. Jeltsins actie in Tsjetsjenië zou wel eens zijn Waterloo kunnen worden. Boeiende toestanden, aldus G.B.J. Hiltermann. Kerstbomen verbrand op het Museumplein.

Wat wordt het kernpunt van deze dag? Nog een keer selectieproblemen. Lezing van de stukken afronden. Uit het hoofd aantekeningen maken, aanvullen op basis van terugbladeren. Het is nu 6:07.
Na afloop van de begrafenis van Céline Meulman (zie haar mooie foto door Geeske op Facebook geplaatst:)

<<ximg width:% "/DD/Vriend en Familie/20170103 Celine Meulman.jpg">>

vonden we het graf van Floor Grapperhaus met het mooie gedicht van [[Herman Gorter - Zie je ik hou van je]] erop. 

Vandaag een mooi Naschrift voor Janny in Trouw: <<pdf "/DD/Vriend en Familie/20170109 Trouw Naschrift Janny.pdf">>
"""
Door Jan Willem van Internet gehaald.
Proud, happy mother was terrified girl of famous Vietnam war photo
Copyright © 1997 Nando.net
Copyright © 1997 The Associated Press 
TORONTO (June 7, 1997 1:37 p.m. EDT) -- She’s best known to the world as a naked little girl, screaming in pain and terror on a highway in Vietnam. She looks so different now, a proud mother trading grins with her 3-year-old son.On June 8, 1972, Phan Thi Kim Phuc and her family were taking refuge in a Buddhist pagoda when their village was hit by napalm bombs dropped by South Vietnamese warplanes acting on U.S. orders.One bomb struck the pagoda, killing two of Kim Phuc’s brothers and setting her clothes on fire. Ripping the clothes off, she ran down the road.A photograph of the 9-year-old girl fleeing in agony won a Pulitzer Prize for Associated Press photographer Nick Ut and helped turn American public opinion against the war.Though that photograph remains one of the most indelible images of war, Kim Phuc—who now lives in Toronto with her husband and son—has committed herself to preaching forgiveness.”Even though I suffered physically and emotionally, I’m happy, because I’m living without hatred,” she said in an interview.Her life has taken several twists since the attack on her village of Trang Bang.In 1984, communist officials summoned her to Ho Chi Minh City to be used in propaganda films. In 1986 she went to Cuba to study pharmacology and met Huy Toan, who became her husband.The two accepted an invitation to spend their honeymoon in Russia, then they successfully sought asylum as refugees in 1992 when their jet stopped for fuel in Canada on the way back to Cuba. They lived on welfare for two years, but now are making do with Huy Toan’s earnings as a counselor for handicapped adults. A book project is in the works, and Kim Phuc is an active member of a Baptist church.She is expecting a second child in August, and for now is kept busy by her son Thomas, a cheerful boy who speaks Vietnamese, English and a smattering of Spanish. Her parents still live in Trang Bang, and she would like to find the money to bring them to Toronto for a visit.During her first two years in Canada, Kim Phuc kept a low profile, but she returned to the public eye last year, laying a wreath at the Vietnam Veterans Memorial in Washington as part of a Veterans Day observance.”If I could talk face to face with the pilot who dropped the bomb, I would tell him we cannot change history but we should try to do things for the present and for the future to promote peace,” she said then.After the ceremony, the American who ordered the attack on her village emerged from the crowd, embraced Kim Phuc and sobbed, “I’m so sorry.”
“It’s all right,” she told John Plummer. “I forgive, I forgive.”
•	By DAVID CRARY, The Associated Press
Anne is wakker en ligt te draaien. Elsje is ook al wakker. Ik wil nog even niet beschikbaar zijn, nog even de tijd voor mezelf houden, nog een kwartiertje. Dat gaat waarschijnlijk niet lukken. Vandaag weer terug naar Amsterdam. Weekend was enerverend maar wel geslaagd. Erg leuk om de kleinkinderen bezig te zien. Ook goed om te zien hoe de kinderen met de kleinkinderen omgaan. Een ook goed om de kinderen weer gesproken te hebben. Te zien hoe de relaties zich ontwikkelen. Dat gaat allemaal goed. Over Berend en Sietske maak ik me wel enige zorgen. Heel jammer van de val en de gebroken arm van Anne. Wordt een lastig traject. Wandelvakantie lijkt me een risico worden, vooral het dragen van de rugzakken. Die acht kilo is sowieso teveel. Maar de corona-epidemie zet de zaak ook al op losse schroeven. Italië is koploper in de wereld, na China. Ruim 5000 gevallen, 366 sterfgevallen.
<<ximg "Pensionado/Geheugen/Dagboek/20160509 Dagboek.png">>
<<ximg width:% "/Dagboek/20190909.jpg">>

Terwijl het Britse parlement een wet aanneemt die het Boris Johnson verbiedt zonder deal de EU te verlaten en de nieuwe Italiaanse regering, Conte Bis, het vertrouwen van het parlement krijgt, maken wij een mooie wandeling in de omgeving van Sarnano. 

Het eerste deel gaat door de velden rond Sarnano, met een prachtige view op het stadje. Vervolgens het bos in. Het lopen met de stafkaart op de telefoon, de uitgezette wandeling en de GPS-functie gaat heel goed, maar toch raakten we nu van het pad af. We liepen een stuk door het weiland maar het spoor liep dood. Toch een bijzonder moment: we zagen een vosje door de wei lopen. Via een kleine detour kwamen we weer op de route uit en bereikten we Sarnano weer. 's Middags naar Amandola gereden om boodschappen te doen en nog een consumptie onder de bogen te nuttigen.


Beste meneer Levi,

Uw columns in het Parool volgen wij met belangstelling en plezier. Daarom deze mail. U hebt een groot platform en een sterke overtuigingskracht. Misschien spreekt onderstaand idee u aan en kunt u er iets mee in uw columns. We hebben er zelf met vrienden over gesproken en ontmoeten veel instemming. Het idee in twee stappen.

1. We dobberen op de golven van een langdurige coronacrisis. Het wordt tijd om te beseffen dat het niet langer een crisis is waar we in leven, maar een nieuwe toestand: de samenleving-met-corona. We raken het virus in al zijn steeds nieuwe gedaanten niet meer kwijt. We hollen steeds  achter de feiten aan in pogingen om op korte termijn het aantal besmettingen omlaag te brengen. Beter is het om de vraag te stellen: hoe willen we op lange termijn onze samenleving-met-corona inrichten? Wat doen we met ons onderwijs, met de cultuursector, de sport, het openbaar vervoer? Sommige maatregelen, zoals de 1,5 meter afstand en het sluiten van de scholen, lijken vanuit dat perspectief onhoudbaar. Andere maatregelen, zoals het niet langer handen schudden, het investeren in ventilatie, misschien het dragen van mondmaskers, lijken vanuit dat perspectief wel zinvol.

2. Een belangrijk sector in de samenleving-met-corona is de gezondheidszorg. Nu nog laten we ons leiden door statistieken van aantallen besmettingen, bezette ziekenhuisbedden en ic-opnames. Beter is het om aparte coronaziekenhuizen in te richten waar de zorg is afgestemd op de behandeling van coronapatiënten. Precies zoals we gedaan hebben met de behandeling van tb-patiënten. Naarmate preventie en behandeling verbeteren kunnen coronaziekenhuizen weer inkrimpen, net als de sanatoria voor de behandeling van tuberculose. Op deze manier verdringt de coronazorg de reguliere zorg niet langer maar investeren we in de toekomst: de samenleving-met-corona. 

Het idee van het coronaziekenhuis is niet nieuw. De website van het blad De Ingenieur (www.deingenieur.nl) geeft op 15 november een beeld van zo´n ziekenhuis. Maar het verdient meer aandacht en krachtiger pleidooi door een gezaghebbende vertolker. Vandaar onze suggestie aan u om het te overwegen.
"""
Onze diepste angst is niet, dat we ontoereikend zijn. Onze diepste angst is dat we oneindig krachtig zijn. Het is ons licht, niet onze duisternis, waar we het allerbangst voor zijn. We vragen ons af: wie ben ik dat ik briljant, buitengewoon aantrekkelijk, getalenteerd en geweldig zou zijn?

Maar waarom eigenlijk niet? Je bent toch een kind van God? Dat je je kleiner voordoet dan je bent komt de wereld niet ten goede. Er is niets verheffends aan je kleiner voor te doen dan je bent opdat de mensen om je heen zich vooral niet onzeker gaan voelen.

Wij zijn geboren om de luister van God uit te dragen die in ons woont. Niet slechts in enkelen van ons, maar in ons allemaal. Als we ons licht laten schijnen, geven we anderen onbewust toestemming dat ook te doen. Als we bevrijd zijn van onze eigen angst, bevrijdt onze aanwezigheid automatisch anderen.
<tgeel>M</tgeel>
"""Ik ging naar Bommel om de brug te zien.
Ik zag de nieuwe brug. Twee overzijden
die elkaar vroeger schenen te vermijden,
worden weer buren. Een minuut of tien

dat ik daar lag, in 't gras, mijn thee gedronken,
mijn hoofd vol van het landschap wijd en zijd -
laat mij daar midden uit de oneindigheid
een stem vernemen dat mijn oren klonken.

Het was een vrouw. Het schip dat zij bevoer 
kwam langzaam stroomaf door de brug gevaren.
Zij was alleen aan dek, zij stond bij 't roer,

en wat zij zong hoorde ik dat psalmen waren.
O, dacht ik, o, dat daar mijn moeder voer.
Prijs God, zong zij, Zijn hand zal u bewaren.

"""
Anne:
Flecainideacetaat (tambocor) retard 100 mg per dag
Amlodipine (als besilaat) 10 mg per dag
Acetylsalicylzuur cardio 80 mg (40 mg per dag)

Jos:
Simvastatine 40 mg
Timogel 1 mg/g
Cholecalciferol 800 IE

{{[[Begrip]] [[Gedrag]]}}

Positief gedrag
Negatief gedrag
"""
Krop icebergsalade
2 ons gehakt
1 mozzarella
Blik maïs
Blik kidney beans
Geraspte kaas
Tortilla chips
''Waarom mooi?''<br>
Periode: genuanceerd
Karakters: sympathiek
Toon: geestig en ironisch
Voorvallen: talrijk

''Wat is minder geslaagd?''<br>
Niet alle gebeurtenissen even waarschijnlijk.
Het gevoel van wanhoop als lezer: hoi toch eens op met dat drinken.

''Welke romanfiguur kies ik?''<br>
Franz, het districtshoofd

''Welke passage kies ik?''<br>
"De keizer stond op. Zijn barbier kwam. Elke ochtend stak hij hem zijn kin toe, zijn bakkebaarden werden bijgeknipt en netjes geborsteld. Bij zijn oorschelpen en voor zijn neusgaten kietelde het koele metaal van de schaar. Soms moest de keizer niezen. Hij zat vandaag voor een kleine, ovale spiegel en volgde met aangename spanning de bewegingen van de magere handen van de barbier. Na elk haartje dat viel, na elke haal van het scheermes en elke streek van de kam of de borstel sprong de barbier achteruit en fluisterde: ‘Majesteit!’, met bevende lippen. De keizer hoorde dat gefluisterde woord niet. Hij zag alleen de lippen van de barbier voortdurend bewegen, hij durfde niets te vragen en dacht ten slotte dat de man een beetje zenuwachtig was. ‘Hoe heet u?’ vroeg de keizer. De barbier – hij bezat de rang van korporaal, hoewel hij pas een halfjaar bij de landweer was, maar hij diende zijn kolonel onberispelijk en mocht zich verheugen in de gunst van al zijn superieuren – was met één sprong bij de deur, elegant zoals zijn vak het vereiste, maar ook militair, het was een sprong, een buiging en een verstarring tegelijk, en de keizer knikte goedkeurend. ‘Hartenstein!’ riep de barbier. ‘Waarom springt u zo?’ vroeg Franz Joseph. Maar hij kreeg geen antwoord. De korporaal liep weer aarzelend naar de keizer toe en voltooide zijn werk met haastige handen. Hij wou dat hij ver weg en weer in het kamp was. ‘Blijf toch hier!’ zei de keizer. ‘Ach, u bent korporaal! Allang in dienst?’ – ‘Een halfjaar, Majesteit!’ fluisterde de barbier. ‘Zozo! En nu al korporaal? In mijn tijd,’ zei de keizer, alsof hij een oudgediende was, ‘ging het niet zo vlot! Maar u bent ook wel een kranige soldaat. Bent u van plan in het leger te blijven?’ Barbier Hartenstein had vrouw en kind en een goedlopende zaak in Olmütz, hij had al een paar maal geprobeerd gewrichtsreumatiek te simuleren om spoedig ontslagen te worden. Maar hij kon tegen de keizer geen nee zeggen. ‘Jawel, Majesteit!’ zei hij en op hetzelfde ogenblik wist hij dat hij zijn hele leven had verknoeid. ‘Dan is het goed. Dan bent u van nu af aan sergeant-majoor! Maar doet u niet zo zenuwachtig.’"
Algoritme om verwantschap tussen kankercellen vast te stellen, zodat duidelijker wordt of een kankercel een metastase is of deel uitmaakt van een nieuwe tumor. Belangrijk voor de therapie.

Technieken uit een ander domein gehaald, sequence alignment algorithms, die ook heel goed overeenkomsten tussen tumoren kunnen kwanitificeren, naast correlationele technieken. 

Zonder meer knap werk. Maatschappelijk en wetenschappelijk belang duidelijk. Leesbaarheid zeer goed, geen link met diversiteit.

Maatschappelijk belang: 5
Wetenschappelijk belang: 5
Leesbaarheid: 4
Diversiteit: 1
Totaal 15

<$button class=<<tv-config-toolbar-class>> tooltip="Move Tiddler Down">{{$:/core/images/chevron-down}}<$action-listops $tiddler='$:/StoryList' $field='list' $subfilter='[list[$:/StoryList]move<currentTiddler>]'/></$button> 
<$button class=<<tv-config-toolbar-class>> tooltip="Move Tiddler Up">{{$:/core/images/chevron-up}}<$action-listops $tiddler='$:/StoryList' $field='list' $subfilter='[list[$:/StoryList]move:-1<currentTiddler>]'/></$button> 
[[Muffin!]] [img width="30%" [https://giffmex.org/images/muffin1.JPG]]
[[Muffin!]] [img width=30% [https://giffmex.org/images/muffin2.jpg]]
Clicking the various checkboxes in the {{$:/core/images/preview-open}} tab in the sidebar will change the appearance of the items in the references section (the list of backlinks) at the bottom of this tiddler. 

When you are done playing with my dog, return to [[Welcome to Stroll]] to continue the tutorial.
.myDatumEdit { width:100%; height:5em !important; }

\define myReferences()
<$list filter="[all[current]backlinks[]sort[title]]" emptyMessage=<<lingo
TiddlerInfo/References/Empty>> ><$link to={{!!title}}><$view
field="title"/>, </$link></$list>
\end
<$list filter="[prefix[$:/state/tab/sidebar]]" variable="sidebarTab">
<$action-deletetiddler $tiddler=<<sidebarTab>>/>
</$list>
<$action-setfield $tiddler="$:/config/AutoSave" $value="yes"/>
.myTextEdit {width: 100%; height: 10em  !important;}
Menselijke waardigheid vormt dus een belangrijke inspiratiebron voor de rechten van de mens. Deze rechten corresponderen met menselijke waarden en diepgewortelde rechtsbeginselen, waaraan in een democratische rechtsstaat bijzondere betekenis toekomt. Er wordt wel gezegd dat deze regels en beginselen voortvloeien uit het verstand (ratio) of de natuurlijke ordening, of door God zijn gegeven, en daarom universele geldigheid hebben. Dit wordt wel aangeduid met de term natuurrecht, het recht waarvan het niet altijd nodig wordt gevonden dit uit te schrijven. De rechten van de mens zouden onderdeel uitmaken van het natuurrecht.
https://www.newstatesman.com/culture/books/2016/01/stefan-zweig-and-joseph-roth-how-europe-s-exiled-intellectuals-ended-belgian

Stefan Zweig and Joseph Roth: How Europe’s exiled intellectuals ended up on a Belgian beach
In choosing to take up this story in the summer of 1936, Weidermann finds a moment of relative calm and normality in the émigrés’ lives.


BY
ADAM KIRSCH
Stefan Zweig and Joseph Roth.
IMAGNO/GETTY IMAGES
 
 
 
 
Sign Up
Get the New Statesman\’s Morning Call email.

SIGN-UP
On 3 July 1936, a Czechoslovakian Jewish journalist named Stefan Lux entered the general assembly of the League of Nations in Geneva, shouted “C’est le dernier coup”, and shot himself with a revolver. Lux wanted his suicide to be a warning cry against anti-Semitism and Nazi militarism. But if he thought that even such a public sacrifice would serve as the “final blow” against fascism, he was tragically mistaken. Two years after Lux’s death came the dismemberment of his country in the Munich Agreement and the Germany-wide pogrom known as Kristallnacht. The following year
brought the Second World War and the beginnings of the Holocaust. All that Lux’s death accomplished was to confirm the very powerlessness it was meant to protest. Nor did he even win the posthumous thanks of posterity, given that today his name and his deed are practically unknown.

Lux features in an offstage cameo role in the non-fiction chamber drama that is Summer Before the Dark. The German journalist Volker Weidermann has devoted this short, elegiac book to the German émigré writers, most of them Jews, who congregated in Ostend in the summer of 1936, mainly because they had no place better to go. At the centre of this unhappy cenacle were two writers who shared Lux’s fate. Stefan Zweig’s journeys took him all the way to Petrópolis, Brazil, before he gave up hope and took an overdose of barbiturates (with his wife, Lotte) in 1942. Joseph Roth’s death also deserves to be called a suicide: he died in Paris in May 1939 after years of acute alcoholism. (His final crisis was precipitated by yet another suicide, that of Ernst Toller, the communist playwright, who had killed himself in New York City a few days earlier.)

The effects of exile on Zweig and Roth had been immediate and dramatic. When Hitler came to power in 1933, each man was at the peak of his literary career, though that success took very different forms. Roth was a long-time star correspondent for the Frankfurter Zeitung, and had just written the novel that was his masterpiece, The Rad­etzky March. Zweig, who lived in splendour in Salzburg, Austria, was a writer of sensational novellas and digestible works on the history of ideas, books that were immensely popular in Germany and beyond. Their close friendship endured despite the evident differences in their temperament – Zweig was a moderate bourgeois, Roth a romantic bohemian – and, trickier still, in their abilities: Roth was a writer of genius, while Zweig knew he had only talent.

Roth, as a Jew and a well-known critic of Nazism, knew that he had to flee Germany immediately. He left for Paris on the day Hitler took power, 30 January 1933, and never returned. Zweig, an Austrian citizen and an outspoken liberal pacifist, soon came under pressure from his country’s authoritarian regime, and he transplanted himself to England in 1934. Zweig’s books were burned and banned in Germany, but he remained so popular in translation that he was never short of money. Roth, on the other hand, was now unemployable as a journalist, and lived hand-to-mouth on tiny advances from small émigré publishers. Their correspondence, which can be found in the 2012 book Joseph Roth: a Life in Letters, is fascinating for the double imbalance of power it shows. Roth depended on Zweig’s money and influence, yet he insisted on the superiority of his own literary and political standards. He had no qualms about lecturing the man who supported him, writing to Zweig in October 1933, for instance: “Haven’t you got that yet? The word has died, men bark like dogs. The word has no importance any more, none in the current state of things . . . Everything is shit.”

In recent years, the reputations of both men have undergone a sudden revival in the English-speaking world, thanks to extensive new translations and biographical works. Summer Before the Dark is a sign of how far this revival has succeeded: it is now possible for these writers and their émigré milieu to be the subject of a work of popular history very much like those Stefan Zweig used to write. One of his most successful books, Sternstunden der Menschheit (Decisive Moments in History, 1927), was a collection of a dozen historical sketches of moments that “changed the world”, from the Battle of Waterloo to the fall of Constantinople. Summer Before the Dark, on the other hand, is a story of people who failed to change the world: men who were expelled from history by the Nazis and had to watch helplessly as it steamrollered them into oblivion.

In choosing to take up this story in the summer of 1936, Weidermann finds a moment of relative calm and normality in the émigrés’ lives. The urgent flight from Germany is over; the chaotic and deadly flight from the German armies is still in the future. Ostend itself seems like a place where nothing bad could happen: “the expansive long beach, the big, overly broad promenade, the elaborately curved casino with its large terrace, the bistros with their little marble tables outside, the wooden bathing huts in the sand”. It is a middle-class paradise of the sort we associate with pre-First World War Europe. Indeed, Zweig was at Ostend in July 1914, and continually delayed his departure in the belief that war was just a rumour. Not until he was on the last train to Germany, and passed trucks carrying cannons towards the Belgian border, did he
begin to believe that the crisis was for real.

Weidermann opens his book at that moment of false security, just as Europe’s new Thirty Years War is about to break out. He sketches in the subsequent lives and careers of Zweig and Roth with economical strokes, bringing out the ready-made contrast between the two. Like virtually every writer on the subject, Weidermann can’t help condescending to Zweig:

Zweig is still writing out of a world, and about a world, that no longer exists. His ideal [of tolerance and mutual understanding] is pointless, unrealistic, risible, and dangerous . . . What use is tolerance in a world in which any man and everything he lives for and everything he writes are in danger of being ground to a pulp?

By contrast, Roth, with his fantastic dreams of restoring the Habsburg throne, may be unreal and absurd, but at least he is passionately committed.

Zweig is partly to blame for the way posterity treats him. In his memoir, Die Welt von Gestern (The World of Yesterday), he is so modest about his achievements that he practically writes himself off, along with the liberal values he held dear. Yet how many people are possessed of the genius they high-handedly condemn Zweig for lacking, and in a geopolitical crisis how many would demonstrate better judgement than he did? Perhaps we dislike Zweig precisely because he reminds us too much of ourselves; and we romanticise in Roth the egotistical, self-destructive artist we would shun in real life.

For even in Weidermann’s friendly account, Roth comes across, without question, as an impossible man: self-pitying, improvident, monstrously needy. Irmgard Keun, another émigré writer in Ostend that summer – and “the only Aryan here”, as she cheerfully acknowledged – fell in love with Roth at first sight and spent years tending to his needs, such as holding his head during his daily bouts of vomiting. But even she eventually ran away: “I left him with a deep sigh of relief . . . I felt as if I’d escaped an unbearable burden.” Zweig was able to maintain a relationship with Roth only by keeping him at a distance, emotionally and physically. Yet under the circumstances, his devotion to his friend must be considered truly magnanimous.

A book about Roth and Zweig – and Keun and Toller and Arthur Koestler and Willi Münzenberg, all of whom play small roles – is necessarily a book about despair. Yet if there is an objection to be made to Summer Before the Dark, it is that Weidermann turns what ought to be a wretched, wrenching experience into one that is merely melancholy, not without a kind of glamour. He does not omit the grim details of the émigrés’ lives: we see Roth’s “badly swollen” feet, the stigmata of advanced alcoholism, which make it hard for him to wear shoes. Yet the whole approach and tone (and title) of the book are intent on turning Ostend 1936 into a kind of late-afternoon idyll of European civilisation. From our point of view, it is all so “interesting” – the brilliant minds, the political drama, the friendships and love affairs. Only by turning to Roth’s letters, or the essays of Walter Benjamin, can we begin to grasp what it really meant to be exiled and waiting for death in an indifferent world – as millions of people are in our own time.

Summer Before the Dark: Stefan Zweig and Joseph Roth, Ostend 1936 by Volker Weidermann, translated by Carol Brown Janeway, is published by Pushkin Press (169pp, £12.99)

Adam Kirsch’s books include “Rocket and Lightship: Essays on Literature and Ideas” (W W Norton)


<$set name="myVariable" filter="[all[current]title["xxx"]]" value="It's magic" emptyValue="It's not magic">
<$text text=<<myVariable>>/>
</$set>

Two buttons at the top create new tiddlers that link to the tiddler from which they were created.

*<<icon {{$:/core/images/new-button}} "">> in the tiddler viewtoolbar creates a simple tiddler that contains a link to the present tiddler.
*<<icon {{$:/core/images/new-journal-button}} "">> does the same, but the tiddler title is a date and time stamp.

<span class="bluebox">

''Activity:''

Click the buttons in any tiddler to see the tiddlers they create. Save changes. Use the searchbar to search for [[Welcome to Stroll]]. Use that link to return to the tutorial.

</span>
https://www.nybooks.com/articles/2011/12/22/letters-between-stefan-zweig-and-joseph-roth/

Letters Between Stefan Zweig and Joseph Roth
Stefan Zweig and Joseph Roth
December 22, 2011 issue

Submit a letter:

Email us letters@nybooks.com

Stefan Zweig to Joseph Roth, March 31, 1936 (from London)

…You must get it out of your head, the idea that we’re somehow being rough with you, or hard on you. Don’t forget we’re living in a period of general doom, and we can count ourselves lucky if we get through it at all. Don’t go accusing publishers, don’t blame your friends, don’t even beat your own breast, but finally have the courage to admit that however great you are as a writer, in material terms you’re a poor little Jew, almost as poor as seven million others, and are going to have to live like nine tenths of the human beings in the world, on a small footing and with a tightened belt. For me that would be the only proof of your cleverness: don’t always “fight back,” stop going on about the injustice of it all, don’t compare your earnings to those of other writers who don’t have a tenth of your talent. Now is your chance to show what you call modesty….

Roth to Zweig, April 2, 1936 (from Amsterdam)

…You know you’ve no need to tell me of all people what it is to be a poor little Jew. I’ve been that since 1894, and with pride. A believing Eastern Jew from Radziwillow. I would drop it if I were you. I’ve been small and poor for 30 years. Heck, I am poor.

But nowhere is it written that a poor Jew may not try to earn a living. That’s the only advice I turned to you for. If you don’t know, then say so. I thought you might be able to put me the way of some film people, or something….

Roth to Zweig, July 10, 1937 (from Brussels)

…You blame God for your aging, instead of thanking Him for it. You don’t understand that people have gotten worse, because you were never willing to see them as good and bad and as human until Judgment Day, which you are so slow to believe in. How can I talk to you? Because you notice it getting darker, you stand there bewildered by the approach of night; and you think, furthermore, that it’s something personal to do with you. Even currency devaluations you take as a personal affront, because you had thought you could save yourself by living in the isles of the blest. Now, for the sake of money, you want to return to the Continent, and to its darkest part. (Mind you don’t stay there too long!) You are independent of publishers and advances. You can afford to write nothing at all for two years. You truly are a “freelance.” Who else can say that of himself?

[Romain] Rolland has disappointed you. My Lord! He always was a false prophet and in thrall to noble errors and idealistic self-deceptions. Just before the World War he idolized the Germans and put to sleep whatever alertness the continent had. After the war he proclaimed the absolute goodness of humankind, and today he’s a lackey of the Russian executioners. In the truest sense of the word, he has never known where God dwells, and he never will till his dying day.

You already have a clear notion—being of the tribe of Asra, who have God, even if they never get him—of the inadequacy of all human idealisms that you bathed in from the time of your youth, and in which you have steeped yourself. You’re bound to be disappointed. The nonviolence of Mahatma Gandhi is just as unhelpful to me, as Hitler’s violence is detestable. Of course you shouldn’t sign up for any party or group. I don’t see why that should even occur to you. You are an unregistered member of a motley group as it is, with tumblers, men of the world, rascals and dilettantes and liars, all coexisting with a small handful of decent individuals. You think you have already withdrawn from it. Oh no, you haven’t! Why for instance did you send a statement to be read out at the PEN Club? An organization where Communists and Fascists shoulder the yoke of politics and the state, and you come along and intone your: Down with politics! You’re not serious. Don’t you understand? That might be the way to speak in front of a republic of ghosts, but not to a lurid organization where arseholes have seats and votes alongside brains. Do you think you’ll tug at [Lion] Feuchtwanger’s conscience? Will you hell! Why do you do these things! You can’t get over the loss of Germany! It’s only if Germany exists that you can be a cosmopolitan.

Show equanimity to the world and give what you have in the way of goodness to three or four individuals, not to “humankind,”

your old

Joseph Roth

This Issue

December 22, 2011

Image of the December 22, 2011 issue cover.
Edward Jay Epstein
Strauss-Kahn: The Untold Story

Michael Tomasky
The ‘CEO of Self’

Ingrid D. Rowland
The Crass, Beautiful Eternal City

All Contents
Subscribe to our Newsletters

Best of The New York Review, plus books, events, and other items of interest

Stefan Zweig letters copyright © Williams Verlag AG, Zürich, 1976.

Joseph Roth Briefe copyright © 1970 by Verlag Kiepenheuer & Witsch, Cologne, and Verlag Allert de Lange, Amsterdam.

Stefan Zweig
Stefan Zweig (1881–1942), novelist, biographer, poet, and translator, was born in Vienna into a wealthy Austrian Jewish family. During the 1930s, he was one of the best-selling writers in Europe, and was among the most translated German-language writers before the Second World War. With the rise of Nazism, he moved from Salzburg to London (taking British citizenship), to New York, and finally to Brazil, where he committed suicide with his wife. New York Review Books has published Zweig’s novels The Post-Office Girl and Beware of Pity as well as the novella Chess Story.

Joseph Roth
Joseph Roth died at age forty-five in Paris in 1939. He is the author of The Radetzky March, among many other novels. The article in this issue will appear in What I Saw: Reports from Berlin, 1920– 1933, to be published this month by W.W. Norton. (December 2002)
"""<div class="tc-table-of-contents">
<<my-toc-linked-selective-expandable-body "Sinterklaas 2021" sort[tocnr]>>
</div>
|^12:34|Eerst even de puntjes bedenken|
|^12:37|OK, waar zouden we over spreken? Verslag Marga|
|^12:55|De dichtregels lijken me wat veel van het goede. Aan de schrijf maar.|


"""
Stukje:
Om te beginnen, namens team en bestuur, een oprechte wens aan alle bezoekers van de Ekklesia: veel heil en zegen in 2022! De Kerstdagen hebben hopelijk tijd en gelegenheid voor enige reflectie geboden, via kranten, tv en de mooie podcasts uit de Ekklesia. Corona blijft ook in 2022 een niet te ontwijken realiteit. Zijn er lichtpuntjes, zoals een meer besmettelijke maar minder ziekmakende omikronvariant? De autoriteiten zijn er nog niet uit. We zullen ons als Ekklesia moeten bezinnen op een toekomst, zeker op de korte termijn, waarin risico's op besmetting aanwezig blijven. Als team en bestuur gaan we daarover met elkaar in gesprek: hoe gaan we onder deze omstandigheden verder met podcasts, diensten, leerhuizen en groepen, en ook andere, nieuwe vormen om elkaar te ontmoeten. Dit gesprek willen we ook in de Ekklesia als gemeenschap voeren. 
Voor dit moment houden we de moed erin met de wens dat we elkaar ook in 2022 blijven vasthouden. 


Verslag Marga:
30-11-21
Beleidsagenda. Is de werkwijze oké? We nemen de punten door. Bettine: We moeten toch stevige keuzes maken voor de voortgang van de Ekklesia. Ook financieel, zegt Seph. We beginnen het gesprek in januari en zetten het voort in februari nav de financiën. Bettine en Mirjam maken een beleidsnotitie mbt de voortgang van de ekklesia.
ALV:
Voornemens en vragen 2022-2024. Dit stuk is besproken op de heidag. Vraag van Marten van Harten: Hoe blijf je vindbaar voor zoekers op het snijvlak van bijbel en maatschappij? Dat is een punt van aandacht voor het liturgisch team. Vraag over de podcast: kunnen we niet ons aansluiten bij andere kerken, bijv. bij het radiopastoraat, want dit is gewoon heel veel werk voor het team. Harris: Moeten wij doorgaan met vrijwilligers en een steeds kleiner wordend aantal bezoekers? Gaan we door of gaan we afbouwen? Een andere vraag: Kunnen we niet bij Trouw een artikel over het 60-jarig bestaan geplaatst krijgen? Daar wordt aan gewerkt. Huisvesting is ook een belangrijk punt. Daar is een commissie voor.  Het stuk is gearresteerd.
Niet helemaal duidelijk wat nu de lijn is. Laten we het bespreken in januari en daar met elkaar bepalen hoe verder en in het bestuur en in de ekklesia. 
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
closed
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline hardlinebreaks html commentinline commentblock 
<!--  This rule set prevents unwanted interpretation of wikitext syntax inside a stylesheet or macro definition tiddler. -->
<!-- Style html tag not not needed when tiddler has $:/tags/Stylesheet tag. This is preferable because it allows us to see the text when the tiddler is open, and also prevents styles without the tag from applying just because the tiddler is open on the page. -->
"""

.nn-breadcrumb {
  width: 100%;
  margin-bottom: .5em;
}
.nn-breadcrumb-child {
  border-color: silver;
  border-style: none none dashed none;
  border-width: 0 0 1px 0;
}
.nn-breadcrumb-child:first-child {
  padding-bottom: 0.25em;
}
.nn-breadcrumb-child:last-child {
  border-style: none none solid none;
}


.nn-nested {
  position: relative;
  padding: 0 0 0 2em;
  margin-top: 0.5em;
  line-height: 1.5em;
}
.nn-h2 {
  margin-bottom: 0.25em;
}
.nn-h2 + p {
  margin: 0 0 0.5em 0;
}
.nn-h3 {
  display: inline;
}
.nn-h3 + div > p {
  margin-top: 0em;
  margin-bottom: 0em;
  padding-top: 0em;
  padding-bottom: 0em;
}
.nn-reveal-button {
  position: absolute;
  left: 0.75em;
}

"""
\define NNRoot()
$(currentTiddler)$-Root
\end
\define currentStoryList()
$(currentTiddler)$-StoryList
\end
\define currentHistoryList()
$(currentTiddler)$-HistoryList
\end
\define StateDisplayText()
$(NNViewTiddler)$-DisplayText
\end
\define breadcrumbActions()
<$set name="listToRemove" filter="[list<currentStoryList>allafter<breadcrumbTiddler>]">
<$action-listops $tiddler=<<currentStoryList>> $subfilter="+[remove<listToRemove>]" />
</$set>
\end
\define ViewNNActions()
<$set name="NNRootText" value={{$(currentTiddler)$-Root!!text}} >
<$action-listops $tiddler=<<currentStoryList>> $filter="[enlist<NNRootText>]" />
</$set>
\end
\define NestedNote(path)
<$set name="nn-state" value=<<qualify """nn/state/$(currentTiddler)$""">> >  <!-- nn/state/$path$/$(currentTiddler)$ -->
  <div class="nn-nested">
    <$reveal state=<<nn-state>> type="match" text="closed" default="open" animate="no" retain="no" tag="span" class="nn-reveal-button">
      <$button actions="""<$action-deletetiddler $tiddler=<<nn-state>> />""" class="tc-btn-invisible">{{$:/core/images/right-arrow}}</$button>
    </$reveal>
    <$reveal state=<<nn-state>> type="nomatch" text="closed" default="open" animate="no" retain="no" tag="span" class="nn-reveal-button">
      <$button set=<<nn-state>> setTo="closed" class="tc-btn-invisible">{{$:/core/images/down-arrow}}</$button>
    </$reveal>
    <$set name="titleDisplay" filter="[<currentTiddler>has[titletext]]" value="titletext" emptyValue="title">
      <h3 class="nn-h3"><$link to={{!!title}}><$transclude field=<<titleDisplay>> mode="inline" /></$link></h3>
    </$set>
    <$reveal state=<<nn-state>> type="nomatch" text="closed" default="open" animate="no" retain="no" tag="div" class="nn-reveal">
      <$reveal state=<<StateDisplayText>> type="nomatch" text="no" default="yes" animate="no" retain="no" tag="div">
        <$transclude field="text" mode="inline" />
      </$reveal>
      <$list filter="[list<currentTiddler>]">
        <$macrocall $name="NestedNote" path="$(currentTiddler)$" />  <!-- $path$/$(currentTiddler)$ -->
      </$list>
    </$reveal>
  </div>
</$set>
\end
<!-- ################################################################ -->
<$set name="NNViewTiddler" value=<<currentTiddler>> >
<$checkbox tiddler=<<StateDisplayText>> field="text" checked="yes" unchecked="no" default="yes">Display "text" field content.</$checkbox>
<div class="nn-breadcrumb">
  <div class="nn-breadcrumb-child">
    <$button actions=<<ViewNNActions>> >View</$button>
    <$edit-text tiddler=<<NNRoot>> tag=input />
    <$button set=<<NNRoot>> setTo="" actions="""<$action-setfield $tiddler=<<currentStoryList>> $field="list" $value="">""" class="tc-btn-invisible">{{$:/core/images/close-button}}</$button>
  </div>
  <$list filter="[list<currentStoryList>butlast[]]" variable="breadcrumbTiddler">
    <div class="nn-breadcrumb-child">
      <$button actions=<<breadcrumbActions>> class="buttonLikeLink">
        <$set name="titleDisplay" filter="[<currentTiddler>has[titletext]]" value="titletext" emptyValue="title">
          <$transclude tiddler=<<breadcrumbTiddler>> field=<<titleDisplay>> />
        </$set>
      </$button>
    </div>
  </$list>
</div>
<$navigator story=<<currentStoryList>> history=<<currentHistoryList>> openLinkFromInsideRiver="bottom" openLinkFromOutsideRiver="bottom" relinkOnRename={{$:/config/RelinkOnRename}}>
  <$list filter="[list<currentStoryList>last[1]]" emptyMessage="Choose a tiddler to view it's nested notes." >
    <$set name="titleDisplay" filter="[<currentTiddler>has[titletext]]" value="titletext" emptyValue="title">
      <h2 class="nn-h2"><$link to={{!!title}}><$transclude field=<<titleDisplay>> mode="inline" /></$link></h2>
    </$set>
    <$reveal state=<<StateDisplayText>> type="nomatch" text="no" default="yes" animate="no" retain="no" tag="div">
      <$transclude field="text" mode="inline" />
    </$reveal>
    <$list filter="[list<currentTiddler>]">
      <$macrocall $name="NestedNote" path=<<currentTiddler>> />
    </$list>
  </$list>
</$navigator>
</$set>
no
[
    {
        "title": "nn-00a",
        "fromPageRect": {
            "top": 73.92044830322266,
            "left": 144.97158813476562,
            "width": 50.80965805053711,
            "right": 195.78124618530273,
            "bottom": 93.92044830322266,
            "height": 20
        }
    },
    {
        "title": "nn-00a",
        "fromPageRect": {
            "top": 276.7897644042969,
            "left": 84.97158813476562,
            "width": 65.17045593261719,
            "right": 150.1420440673828,
            "bottom": 302.2443084716797,
            "height": 25.454544067382812
        }
    },
    {
        "title": "nn-00a",
        "fromPageRect": {
            "top": 276.7897644042969,
            "left": 84.97158813476562,
            "width": 65.17045593261719,
            "right": 150.1420440673828,
            "bottom": 302.2443084716797,
            "height": 25.454544067382812
        }
    },
    {
        "title": "nn-00a",
        "fromPageRect": {
            "top": 276.7897644042969,
            "left": 84.97158813476562,
            "width": 65.17045593261719,
            "right": 150.1420440673828,
            "bottom": 302.2443084716797,
            "height": 25.454544067382812
        }
    },
    {
        "title": "nn-1",
        "fromPageRect": {
            "top": 156.19317626953125,
            "left": 84.97158813476562,
            "width": 237.8551025390625,
            "right": 322.8266906738281,
            "bottom": 181.64772033691406,
            "height": 25.454544067382812
        }
    },
    {
        "title": "nn-1",
        "fromPageRect": {
            "top": 156.19317626953125,
            "left": 84.97158813476562,
            "width": 237.8551025390625,
            "right": 322.8266906738281,
            "bottom": 181.64772033691406,
            "height": 25.454544067382812
        }
    },
    {
        "title": "nn-1",
        "fromPageRect": {
            "top": 156.19317626953125,
            "left": 84.97158813476562,
            "width": 237.8551025390625,
            "right": 322.8266906738281,
            "bottom": 181.64772033691406,
            "height": 25.454544067382812
        }
    },
    {
        "title": "nn-00o",
        "fromPageRect": {
            "top": 441.19317626953125,
            "left": 144.97158813476562,
            "width": 526.5625,
            "right": 671.5340881347656,
            "bottom": 482.1022644042969,
            "height": 40.909088134765625
        }
    },
    {
        "title": "nn-00o",
        "fromPageRect": {
            "top": 180.42613220214844,
            "left": 84.97158813476562,
            "width": 572.6988525390625,
            "right": 657.6704406738281,
            "bottom": 232.24431228637695,
            "height": 51.818180084228516
        }
    },
    {
        "title": "nn-00o",
        "fromPageRect": {
            "top": 180.42613220214844,
            "left": 84.97158813476562,
            "width": 572.6988525390625,
            "right": 657.6704406738281,
            "bottom": 232.24431228637695,
            "height": 51.818180084228516
        }
    },
    {
        "title": "nn-00o",
        "fromPageRect": {
            "top": 180.42613220214844,
            "left": 84.97158813476562,
            "width": 572.6988525390625,
            "right": 657.6704406738281,
            "bottom": 232.24431228637695,
            "height": 51.818180084228516
        }
    },
    {
        "title": "Muziek",
        "fromPageRect": {
            "top": 408.9204406738281,
            "left": 84.97158813476562,
            "width": 75.35511016845703,
            "right": 160.32669830322266,
            "bottom": 434.37498474121094,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Muziek",
        "fromPageRect": {
            "top": 408.9204406738281,
            "left": 84.97158813476562,
            "width": 75.35511016845703,
            "right": 160.32669830322266,
            "bottom": 434.37498474121094,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Muziek",
        "fromPageRect": {
            "top": 216.19317626953125,
            "left": 84.97158813476562,
            "width": 75.35511016845703,
            "right": 160.32669830322266,
            "bottom": 241.64772033691406,
            "height": 25.454544067382812
        }
    },
    {
        "title": "Muziek",
        "fromPageRect": {
            "top": 216.19317626953125,
            "left": 84.97158813476562,
            "width": 75.35511016845703,
            "right": 160.32669830322266,
            "bottom": 241.64772033691406,
            "height": 25.454544067382812
        }
    }
]
nn-1


Over Obamacare: vanuit Nederlands perspectief is het vreemd en ‘mensonwaardig’ dat mensen zich verzetten tegen een zorgstelsel dat uitgaat van een zekere mate van solidariteit met de hulpbehoevende medemens.
"""Productie

Thema's
  De wereld van gisteren
  Joden op drift
  De vader-zoon relatie
  De drank
  Schuldgevoel


In a summer day in 1921, a year after he moved to Berlin, the writer Joseph Roth went to the barbershop. Inside the air was hot and heavy, soundtracked by the clack of scissors and a fly that buzzed lazily around the room. The atmosphere was stilled, deadened by the July temperatures.

We know how it was in the barbershop that morning because Roth wrote about it, in one of the many feuilleton articles that were published in newspapers such as the Berliner Börsen-Courier and which helped make his reputation. He wrote literary journalism; sketches, observations and reflections that combined the lyricism of the future novelist and a talented use of imagery with an eye for detail. Read at the time in the Weimar Republic, they were the stories of the here and now. Read today, in the second decade of the 21st century, they help us understand the past. Roth’s talent was both as a writer and an observer. He knew that even somewhere as mundane as a barbershop on a hot day would contain within it something worth writing about, so long as you looked hard enough. Or in this instance, listened.

It didn’t matter how hot it was, Roth wrote in “The Man in the Barbershop”, people liked to talk. On that day, there was someone who liked to talk more than the rest: “No sooner had he slung his hat on the hook, as hard as if he wanted to tear it out of the wall, then he was tapping a half-lathered customer on the shoulder, bringing the barber’s assistant up short.”

The man was excited, and what he wanted to talk about was the rising national fervour he had felt in Hamburg on a journey north. It was coming to Berlin, he told the barber, the assistant and his fellow customers, and he was convinced they would all join him with enthusiasm when it did.

“His words,” Roth continued, “rattle, clatter and bang. Batteries, mortars, rifles, running fire, all come spewing out of his larynx. World wars slumber in his bosom.”

The man was a bore, one found in any bar or indeed barbershop in Weimar Berlin. In his personality, Roth observed, he held within all the petty annoyances of a lifetime, ones that would become meaningless as soon the wave of emotion he felt in Hamburg crashed down and broke the “summery lassitude and inactivity in the world”.

“And if you,” Roth continued, “were to go south, or west, or east, it would be just the same. Whichever way you went you’d see people getting more nationalistic.”

Today, the words weigh heavy with our knowledge of what was to come. Joseph Roth had seen the danger earlier than most.

***

However you read Roth, whether you start with his novels or journalism, you will discover themes that reappear time and again, in particular the collapse of Austria-Hungary and the rise of nationalist movements – and how these political shifts affected the Jews of Europe. His preoccupations had a lot to do with his upbringing. He was born in 1894 into a Jewish middle-class family in Brody, a town in the east of the Austrian-Hungarian empire. It was a childhood fairly typical for a town with a large Jewish population, although, unusually, he grew up without a father, who disappeared before Roth was even born.

On finishing his schooling Roth moved to nearby Lemberg (today Lviv) and then on to Vienna, where he combined his studies with the first steps in a fledgling literary and journalistic career. Both were interrupted with the outbreak of war, and in 1916 Roth abandoned his studies to enlist in the Imperial Army and was posted to the Eastern Front. He may have been enthusiastic to sign up, but he would also be relieved to be given a desk job, keeping him away from the front lines.

The First World War would become the defining event of Roth’s life, and the Europe that emerged from the smoke of the trenches would shape his writing until the end. For Roth, as for many Jews in Austria-Hungary, the end of the empire and its replacement with ethnically-based nation states meant the loss of a homeland; a catastrophe that redrew the maps of Europe and sent many into exile. Roth left the lands of his youth and would never properly return. Displaced people became the subject for some of his finest journalism, while the collapse of Austria-Hungary gave him the subject for his most famous work, The Radetzky March – a novel that narrated the decline of an empire through the experiences of three generations of the Trotta family.

****

In that novel, published in 1932, it’s possible to get a sense of Roth’s own feelings of loss that came with the end of the dual monarchy. Throughout the book the rituals and traditions of the empire are recalled. The narrator describes the drinking games and military manoeuvres, the uniformity of the post offices and train stations, the diversity of the empire’s peoples, and the distinctive and peculiarly Austrian-Hungarian way they had of climbing down from a train, “now completely forgotten”.

Even the Emperor is a character in the book, somehow holding it all together, like the empire itself. It is at once a satire and a loving portrayal of a lost time and place, tinged heavily with nostalgia. Narrated after the fact, there are also hints of what was to follow: “The borderlanders felt it coming earlier than the others, not only because they were used to sensing future things but also because they could see the omens of doom every day with their own eyes.”

For Roth, it was not just that his beloved Austria-Hungary was lost, but what it was replaced with. By the 1930s, when he wrote the novel, it had long been clear to him what the collapse of the old order meant, not least for the Jews.

After the war Roth spent a couple of years in Vienna before moving to Berlin. From 1920 until 1925 he was based in the German capital, and would remain a frequent visitor until 1933, writing articles for newspapers in Berlin and Frankfurt and becoming one of Europe’s best paid journalists in the process. It was during the Berlin years that his first novels were published, with Job (1930) and The Radetzky March bringing him renown beyond the German-speaking world. For English readers it was as a novelist that Roth’s reputation as a writer was based, and it has only been in the past 20 years – thanks especially to the tireless and impressive work of his translator Michael Hofmann – that English readers have been given access to his journalism. Two books stand out, both translated by Hofmann: The Wandering Jews (2000), a work of reportage first published in German in 1927, and What I Saw: Reports from Berlin 1920-33 (2003).

In What I Saw, articles about life in Berlin are brought together to create a compelling and nuanced portrait of the city during the Weimar Republic. It’s a period that has been much mythologised and romanticised – but not by Roth. “It is a simplification but not much of one,” Hofmann wrote in his introduction, “to say that Roth hated Berlin but permitted it to exercise him.” In The Wandering Jews Roth asks: “Who in all the world goes to Berlin voluntarily?” Perhaps it was because he had little love for the city that Roth could become one of its greatest chroniclers.

Roth documents the contradictions of the German capital. In What I Saw the brightly lit hedonism of postwar Berlin – familiar from the works of Christopher Isherwood or any number of novels, films or television series set in what became known as “Babylon on the Spree” – mixes with the feeling of darkening days, of the rise of nationalism and the current and future fates of the exiles that had arrived come to Berlin, many of whom were Jews.

Walking its streets today, there are few traces of Roth’s city. Nearly a hundred years have passed and there is little to be found of the theme parks and race tracks, cafés and bars, parks and department stores that he brought to life. Most of all it is hard to find the Jewish city that he experienced and described. In The Wandering Jews Roth described the Jewish experience beyond Berlin to Vienna, Paris, the US and the Soviet Union, telling the stories of the communities who had been scattered across Europe and beyond by war and the end of empire. Reading the book today, it is full of grim premonitions: “There is a historical feeling,” Roth wrote, “based on plentiful experience, that the Jews will be the first victims in the event of a bloodbath.”

In Berlin, close to Alexanderplatz, Roth walked along Hirtenstraße where many of the Eastern Jews had ended up. It was, he wrote, “the saddest street in the world”, a refuge-strewn collection of hole-in-the-wall bars and bakeries, Talmud schools and prayer-houses. “It has a new, cheap, already-used-up bargain-basement quality. A street out of a department store. A cheap department store.”

Today, Hirtenstraße is a quiet residential street of ever-increasing real-estate prices, home to an arthouse cinema, an exclusive bar and club, and a few restaurants at the point where it crosses in front of Rosa-Luxemburg-Platz. Of its history as a focal point for the Eastern Jews who arrived in Berlin in the 1920s, there is no indication. It is this absence that makes the writing all the more important.

***

It has been said that Roth’s achievement was not simply the quality of the novels and articles he wrote between 1919 and his death in 1939, but that he was able to write them at all. His own personal legend, expressed in his letters, had it that he began drinking at the age of eight. Even if this was exaggeration, alcoholism was a problem throughout his adult life. And even if it didn’t appear to impact on the quality of his writing, it certainly put strain on his relationships.

“Please take it easy,” his good friend, the writer Stefan Zweig, wrote in 1934. “Stay in bed if you must, but don’t drink.”

It was advice that Roth not only found difficult to take but didn’t seem to want to. In his translator’s note to one of Roth’s final works of fiction, The Legend of the Holy Drinker (1939), Michael Hofmann wrote that Roth “advanced a sophisticated argument that while drink shortened his life in the medium term, in the short term it kept him alive – and he worked hard at testing its logic”.

The short term could only last so long though, and in his final years his body was always close to collapse, his letters to friends containing tales of liver problems and swollen limbs. In 1938 he suffered a heart attack. A year later, on hearing of the suicide of his friend Ernst Toller, Roth collapsed once more. This time he did not recover. He was 44.

Roth was, Hofmann wrote, “a man whose element was turbulence”. His personal life was as chaotic as the world around him. The only period of stability in his adult life was a few years in Berlin with his wife Friederike Reichler, whom he married in 1922. They moved together from Vienna to the German capital, basing themselves there as Roth travelled and wrote. The stability would not last long. Friederike developed schizophrenia and, unable to stay in Berlin on her own, for a while she travelled with Roth until her illness made it impossible. In 1928 she was committed to a sanitorium and in 1940, a year after Roth’s death, she was murdered by the Nazis as part of their eugenics programme.

Roth was a man without a home, moving from hotel to hotel – a state of affairs, that, with the exception of those few short years in Berlin with Friederike, was how he lived from the end of the First World War until his death. In a 1929 article titled “Arrival in the Hotel”, Roth wrote of “the hotel that I love like a fatherland”. It was the familiarity of the hallways and rooms, however different or strange the city was beyond the lobby, that gave him a sense of home once his beloved Austria-Hungary was no more:

And as other men may be happy to be reunited with their pictures, their china, their silver, their children and their books, so I rejoice in the cheap wallpaper, the spotless ewer and basin, the gleaming hot and cold taps, and that wisest of books: the phone book.

 

Roth lived out of suitcases and carried with him no books. He didn’t own any. Not even the ones he had written himself.

***

Why should we read Joseph Roth today? Although articles of the style he wrote had the reputation for being “light literature”, Roth knew exactly what they were worth (and made sure he was paid accordingly): “I paint the portrait of the age,” he wrote in a letter to his editor at the Frankfurter Zeitung in 1926. “I’m not a reporter, I’m a journalist. I’m not an editorial writer, I’m a poet.”

In those articles he explained the world, and offered stark warnings for his readers and those around him. For his biographer Keiron Pim, whose book Endless Flight: The Life of Joseph Roth will be published in 2022, his importance is clear: “Roth was charming, exasperating, prescient, indeed too clear-sighted by half: a seer who was appalled by what he saw of Europe’s future and felt obliged to harangue more complacent peers.”

In 2019, 80 years after his death, Roth speaks to us still. “His themes,” Pim says, “resonate powerfully with modern readers. Like him, we live in a world where we’re disorientated by the decline of grand unifying projects, while amidst the uncertainty, demagogues vie for populist appeal with programmes of division and ethno-nationalism.”

In 1933, on the appointment of Hitler as chancellor, Roth made his final break with Berlin. Continuing his struggles with alcoholism, he had six more years to live, spent in flight between Belgium and France, struggling to make ends meet writing for émigré newspapers. For a while he was in a relationship with the exiled German writer Irmgard Keun and they would write together in the cafés of Ostend, matching each other word for word and drink for drink. Back in Berlin, the Nazis tightened their grip, while his works were added to the bonfire of books in front of the State Opera. Roth did not know how it would end, but he knew that it would end badly.

“It will become clear to you now that we are heading for a great catastrophe,” he wrote to Zweig, one of his initially complacent peers. “The barbarians have taken over. Do not deceive yourself. Hell reigns.”

It is important to read Roth not because we should imagine ourselves in some kind of rerun or return to the 1930s, but because while history rarely repeats itself, there is some truth to the quote often attributed to Mark Twain that it can indeed rhyme. We need to read Joseph Roth to learn how to look closely, whether in Berlin or London, Warsaw or Athens, São Paulo or Washington, DC. We need to pay attention to the details and we need to hear what is being said and think about where it might lead, whether we’re on the bus or on Twitter, or sitting in a barbershop on a hot summer day. 

Paul Scraton’s books include “Ghosts on the Shore: Journeys along Germany’s Baltic Coast” and “Built on Sand”, both published by Influx Press

De roman //De Vreemdeling// gaat over een Fransman van een jaar of 30 in een Noord-Algerijnse stad die op blz. 1 van de roman meldt dat zijn moeder is overleden, met de woorden: ‘Vandaag is moeder gestorven. Of misschien gisteren, ik weet het niet.’ Dit suggereert al meteen dat we hier met een man te maken die niet bewust in het leven staat. Zijn leven is rustig, hij heeft werk, vrienden en vriendinnen, hij helpt de buurman. Op zekere dag komt hij in een situatie op het strand terecht, waarbij hij, enigszins per ongeluk, een Arabier doodsteekt. Hij wordt gearresteerd en ter dood veroordeeld. Deze roman werd in Le Monde eind 1999 door de lezers als de beste Franse roman van de 20e eeuw uitgeroepen. Het mysterieuze karakter van de Vreemdeling zal daaraan zeker hebben bijgedragen. <p>

In de roman De Pest lijken ook de inwoners van Oran niet al te bewust te leven. //"Een prettige manier om kennis te maken met een stad is kijken hoe de mensen er werken, hoe ze er liefhebben, hoe ze er sterven. Misschien komt het door het klimaat, maar in ons stadje vormt dat één geheel, gebeurt alles op dezelfde manier: heftig en achteloos. Dat wil zeggen dat de mensen zich hier vervelen en ernaar streven gewoontes aan te kweken. <p>

Nu zal er vast wel iemand zeggen dat dit niet typisch is voor onze stad en dat eigenlijk al onze tijdgenoten zo zijn. Dat klopt, het is vandaag de dag de gewoonste zaak van de wereld om van ’s ochtends vroeg tot ’s avonds laat aan het werk te zijn en vervolgens te besluiten de rest van je leven te verdoen met kaarten, cafébezoek of kletsen. Maar er zijn steden en landen waar de mensen zo nu en dan het vermoeden hebben dat er meer is. Niet dat hun leven daardoor in het algemeen verandert, maar het vermoeden is er geweest, en dat alleen al is winst. Oran daarentegen is blijkbaar een stad zonder vermoedens, en dus een volstrekt moderne stad."//<p>
<$list filter="[!has[draft.of]tag{!!title}sort[tocorder]]"><$link to={{!!title}}><$view field="title"/><br>
</$link></$list>
!! Rekening opheffen

1. Houd €100 op de rekening<br>
2. Draai de overzichten uit<br>
3. Hef de rekening op<br>
4. Laat Joke mee opheffen<br>
5. Stuur de stukken naar Kees en Sharief<br>


!! Stichting opheffen
Stappenplan opheffen stichting

<$checkbox field='v01' checked='ja' unchecked='nee'></$checkbox> 1. Zoek in de statuten wat daar staat over opheffen
Het opheffingsbesluit moet zijn genomen volgens de regels van de statuten. Meestal staat er in de statuten dat er een bepaalde zware meerderheid van het bestuur in moet stemmen.

<$checkbox field='v02' checked='ja' unchecked='nee'></$checkbox> 2. Is er nog geld of bezit, bedenk wat je daarmee wilt doen
Het eindsaldo van de stichting moet besteed, zoals de statuten dat aangeven. Dat wil zeggen aan het doel van de stichting. Let op, is het een ANBI stichting? Dan moet het batig saldo overgemaakt aan een andere stichting met ongeveer hetzelfde doel die ook de ANBI status heeft.
Bedenk wie de oude notulen en boekhouding gaat bewaren
Je moet zeven jaar alle stukken van de stichting bewaren. Dat mag ook digitaal. Je moet er wel een persoon voor aanwijzen. Die komt namelijk in het handelsregister te staan, voor eventuele navraag. Die persoon noem je de bewaarder.

<$checkbox field='v03' checked='ja' unchecked='nee'></$checkbox> 3. Neem het bestuursbesluit tot opheffing
Maak notulen waarin je besluit dat je de stichting opheft. Gebruik ons model om dat te doen. Nu moet je de instemming hebben van de overige bestuursleden. Je kan ze het bestuursbesluit opsturen en vragen om hiermee in te stemmen.

<$checkbox field='v04' checked='ja' unchecked='nee'></$checkbox> 4. Vul het formulier in van de Kamer van Koophandel
Ga naar het online handelsregister en kies dan voor het formulier ontbinding rechtspersoon. Let nu goed op: Vul in dat de stichting geen baten heeft op het moment van ontbinding. Dat is ook correct, want voor de daadwerkelijk ontbinding hebben jullie alles afgehandeld.

<$checkbox field='v05' checked='ja' unchecked='nee'></$checkbox> 5. Hef de bankrekening op
Je moet bij de bank doorgeven dat de stichting is opgeheven. Geef aan waar ze het resterend saldo naar over kunnen boeken.

https://www.overeenkomsten.nl/hoe-hef-ik-een-stichting-op/

!! Actielijst

|^<$checkbox field="v06" checked=1></$checkbox>|^|Geld overmaken aan Augustijnen|
|^<$checkbox field="v07" checked=1></$checkbox>|^|Jaarstukken 2021 maken en opsturen|
|^<$checkbox field="v08" checked=1></$checkbox>|^|Stichting opheffen|
|^<$checkbox field="v09" checked=1></$checkbox>|^|Rekening opheffen|
"""sudo fdisk -l
sudo umount /dev/sdb*
sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1M
\define my-toc-selective-expandable(tag,sort:"",itemClassFilter)
<ol class="tc-toc toc-selective-expandable">
<$list filter="[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]">
<$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage="<<my-toc-linked-selective-expandable-body tag:'$tag$' sort:'$sort$' itemClassFilter:'$itemClassFilter$'>>">
<<my-toc-unlinked-selective-expandable-body tag:"""$tag$""" sort:"""$sort$""" itemClassFilter:"""$itemClassFilter$""">>
</$list>
</$list>
</ol>
\end

\define my-toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter)
<$set name="toc-state" value=<<qualify "$:/state/toc/$tag$-$(currentTiddler)$">>>
<$set name="toc-item-class" filter="""$itemClassFilter$""" value="toc-item-selected" emptyValue="toc-item">
<ol class=<<toc-item-class>>>
<$list filter="[all[current]tagging[]limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>">
<$reveal type="nomatch" state=<<toc-state>> text="open">
<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible">
<<toc-caption>>
</$button>
</$reveal>
<$reveal type="match" state=<<toc-state>> text="open">
<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible”><<toc-caption>>
</$button>
</$reveal>
</$list>
<$reveal type="match" state=<<toc-state>> text="open">
<$macrocall $name="""toc-selective-expandable""" tag=<<currentTiddler>> sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/>
</$reveal>
</ol>
</$set>
</$set>
\end

\define my-toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter)
<$set name="toc-state" value=<<qualify
"$:/state/toc/$tag$-$(currentTiddler)$">>>
<$set name="toc-item-class" filter="""$itemClassFilter$"""
value="toc-item-selected" emptyValue="toc-item">
<ol>
<$list filter="[all[current]tagging[]limit[1]]" variable="ignore"
emptyMessage="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<$checkbox tiddler=<<toc-state>> tag='done'/>&nbsp;">
<$reveal type="nomatch" state=<<toc-state>> text="open">
<$button set=<<toc-state>> setTo="open" class="tc-btn-invisible">
{{$:/core/images/right-arrow}}&nbsp;
</$button>
<$checkbox tiddler="""$(currentTiddler)$""" tag='done'/>&nbsp;
</$reveal>
<$reveal type="match" state=<<toc-state>> text="open">
<$button set=<<toc-state>> setTo="close" class="tc-btn-invisible">
{{$:/core/images/down-arrow}}&nbsp;
</$button>
<$checkbox tiddler="""$(currentTiddler)$""" tag='done'/>&nbsp;
</$reveal>
</$list>
<$link>
<<toc-caption>>
</$link>
<$reveal type="match" state=<<toc-state>> text="open">
<$macrocall $name="my-toc-selective-expandable" tag=<<currentTiddler>>
sort="""$sort$""" itemClassFilter="""$itemClassFilter$"""/>
</$reveal>
</ol>
</$set>
</$set>
\end
<<ximg width:% "/Cultuur/Roth in Parijs 1938 boos dronken maar snugger.jpeg">>

Das bin ich wirklich: böse, besoffen aber gescheit (snugger)
https://www.kuleuven.be/thomas/page/tijdschriften/viewarticle/63064/

"""
Enkele gedachten in dit verhaal:
1. Het keerpunt in vers 17: het mysterie, het heiligdom
2. vers 1: het ligt niet aan God maar aan ons
3. Bij u, bij u, bij U.

Wat kunnen we daarmee:
De trits 1e preek - Othon - 2e preek past hier goed bij. De dood van Philippe Othon als het keerpunt, het mysterie.
Bij U wordt: bij de lijdenden.
Denk ook aan de preek van Van Kilsdonk: Jacob vecht met Ezau.

Wat is de wijsheidsliteratuur in de Bijbel?
Job, Spreuken, Prediker: wijsheden over God. 
Wat zijn de ballingschapspsalmen?

https://youtu.be/cA6pA6zL0wM

https://www.pastoralekroes.nl/prekenpsalm73/

Buber beschouwde psalm 73 als zijn lievelingspsalm, omdat daarin de mens vanuit zijn hart Gods nabijheid ervaart. De psalm laat zien dat het hart beslist. De twee regels uit vers 

Martin Buber explains why he is so attracted to this Psalm: “What is it that so draws me to this poem that is pieced together out of description, report and confession, and draws me ever more strongly the older I become? I think it is this, that here a person reports how he attained to the true sense of his life experience and that this sense touches directly on the eternal.”
"""Goede Dood wiens zuiver pijpen
Door 't verstilde leven boort,
Die tot glimlach van begrijpen
Alle jong en schoon bekoort,

Voor wie kinderen en wijzen
Lachend laten boek en spel,
Voor wie maar verkleumde grijzen
Huivren in hun kille cel, -

Mij is elke dag verloren,
Die uw lokstem niet verneemt;
Want dit land van most en koren
Is mij nimmer schoon en vreemd;

Want nooit beurde ik hier te drinken
't Water dat de ziel verjongt,
Of van dichtbij hief te klinken
't Verre wijsje dat gij zongt;

Alle schoon dat de aard kan geven
Blijkt een pad dat tot u voert,
En alleen is leven leven
Als het tot de dood ontroert.
<<ximg "/DD/Vriend en Familie/Pa.JPG" width=auto>>
<p>
Drie eieren met slagroom en geraspte parmezaan en peper roeren, mengsel maken.
Spekjes uitbakken.
Water opzetten om pasta te koken.
Pasta koken en mengen met saus. 

Let op: eerst de spekjes door de pasta roeren, dan ''de pan van het vuur'', dan de saus erdoor roeren. Zo mogelijk de borden voorverwarmen.
"""
2 aubergines
1 gedroogde rode Spaanse peper, verkruimeld
4 tenen knoflook
Grote bos basilicum, steeltjes fijngehakt, blaadjes apart
1 eetlepel gedroogde oregano
1 theelepel kruidenazijn
2 blikken tomaten
450 g spaghetti
150 g ricotta

Aubergines in de lengte in vingers. Olie in pan, aubergines erin en omschudden, evt. scheutje olie erbij, vettig laagje, maar niet te vet. Bestrooi met gedroogde oregano, aan het eind spaans pepertje erbij. Knoflook en basilicumsteeltjes erbij. Scheutje kruidenazijn erbij. Tomaten erbij. Op smaak met peper en zout. Helft basilicumblaadjes gescheurd erbij.

Spaghetti koken, afgieten. Saus erbij. Op de borden met stukjes ricotta, basilicum.
"""
Water opzetten.
1 ons pasta per persoon 
Pond wilde spinazie (schoongemaakt) in slacentrifuge.
Saus: half ons gorgonzola + chef's room (kok's room) + knoflook (licht aangebakken) + spinazie (geroerbakt).
"""
Want geen woord kan worden geschreven zonder dat het eerst is gezien, en voordat het zijn weg naar de bladzijde vindt, moet het eerst deel hebben uitgemaakt van het lichaam, een lichamelijke aanwezigheid waarmee je op dezelfde manier hebt geleefd als je met je hart, je maag en je hersens leeft. Het geheugen dus, niet zozeer als het verleden dat in ons is opgeslagen, maar als een bewijs van ons leven in het heden. Om werkelijk aanwezig te zijn in de ons omringende wereld, moeten we niet aan onszelf denken maar aan wat we zien. We moeten onszelf vergeten om hier en nu aanwezig te zijn. En uit die vergetelheid komt de kracht van het geheugen voort. Het is een manier om je leven zo te leven dat niets ooit verloren gaat.
"""
Hypercompetitief individualisme. Wij zijn ons werk. Tegenstelling individu organisatie. Minder solidariteit. Stroging wantrouwen, controle. Neoliberale identiteit. Onderwijs geeft een wereldbeeld mee. 

Neoliberale identiteit.
Onderwijs geeft wereldbeeld mee. Jongeren ontwikkelen zich tot competitieve individualisten. 
Waardenvrij onderwijs -- competentiegericht opleiden.

Identificatie en separatie.

Onderwijs is niet waardenvrij.

Autoriteit is niet overbodig.
Kwalen: geen autoriteit en toenemende ongelijkheid.

Wat is autoriteit? Regelen van verhoudingen tussen mensen vrijwillige onderwerping interne dwang. Dus geen macht: externe dwang. Hannah Ahrendt. Voorbeeld: religie. Zelfde normen: voorspelbaarheid.

Geloof in de bron telt, niet de bron zelf. Augustinus, Romeinse filosofie, Griekse kennisleer. Ahrendt: we geloven niet meer in de bron. Nu: we geloven niet meer in de patriarchale macht. Steeds meer regelgeving.

Minder autoriteit, meer macht, meer sancties.

Herstel van autoriteit. Traditioneel of nieuwe grond voor vrijwillige onderwerping. Traditioneel: pyramide. Nieuw: andere structuur. De groep zelf als bron van autoriteit. Bottom-up netwerken. Ze duiken overal op. Arbeidsorganisaties. Opvoeding. Kind bij grootouders, crèche en ouders. Netwerkautoriteit. Onderwijs: vroeger duale confrontaties. Nu: een netwerk rond de leerling. Ouders, docenten, bestuur. Jongeren krijgen zelf een plaats in dit netwerk.

Haim Omer Nieuwe Autoriteit
"""
DE HOOP
Toespraak tijdens de algemene audiëntie op woensdag 20 september 1978

De tweede van de zeven 'lampen op weg naar heiliging' was voor Paus Johannes de hoop. Vandaag spreek ik over deze deugd, die verplicht is voor ieder christen. Dante in zijn 'Paradiso' (zang 24, 25 en 26) beeldde zich in een examen te moeten ondergaan over het christendom. Er trad een eerste klas examen-commissie op. "Heb je het geloof " vroeg hem als eerste Petrus. "Heb je de hoop?" vervolgde Jacobus. "Heb je de liefde?" besloot Sint Jan. "ja - antwoordde Dante - ik heb het geloof, ik heb de hoop, ik heb de liefde"; hij bewijst het en slaagt met de hoogste cijfers.
Ik heb gezegd, dat de hoop verplicht is, daarom is ze niet iets lelijks of iets hards: integendeel, wie haar beleeft, reist in een sfeer van vertrouwen en overgave, zeggend met de psalmist: "Heer, gij zijt mijn steenrots, mijn schild, mijn sterkte, mijn toevlucht, mijn licht, mijn herder, mijn heil. Streken rond mij belegeraars neer, mijn hart zou niet versagen, stond een slagorde aanvalsgereed, ik zou nochtans gerust zijn".
U zult zeggen: maar is de psalmist niet overdreven enthousiast? Is het mogelijk, dat de dingen voor hem altijd goed zijn afgelopen? Neen, ze zijn voor hem niet altijd goed afgelopen. Dat weet hij ook, en zegt het, dat de kwaden dikwijls geluk hebben en de goeden onderdrukt worden. Hij heeft er zich soms ook over beklaagd bij de Heer; hij is er toe gekomen om te zeggen: "Waarom slaapt gij, Heer? Waarom zwijgt gij? Waak op en luister naar mij, Heer". Maar zijn hoop is gebleven, sterk en onverwoestbaar. Op hem en op allen, die hopen, kan men toepassen wat Paulus heeft gezegd van Abraham: "Hij heeft geloofd hopende tegen alle hoop in" (Rom. 4,18). U zult toch nog zeggen, hoe kan dat alles? Het kan, omdat men zich vast houdt aan drie waarheden. God is almachtig, God houdt enorm veel van mij, God is trouw aan zijn beloften. En het is Hij, de God van de barmhartigheid, die in mij het vertrouwen ontsteekt, waardoor ik mij noch alleen voel, noch nutteloos, noch verlaten, maar opgenomen in een heilsbestemming, die eens zal uitmonden in het paradijs.
Ik heb naar de psalmen verwezen. Hetzelfde vaste vertrouwen leeft in de boeken van de heiligen. Ik zou wensen, dat u een preek zou lezen, die Augustinus heeft gehouden op Paasdag over het Alleluia. Het echte Alleluia - zegt hij dan ongeveer - dat zullen wij zingen in het paradijs. Dat zal het Alleluia vol van liefde zijn; dit Alleluia van nu is het Alleluia van de hongerende liefde, dat wil zeggen van de hoop.
Iemand zal zeggen: maar als ik een arme zondaar ben? Ik antwoord hem, zoals ik geantwoord heb aan een onbekende dame, die vele jaren geleden bij mij kwam biechten. Zij was ontmoedigd, want - zo zei zij - ze had op zedelijk gebied een stormachtig leven geleid. 'Mag ik u vragen - zei ik - hoe oud bent u?' - 'Vijfendertig'. - 'Vijfendertig! Maar u kunt nog veertig of vijftig jaar langer leven en nog een hele boel goed doen. Dus, omdat u er berouw over hebt, in plaats van aan het verleden te denken, richt u zich op de toekomst, en begin met Gods hulp een nieuw leven'. Ik haalde bij die gelegenheid Franciscus van Sales aan, die spreekt van onze dierbare onvolmaaktheden. Ik legde uit: God verafschuwt de fouten omdat het fouten zijn. Maar van de andere kant houdt Hij op een bepaalde manier van fouten, in zoverre ze aan DE HOOP Toespraak tijdens de algemene audiëntie op woensdag 20 september 1978 De tweede van de zeven 'lampen op weg naar heiliging' was voor Paus Johannes de hoop. Vandaag spreek ik over deze deugd, die verplicht is voor ieder christen. Dante in zijn 'Paradiso' (zang 24, 25 en 26) beeldde zich in een examen te moeten ondergaan over het christendom. Er trad een eerste klas examen-commissie op. "Heb je het geloof " vroeg hem als eerste Petrus. "Heb je de hoop?" vervolgde Jacobus. "Heb je de liefde?" besloot Sint Jan. "ja - antwoordde Dante - ik heb het geloof, ik heb de hoop, ik heb de liefde"; hij bewijst het en slaagt met de hoogste cijfers. Ik heb gezegd, dat de hoop verplicht is, daarom is ze niet iets lelijks of iets hards: integendeel, wie haar beleeft, reist in een sfeer van vertrouwen en overgave, zeggend met de psalmist: "Heer, gij zijt mijn steenrots, mijn schild, mijn sterkte, mijn toevlucht, mijn licht, mijn herder, mijn heil. Streken rond mij belegeraars neer, mijn hart zou niet versagen, stond een slagorde aanvalsgereed, ik zou nochtans gerust zijn". U zult zeggen: maar is de psalmist niet overdreven enthousiast? Is het mogelijk, dat de dingen voor hem altijd goed zijn afgelopen? Neen, ze zijn voor hem niet altijd goed afgelopen. Dat weet hij ook, en zegt het, dat de kwaden dikwijls geluk hebben en de goeden onderdrukt worden. Hij heeft er zich soms ook over beklaagd bij de Heer; hij is er toe gekomen om te zeggen: "Waarom slaapt gij, Heer? Waarom zwijgt gij? Waak op en luister naar mij, Heer". Maar zijn hoop is gebleven, sterk en onverwoestbaar. Op hem en op allen, die hopen, kan men toepassen wat Paulus heeft gezegd van Abraham: "Hij heeft geloofd hopende tegen alle hoop in" (Rom. 4,18). U zult toch nog zeggen, hoe kan dat alles? Het kan, omdat men zich vast houdt aan drie waarheden. God is almachtig, God houdt enorm veel van mij, God is trouw aan zijn beloften. En het is Hij, de God van de barmhartigheid, die in mij het vertrouwen ontsteekt, waardoor ik mij noch alleen voel, noch nutteloos, noch verlaten, maar opgenomen in een heilsbestemming, die eens zal uitmonden in het paradijs. Ik heb naar de psalmen verwezen. Hetzelfde vaste vertrouwen leeft in de boeken van de heiligen. Ik zou wensen, dat u een preek zou lezen, die Augustinus heeft gehouden op Paasdag over het Alleluia. Het echte Alleluia - zegt hij dan ongeveer - dat zullen wij zingen in het paradijs. Dat zal het Alleluia vol van liefde zijn; dit Alleluia van nu is het Alleluia van de hongerende liefde, dat wil zeggen van de hoop. Iemand zal zeggen: maar als ik een arme zondaar ben? Ik antwoord hem, zoals ik geantwoord heb aan een onbekende dame, die vele jaren geleden bij mij kwam biechten. Zij was ontmoedigd, want - zo zei zij - ze had op zedelijk gebied een stormachtig leven geleid. 'Mag ik u vragen - zei ik - hoe oud bent u?' - 'Vijfendertig'. - 'Vijfendertig! Maar u kunt nog veertig of vijftig jaar langer leven en nog een hele boel goed doen. Dus, omdat u er berouw over hebt, in plaats van aan het verleden te denken, richt u zich op de toekomst, en begin met Gods hulp een nieuw leven'. Ik haalde bij die gelegenheid Franciscus van Sales aan, die spreekt van onze dierbare onvolmaaktheden. Ik legde uit: God verafschuwt de fouten omdat het fouten zijn. Maar van de andere kant houdt Hij op een bepaalde manier van fouten, in zoverre ze aan Hem gelegenheid geven Zijn barmhartigheid te tonen, en aan ons om nederig te blijven en begrip te hebben voor en medelijden met de fouten van de naaste. Niet allen delen met mij deze sympathie voor de hoop. Nietzsche - bijvoorbeeld - noemt haar 'de deugd van de zwakken'; zij zou de christen maken tot een nutteloze, een afgescheidene, een gelatene, een die niet deel neemt aan de vooruitgang van de wereld. Anderen spreken van 'vervreemding', die de christenen zou onttrekken aan de strijd voor de menselijke ontwikkeling. Maar 'de christelijke boodschap - zo heeft het Concilie gezegd - verre er van om de mensen te onttrekken aan de taak de wereld op te bouwen, verplicht hen veeleer met een nog veel meer bindende verplichting' (Gaudium et Spes, n.34 cfr. n.39 en 57 en 'Boodschap tot de wereld' van de Vaders van het Concilie, van 20 oktober 1962). Van tijd tot tijd zijn er in de loop der eeuwen ook stellingen en tendensen voor de dag gekomen van al te pessimistische christenen ten aanzien van de mens. Maar zulke stellingen zijn door de Kerk afgekeurd en zijn vergeten; dat is te danken aan een schaar van blijde en hard werkende heiligen, aan een christelijk humanisme, aan ascetische meesters, die Sainte-Beuve "les doux" heeft genoemd, en aan een godgeleerdheid met veel begrip. Thomas van Aquino, bijvoorbeeld, plaatst tussen de deugden de jucunditas, dat is de vaardigheid om - in de mate en de wijze dat zulks mogelijk is, - de dingen die men hoort en ziet te verwerken met een glimlach (cfr. 2a 2ae, q.168, a.2). Op deze manier was - zoals ik dat aan mijn leerlingen uitlegde - die Ierse metselaar vrolijk, die van de stelling was gevallen en zijn benen had gebroken. Naar het ziekenhuis gebracht, kwamen de dokter en de ziekenzuster toegelopen. 'Stakker - zei deze laatste - heb je je pijn gedaan bij het vallen?' Maar de zieke antwoordde: 'Zuster, eigenlijk niet met het vallen, maar het aankomen op de aarde heeft mij pijn gedaan'. Door het schertsen en doen glimlachen tot een deugd te verklaren was Thomas in overeenstenuning met de 'blijde boodschap' van Christus, met de hilaritas die Augustinus aanbeval, daardoor heeft hij het pessimisme overwonnen, het christelijk leven gehuld in blijheid, heeft hij ons uitgenodigd om moed te putten ook uit de gezonde en zuivere genoegens, die wij op onze weg kunnen ontmoeten. Toen ik nog een jongen was, heb ik iets gelezen over Andreas Carnegie, een Schot, die met zijn ouders naar Amerika was overgestoken en daar langzamerhand een van de rijkste mensen ter wereld was geworden. Hij was niet katholiek, maar ik ben getroffen door het feit, dat hij met aandrang terugkwam op de eenvoudige en echte genoegens van het leven. 'Ik ben in armoede geboren - zei hij - maar de herinneringen uit mijn jeugd zou ik niet willen ruilen voor die van de kinderen van miljonairs. Wat weten zij van familie-genoegens, van de lieve figuur van de moeder, die de taken vervult van (het werk doet van) de kindermeid, van de wasvrouw, van de kok, van de onderwijzeres, van engel en van heilige?' Hij had heel jong werk gevonden in een spinnerij in Pittsburg voor 56 lires maandloon. Op een avond, in plaats van hem het loon uit te betalen, zei de kassier hem te wachten. Carnegie beefde: 'Nu sturen ze mij weg'. Integendeel, nadat hij de anderen uitbetaald had, zei de kassier hem: 'Andreas, ik heb met aandacht je werk gevolgd en ben tot de conclusie gekomen, dat het meer waard is dan dat van de anderen. Ik breng je loon op 67 lires'. Carnegie holde naar huis, waar moeder huilde van vreugde over de bevordering van haar zoon. 'Over miljonairs gesproken - zei Carnegie vele jaren later, al mijn miljoenen tesamen hebben mij nooit zoveel vreugde gegeven als die verhoging van elf lires'. Toegegeven, maar die vreugden, ofschoon goed en bemoedigend, mogen toch niet te absoluut gezien worden; ze zijn wezenlijk iets, maar niet alles; ze dienen als middel, maar zijn niet het hoogste doel; zij blijven niet voor altijd maar slechts voor een poosje. Paulus schreef: 'De christenen maken er gebruik van, alsof zij er geen gebruik van maakten, want de wereld die wij zien gaat voorbij' (cfr. I Kor. 7,31). Reeds eerder had Christus gezegd: 'Zoekt eerst en vooral het rijk Gods' (Mt. 6,33). Om te eindigen zou ik iets willen zeggen over een vorm van hoop, die door sommigen wordt verkondigd als een christelijke hoop, maar die maar tot op zekere hoogte christelijk is. Ik zal mij nader verklaren: op het Concilie heb ook ik gestemd voor de 'Boodschap aan de wereld' van de Concilie-Vaders. Wij zeiden daarin: de voornaamste taak om te divinizzare (het goddelijke te brengen) ontslaat de Kerk niet van de taak om te umanizzare (aan het menselijke aandacht te geven). Ik heb gestemd voor de Constitutie Gaudium et Spes; ik ben ontroerd geweest en opgetogen toen de encycliek Populorum Progressio verscheen. Ik geloof dat het kerkelijk leergezag nooit met genoeg aandrang oplossingen kan aanbieden en aanbevelen voor de grote problemen van de vrijheid, van de rechtvaardigheid, van de vrede, van de vooruitgang; en de katholieke leken kunnen er nooit genoeg voor vechten dat die problemen opgelost worden. Daarentegen is het verkeerd om te beweren dat de politieke, economische en sociale bevrijding samenvalt met de verlossing in Jezus Christus, dat het Regnum Dei (Rijk Gods) identiek is met het Regnum hominis (Rijk van de mens), dat Ubi Lenin ibi Jeruzalem (waar Lenin is daar is Jeruzalem). In Freiburg, op de 85ste Katholikentag, is dezer dagen het thema behandeld "de toekomst van de hoop". Men sprak er over de 'wereld', die verbeterd moet worden, en het woord "toekomst" was er op zijn plaats. Maar als wij van de hoop voor de "wereld" overstappen naar die voor de individuele zielen, dan moet er ook gesproken worden over "eeuwigheid". Te Ostia, bij de zee, in een beroemd gesprek tussen Augustinus en Monica, vroegen zij zich af, "vergetend het verleden en gewend naar de toekomst, hoe toch eigenlijk wel het eeuwige leven zou zijn" (Confess. IX, n,10). Dat is christelijke hoop; dat bedoelde Paus Johannes en dat bedoelen wij, als wij, met de Catechismus bidden: "Mijn God, ik hoop van uw goedheid te verkrijgen... het eeuwige leven en de genaden, die nodig zijn om die te verdienen met de goede werken, die ik moet en wil doen. Mijn God, dat ik niet in alle eeuwigheid beschaamd moge blijven". Gelezen op http://www.kerkgrimbergen.be/albino/toespraak15.html op 27 augustus 2006Hem gelegenheid geven Zijn barmhartigheid te tonen, en aan ons om nederig te blijven en begrip te hebben voor en medelijden met de fouten van de naaste.
Niet allen delen met mij deze sympathie voor de hoop. Nietzsche - bijvoorbeeld - noemt haar 'de deugd van de zwakken'; zij zou de christen maken tot een nutteloze, een afgescheidene, een gelatene, een die niet deel neemt aan de vooruitgang van de wereld. Anderen spreken van 'vervreemding', die de christenen zou onttrekken aan de strijd voor de menselijke ontwikkeling. Maar 'de christelijke boodschap - zo heeft het Concilie gezegd - verre er van om de mensen te onttrekken aan de taak de wereld op te bouwen, verplicht hen veeleer met een nog veel meer bindende verplichting' (Gaudium et Spes, n.34 cfr. n.39 en 57 en 'Boodschap tot de wereld' van de Vaders van het Concilie, van 20 oktober 1962).


Van tijd tot tijd zijn er in de loop der eeuwen ook stellingen en tendensen voor de dag gekomen van al te pessimistische christenen ten aanzien van de mens. Maar zulke stellingen zijn door de Kerk afgekeurd en zijn vergeten; dat is te danken aan een schaar van blijde en hard werkende heiligen, aan een christelijk humanisme, aan ascetische meesters, die Sainte-Beuve "les doux" heeft genoemd, en aan een godgeleerdheid met veel begrip. Thomas van Aquino, bijvoorbeeld, plaatst tussen de deugden de jucunditas, dat is de vaardigheid om - in de mate en de wijze dat zulks mogelijk is, - de dingen die men hoort en ziet te verwerken met een glimlach (cfr. 2a 2ae, q.168, a.2). Op deze manier was - zoals ik dat aan mijn leerlingen uitlegde - die Ierse metselaar vrolijk, die van de stelling was gevallen en zijn benen had gebroken. Naar het ziekenhuis gebracht, kwamen de dokter en de ziekenzuster toegelopen. 'Stakker - zei deze laatste - heb je je pijn gedaan bij het vallen?' Maar de zieke antwoordde: 'Zuster, eigenlijk niet met het vallen, maar het aankomen op de aarde heeft mij pijn gedaan'. Door het schertsen en doen glimlachen tot een deugd te verklaren was Thomas in overeenstenuning met de 'blijde boodschap' van Christus, met de hilaritas die Augustinus aanbeval, daardoor heeft hij het pessimisme overwonnen, het christelijk leven gehuld in blijheid, heeft hij ons uitgenodigd om moed te putten ook uit de gezonde en zuivere genoegens, die wij op onze weg kunnen ontmoeten. Toen ik nog een jongen was, heb ik iets gelezen over Andreas Carnegie, een Schot, die met zijn ouders naar Amerika was overgestoken en daar langzamerhand een van de rijkste mensen ter wereld was geworden. Hij was niet katholiek, maar ik ben getroffen door het feit, dat hij met aandrang terugkwam op de eenvoudige en echte genoegens van het leven. 'Ik ben in armoede geboren - zei hij - maar de herinneringen uit mijn jeugd zou ik niet willen ruilen voor die van de kinderen van miljonairs. Wat weten zij van familie-genoegens, van de lieve figuur van de moeder, die de taken vervult van (het werk doet van) de kindermeid, van de wasvrouw, van de kok, van de onderwijzeres, van engel en van heilige?' Hij had heel jong werk gevonden in een spinnerij in Pittsburg voor 56 lires maandloon. Op een avond, in plaats van hem het loon uit te betalen, zei de kassier hem te wachten. Carnegie beefde: 'Nu sturen ze mij weg'. Integendeel, nadat hij de anderen uitbetaald had, zei de kassier hem: 'Andreas, ik heb met aandacht je werk gevolgd en ben tot de conclusie gekomen, dat het meer waard is dan dat van de anderen. Ik breng je loon op 67 lires'. Carnegie holde naar huis, waar moeder huilde van vreugde over de bevordering van haar zoon. 'Over miljonairs gesproken - zei Carnegie vele jaren later, al mijn miljoenen tesamen hebben mij nooit zoveel vreugde gegeven als die verhoging van elf lires'. Toegegeven, maar die vreugden, ofschoon goed en bemoedigend, mogen toch niet te absoluut gezien worden; ze zijn wezenlijk iets, maar niet alles; ze dienen als middel, maar zijn niet het hoogste doel; zij blijven niet voor altijd maar slechts voor een poosje.
Paulus schreef: 'De christenen maken er gebruik van, alsof zij er geen gebruik van maakten, want de wereld die wij zien gaat voorbij' (cfr. I Kor. 7,31). Reeds eerder had Christus gezegd: 'Zoekt eerst en vooral het rijk Gods' (Mt. 6,33).
Om te eindigen zou ik iets willen zeggen over een vorm van hoop, die door sommigen wordt verkondigd als een christelijke hoop, maar die maar tot op zekere hoogte christelijk is. Ik zal mij nader verklaren: op het Concilie heb ook ik gestemd voor de 'Boodschap aan de wereld' van de Concilie-Vaders. Wij zeiden daarin: de voornaamste taak om te divinizzare (het goddelijke te brengen) ontslaat de Kerk niet van de taak om te umanizzare (aan het menselijke aandacht te geven). Ik heb gestemd voor de Constitutie Gaudium et Spes; ik ben ontroerd geweest en opgetogen toen de encycliek Populorum Progressio verscheen. Ik geloof dat het kerkelijk leergezag nooit met genoeg aandrang oplossingen kan aanbieden en aanbevelen voor de grote problemen van de vrijheid, van de rechtvaardigheid, van de vrede, van de vooruitgang; en de katholieke leken kunnen er nooit genoeg voor vechten dat die problemen opgelost worden.


Daarentegen is het verkeerd om te beweren dat de politieke, economische en sociale bevrijding samenvalt met de verlossing in Jezus Christus, dat het Regnum Dei (Rijk Gods) identiek is met het Regnum hominis (Rijk van de mens), dat Ubi Lenin ibi Jeruzalem (waar Lenin is daar is Jeruzalem).
In Freiburg, op de 85ste Katholikentag, is dezer dagen het thema behandeld "de toekomst van de hoop". Men sprak er over de 'wereld', die verbeterd moet worden, en het woord "toekomst" was er op zijn plaats. Maar als wij van de hoop voor de "wereld" overstappen naar die voor de individuele zielen, dan moet er ook gesproken worden over "eeuwigheid". Te Ostia, bij de zee, in een beroemd gesprek tussen Augustinus en Monica, vroegen zij zich af, "vergetend het verleden en gewend naar de toekomst, hoe toch eigenlijk wel het eeuwige leven zou zijn" (Confess. IX, n,10). Dat is christelijke hoop; dat bedoelde Paus Johannes en dat bedoelen wij, als wij, met de Catechismus bidden: "Mijn God, ik hoop van uw goedheid te verkrijgen... het eeuwige leven en de genaden, die nodig zijn om die te verdienen met de goede werken, die ik moet en wil doen. Mijn God, dat ik niet in alle eeuwigheid beschaamd moge blijven".

Gelezen op http://www.kerkgrimbergen.be/albino/toespraak15.html op 27 augustus 2006

{{Boodschappen||dt}}{{Egmond||dt}}{{Bestuur||dt}}{{Gedaan||dt}}
{{[[1. Drempellied: Zomaar een dak]] [[2. Opening]] [[3. Lied: Herschep ons hart]] [[4. Psalm 73]] [[5. Lied]] [[6. Overweging 1]] [[7. Lied]] [[8. Overweging 2]] [[9. Lied]] [[10. Overweging 3]] [[11. Lied]] [[12. Gebed]] [[13. Lied]] [[14. Sluiting]] [[15. Candide]]}}

"""
Pompoensoep
Pompoen in stukken, aardappels in stukken.
Uitje fruiten, groenten erbij, kort fruiten
Bouillon maken
Gember in kleine stukjes erbij
Peper
Even koken en dan laag zetten
!! Probleem met suspend


|^<$checkbox field="0" checked=1></$checkbox>|^|Bestand met wijzigingen controleren. Bestand: /etc/systemd/system/disable-hardware-wakeup.service|
|^<$checkbox field="1" checked=1></$checkbox>|^|Bestand: /usr/local/disable-hardware-wakeup.sh|
`
sudo kernelstub -a rcutree.rcu_idle_gp_delay=1
sudo kernelstub -a mem_sleep_default=deep


Geert Mak: 100en reportages, 16 romans, 19 novellen. Veel van zijn artikelen kun je omschrijven als literaire journalistiek, waarbij zijn observatievermogen opvalt. In dit genre lijkt Roth een beetje op Simon Carmiggelt en Martin Bril. 

Voorbeeld: De man in de kapperszaak (Wat ik zag, reportages uit Berlijn, 1920 - 1933)

Op een zondagmorgen heerste er een verstikkende hitte in de kapperszaak. Zondag viel in banen door de blinden de zaak binnen. Scharen knipten gretig, een grote vlieg zoemde rond. Maar mensen houden ervan om in de kapperszaak met elkaar te praten, en zeker op die zondagochtend waren ze met elkaar in gesprek. Maar de man die plotseling in die zomerse verdoving de zaak binnenstormde - gemberblond, stierennek, strijdlustig - sprak het luidst van allemaal. Hij had nog maar net zijn hoed over de haak aan de muur geslingerd of hij tikte een half ingezeepte klant op zijn schouder. Waar de gemberharige man het over had was Hamburg. Zonder enige inleiding, alsof zijn verhaal slechts een voortzetting was van een gesprek op straat, stelde hij: hoe noordelijker je komt, hoe nationalistischer de mensen zijn. In Hamburg waren ze echt helemaal opgewonden op de Dag van de Vlag. Je ziet het! Het komt eraan! Het is niet meer te stoppen! Vooruit, vooruit! Zijn zinnen werden korter, zijn woorden marcheren, een-twee, een-twee. Het is een nachtmerrie.   En als je - denk ik - naar het zuiden of het westen of het oosten zou gaan, dan zou je hetzelfde beleven. Welke kant je ook uit zou gaan, je zou de mensen steeds nationalistischer zien worden. Want wat je ziet is bloed. 

Wat vinden we vandaag de dag van zo'n verhaal?
Met een verblijfsvergunning kun je veel maar niet alles. Geen kiesrecht, reizen is ingewikkeld. Het wordt tijd om Nederlander te worden. God schiep de aarde, maar de Nederlanders schiepen Nederland. Aanvraag geweigerd, geen adres in Amsterdam (onderhuur). Migranten voelen zich vervreemd, niet welkom in Nederland. Zie uitspraken van Stef Blok. Er zijn ook migranten die het feestje in huis Nederland bewust verstoren. Bijv. via discussie over Zwarte Piet. 

Ambities van dit boek: persoonlijk verhaal over mijn poging om Nederlander te worden (deel I), hoe bouwen weer een inclusieve publieke ruimte, een vraag van alle niet-witten (deel II). Nederland als huis met ramen, en tafel en een scherm (en plek waar gedeelde afspraken worden gecodificeerd en overgedragen). Overal in- en uitsluiting. Er zijn ook kamers en een collectieve ruimte. Bestaat 'de' Nederlandse identiteit? We moeten een gezamenlijke toekomst in Nederland opbouwen en het Nederlanderschap dynamisch invullen. We zijn door het lot tot elkaar veroordeeld. 

De nieuwkomer als kameleon. 
Spreuken 7 : 9 - 14

9 Erger je niet te snel, want ergernis heerst in het hart van de dwaas.
10 En vraag jezelf niet af waarom het vroeger beter was dan nu. Het getuigt van weinig wijsheid als je daarnaar vraagt.
11 Bezit kan beter samengaan met wijsheid; dat is nuttiger onder de zon. 12 Ze bieden beide schaduw, maar het voordeel van de wijsheid is dat ze de mens meer schaduw in het leven biedt.
13 Bezie het werk van God: wie maakt recht wat Hij krom heeft gemaakt? 14 Geniet dus op de goede dagen van het goede, maar zie op de slechte dagen in dat God naast de goede ook de slechte dagen heeft gemaakt. Geen mens kan in de toekomst zien.

De promotie is in het Nederlands.

Prof. dr. Tine Béneker (UU) is eerste promotor en doet de promotie en ook de laudatio. Zij is hoogleraar Geografie en Educatie aan de Faculteit Geowetenschappen van de Universiteit Utrecht

Prof. dr. Martijn Meeter is de tweede promotor en prof.dr. Joop van der Schee is co-promotor.

1. prof. dr. Maarten M.A. Hajer, Hoogleraar Urban Futures en Directeur van de Urban Futures Studio aan de Faculteit Geowetenschappen  van  de Universiteit Utrecht

2. Em. prof. dr. Wilmad W. Kuiper, Voormalig hoogleraar curriculum-evaluatie bèta-onderwijs, Universiteit Utrecht

3. dr. Tim T.T. Favier, vakdidacticus geografie en onderzoeker aan de Faculteit Geowetenschappen van de Universiteit Utrecht

4. prof. dr. Carla C.A.M. van Boxtel hoogleraar vakdidactiek, in het bijzonder geschiedenisonderwijs, Faculteit der Geesteswetenschappen & Faculteit der Maatschappij- en Gedragswetenschappen, Universiteit van Amsterdam

5. prof. dr. Melanie M.C.M. Ehren, Hoogleraar Theoretische en historische pedagogiek aan de Vrije Universiteit (voorzitter promotiecommissie)

NB Prof. Kuiper, Hajer en Ehren opponeren online, Favier en Van Boxtel fysiek.
<$list filter="[!has[draft.of]tag{!!title}sort[tocorder]]"><$link to={{!!title}}><$view field="title"/>
</$link></$list>
"""
Gelukkig is de mens
die niet te rade gaat bij goddeloosheid,
geen voet zet op de wegen van het kwaad,
niet neerzit in de kring waar wordt gelachen
om God en zijn gebod.
Gelukkig is de mens -
hij zoekt met heel zijn hart het woord des Heren
en proeft de diepe wijsheid dag en nacht.

Hij is een boom, geplant aan levend water,
die goede vruchten geeft.
En hij zal niet verdorren vóór zijn tijd;
wat hij ook doet, het zal gedijen.

Maar wee de mensen die Gods woord verachten;
zij zijn als kaf dat op de wind verwaait.
Zij houden het niet uit in het gericht,
wanneer Hij zijn rechtvaardigen verzamelt.

God kent zijn mensen en behoedt hun wegen.
Wie hem veracht loopt verloren.

Goed is
dat je niet doet wat slecht is
niet achter oplichters aanloopt
niet met Ploert en Schender heult
niet je schouders ophaalt
'ploert en schender, ach
zo is de wereld'.

Goed is dat je goede woorden
Overweegt en wil
'heb je naaste lief die is als jij
de vluchteling, de arme, doe hen recht'-
prent ze in het hart van je verstand,
zeg ze voor je uit,
gezegend ben je.

Een boom, aan stromen Levend Water
vruchten dragen zal je
blad dat niet vergeelt,
het zal je goed gaan.

Oplichter,
ongezegend zal je zijn.
Een storm steekt op
je waait de leegte in

Uit: Nieuwsbrief, juni 2002

Leidsche vertaling

1 Gelukkig hij die niet treedt in de raadslagen der bozen, noch staat op den weg der zondaren, noch zit in den kring der spotters;
2 die veeleer zijn vreugde vindt in de wet van den Heer, dag en nacht van zijn wet bij zichzelf spreekt.
3 Hij gelijkt een boom, aan vlietend water geplant, die zijn vrucht op zijn tijd geeft, en welks loof niet verwelkt: in alwat hij doet is hij voorspoedig.
4 Gans anders de bozen, gans anders! Aan het kaf zijn zij gelijk, door den wind opgejaagd.
5 Dies houden de bozen geen stand in het gericht, noch de zondaars in de gemeente der rechtschapenen.
6 Want de Heer slaat ach op den weg der rechtschapenen; maar de weg der bozen loopt uit op den ondergang.
"""Ik wil Hem noemen bij zijn Naam,
de heilige God, zo waar als ik leef.
Ik dank Hem uit de grond van mijn hart
en geen van zijn weldaden wil ik vergeten.

Hij is de vergeving van mijn zonden.
Hij zal mij genezen, keer op keer.
Hij roept mijn leven weg uit het graf,
omgeeft mij met goedheid en tedere liefde.
Hij maakt mijn dagen vol van geluk
en als een arend herleeft mijn jeugd.

Wat Hij beloofd heeft maakt Hij waar,
Hij neemt het op voor alle verdrukten.
Hij gaf aan Mozes zijn Naam te kennen
en heel het volk heeft zijn werken gezien:
barmhartige Heer, genadige God,
eindeloos geduldige liefde.
Hij twist niet met ons teneinde toe,
Hij draagt ons geen zonden achterna,
Hij zal geen kwaad met kwaad vergelden,
groter dan onze zonden is Hij.

Ja, wat de hemel is voor de aarde,
dat is zijn liefde voor hen die geloven.
Zover als het oosten van het westen vandaan is,
zover van ons af werpt Hij al onze zonden.
Zoals een man voor zijn zonen barmhartig is,
zo is Hij voor ons een barmhartige vader,
Hij kent ons toch, Hij is niet vergeten
dat wij gemaakt zijn uit het stof van de aarde.

Mensen, - hun dagen zijn als het gras,
zij bloeien als bloemen in het open veld;
dan waait de wind, en ze zijn verdwenen
en niemand weet waar ze hebben gestaan.
Maar duren zal de liefde van God,
en Hij doet recht van geslacht tot geslacht
aan allen die zijn verbond bewaren,
zijn woord behartigen en het volbrengen.

Koning is Hij, zijn troon in de hemel,
machtig is Hij over heel de aarde.
Zegent Hem dan, gij engelen van God,
sterke mannen, werkers van zijn woord.
Loven moet gij Hem, machten en krachten,
getrouwe knechten die doet wat Hij wil.
Zegent Hem, alle werken van God,
waar ook ter wereld, Hij is uw koning.

Ik wil Hem noemen bij zijn Naam,
de heilige God, zo waar als ik leef.


Psalmen 103 -- Leidse Vertaling
1 Een psalm van David. Loof den Heer, mijne ziel, en al wat in mij is zijnen heiligen naam.
2 Loof den Heer, mijne ziel, en vergeet niet wat Hij u goeds gedaan heeft;
3 die u al uwe zonden vergeeft, en al uwe zwakheden geneest;
4 die uw leven van het verderf verlost, die u kroont met genade en barmhartigheid;
5 die uwen mond met het goede verzadigt, uwe jeugd vernieuwt als van een arend.
6 De Heer beschikt gerechtigheid en gericht aan allen, die onrecht lijden.
7 Hij heeft zijne wegen aan Mozes laten weten, aan de kinderen lsraëls zijn doen.
8 Barmhartig en genadig is de Heer, geduldig en van grote goedheid.
9 Hij zal niet altoos twisten, noch eeuwiglijk den toorn behouden.
10 Hij handelt niet met ons naar onze zonden, en vergeldt ons niet naar onze misdaden.
11 Want zo hoog de hemel is boven de aarde, laat Hij zijne genade machtig zijn over degenen, die Hem vrezen.
12 Zo ver het Oosten is van het Westen, verwijdert Hij onze overtredingen van ons.
13 Gelijk een vader zich ontfermt over zijne kinderen, zo ontfermt zich de Heer over degenen, die Hem vrezen.
14 Want Hij weet welk maaksel wij zijn, en gedenkt er aan, dat wij stof zijn.
15 Een mens is in zijn leven gelijk het gras, hij bloeit gelijk ene bloem op het veld:
16 als de wind daarover heen waait, is zij er niet meer, en hare plaats kent haar niet meer.
17 Maar de genade des Heren duurt van eeuwigheid tot eeuwigheid over degenen, die Hem vrezen, zijne gerechtigheid tot op de kindskinderen,
18 bij degenen, die zijn verbond houden, en aan zijne geboden denken om er naar te doen.
19 De Heer heeft zijnen troon in den hemel bereid, en zijn gebied heerst over alles.
20 Looft den Heer, gij zijne Engelen, gij sterke helden, die zijn bevel uitvoert, gij die hoort naar de stem zijns woords.
21 Looft den Heer, al zijne heirscharen, gij, zijne dienaars die zijnen wil volvoert.
22 Looft den Heer, al zijne werken, aan alle plaatsen zijner heerschappij. Loof den Heer, mijne ziel!

Psalm 103 -- Statenvertaling

1 [Een] [psalm] [van] David. Loof den HEERE, mijn ziel, en al wat binnen in mij is, Zijn heiligen Naam.
2 Loof den HEERE, mijn ziel, en vergeet geen van Zijn weldaden;
3 Die al uw ongerechtigheid vergeeft, die al uw krankheden geneest;
4 Die uw leven verlost van het verderf, die u kroont met goedertierenheid en barmhartigheden;
5 Die uw mond verzadigt met het goede, uw jeugd vernieuwt als eens arends.
6 De HEERE doet gerechtigheid en gerichten al dengenen, die onderdrukt worden.
7 Hij heeft Mozes Zijn wegen bekend gemaakt, den kinderen Israels Zijn daden.
8 Barmhartig en genadig is de HEERE, lankmoedig en groot van goedertierenheid.
9 Hij zal niet altoos twisten, noch eeuwiglijk [den] [toorn] behouden.
10 Hij doet ons niet naar onze zonden, en vergeldt ons niet naar onze ongerechtigheden.
11 Want zo hoog de hemel is boven de aarde, is Zijn goedertierenheid geweldig over degenen, die Hem vrezen.
12 Zo ver het oosten is van het westen, zo ver doet Hij onze overtredingen van ons.
13 Gelijk zich een vader ontfermt over de kinderen, ontfermt Zich de HEERE over degenen, die Hem vrezen.
14 Want Hij weet, wat maaksel wij zijn, gedachtig zijnde, dat wij stof zijn.
15 De dagen des mensen zijn als het gras, gelijk een bloem des velds, alzo bloeit hij.
16 Als de wind daarover gegaan is, zo is zij niet [meer], en haar plaats kent haar niet meer.
17 Maar de goedertierenheid des HEEREN is van eeuwigheid en tot eeuwigheid over degenen, die Hem vrezen, en Zijn gerechtigheid aan kindskinderen;
18 Aan degenen, die Zijn verbond houden, en die aan Zijn bevelen denken, om die te doen.
19 De HEERE heeft Zijn troon in de hemelen bevestigd, en Zijn Koninkrijk heerst over alles.
20 Looft den HEERE, Zijn engelen! gij krachtige helden, die Zijn woord doet, gehoorzamende de stem Zijns woords.
21 Looft den HEERE, al Zijn heirscharen! gij Zijn dienaars, die Zijn welbehagen doet!
22 Looft den HEERE, al Zijn werken! aan alle plaatsen Zijner heerschappij. Loof den HEERE, mijn ziel!

Nieuwe berijming:
Gelijk het gras is ons kortstondig leven
Gelijk een bloem, die op het veld verheven.
Wel sierlijk pronkt maar krachteloos is en teer.
Wanneer de wind zich over het veld laat horen
Dan knakt haar steel, haar schoonheid gaat verloren.
Men kent en vindt haar staanplaats zelfs niet meer.
"""U wil ik noemen, God, bij uw Naam,
zo waar als ik leef.

Mijn Heer en mijn God, Gij zijt groot en geweldog,
bekleed met luister en majesteit
en met een mantel van licht omhangen.
Gij spant de hemelen uit als een tent,
Gij bouwt op het water uw hoge zalen,
Gij maakt de wolken tot uw wagen
en op de vleugels van de wind
wandelt Gij, en de storm is uw bode,
vlammende vuren zijn uw knechten.
Gij hebt de aarde vast gegrond
en tot in eeuwigheid wankelt zij niet;
de zee bedekt haar als een kleed,
het water stond nog boven de bergen,
toen vluchtte het voor uw dreigementen,
weg was het voor de stem van uw donder;
de bergen staan op, de vlakten vloeien uit,
en alles vindt de plaats die Gij hebt gewild.
Gij hebt aan de vloed zijn grenzen gesteld,
nooit meer zal hij de aarde overweldigen.

Gij doet in de dalen de bronnen ontspringen,
daar wandelen de beken door het gebergte.
Zij drenken alle dieren van het veld,
de wilde ezel lest er zijn dorst.
Daar wonen de vogels van de hemel,
hoog in de takken zingen zij het uit.
De bergen krijgen uit de wolken te drinken,
de aarde wordt van uw regen verzadigd.
Gij laat het gras maar groeien voor het vee,
en groene gewassen voor de mens om te verzorgen;
en zo wint hij het graan uit de aarde,
zo oogst hij de wijn die het hart verheugt,
en olie om de huid te laten glanzen
en brood dat hem in leven houdt.
De bomen van God staan in volle bloei,
de ceders van de Libanon die Hij geplant heeft.
Daar zijn de vogels hun nesten begonnen,
hoog in de kruinen wonen de ooievaars.
De hoge bergen zijn voor de gemzen,
steenbokken schuilen weg in de rotsen.

Gij zijt de schepper van maan en tijd,
van zon en van zonsondergang.
Maakt Gij het donker, dan is het nacht,
dan komt het hele woud in beweging:
de jonge leeuwen brullen om buit,
zij vragen God om hun voedsel.
De zon komt op en zij sluipen terug
en in hun holen liggen zij neer.
De mens gaat uit om zijn werk te doen,
hij zwoegt totdat de duisternis valt.
Dit alles, God, uw eigen werk,
uit zoveel dingen spreekt Uw wijsheid,
uw scheppingskracht vervult onze aarde.

En dan de zee, zo wijd en geweldig,
wemelend van dieren, grote en kleine;
daar gaan de schepen over en weer;
daar is het monster Leviatan,
door U gemaakt om mee te spelen.

Alles wacht op U vol hoop,
alle levenden vragen U om voedsel,
en Gij geeft het hun, steeds weer op tijd,
Gij opent hun hand en zij worden verzadigd.
Keert Gij U af, dan worden zij angstig,
neemt Gij hun adem weg, zij sterven
en zij vallen terug in het stof.
Maar zendt Gij uw geest, dan worden zij herschapen,
Gij geeft de aarde een nieuw gezicht.

Zo is de wereld vol van Hem,
ere zij God en duurzame vreugde.
Kijkt Hij naar de aarde, zij beeft er van,
raakt Hij de bergen aan, zij branden.
Mijn leven lang zal ik zingen voor Hem,
een lied voor mijn God, zolang ik besta.
Ik hoop dat dit lied Hem gelukkig zal maken,
ik zelf ben gelukkig met U, mijn God.
En laat er een eind komen op aarde
aan alle zonde, aan alle kwaad.

U wil ik noemen, God, bij uw Naam,
zo waar als ik leef.
"""Verkondigt de Naam van de Heer,
verkondigt zijn grote daden.
Maakt het bekend aan de wereld
dat Hij wonderen doet.
Laat allen die Hem zoeken
van harte vrolijk zijn -
wie zou niet gloriëren
in zijn heilige Naam?
Keert u tot Hem, Hij is machtig,
houdt niet op Hem te zoeken.
Herinnert u zijn belofte,
de tekenen die Hij ons gaf,
zonen van Abraham, zijn knecht,
zonen van Jakob, zijn vriend.
Hij is onze God, Hij alleen,
zijn wijsheid vervult heel de aarde.
Hij blijft zijn verbond indachtig,
duizend geslachten lang,
dat woord, aan Abraham gegeven,
die eed aan Isaak gezworen,
aan Jakob vernieuwd en bezegeld,
een eeuwig verbond met zijn volk:
'Ik zal u Kanaän geven,
daar zult gij wonen voorgoed.'
Het was maar een handjevol mensen,
een kleine groep vreemdelingen,
ontheemd temidden van de heidenen,
zwervend, nu hier dan daar.
Maar Hij verdroeg het niet
dat iemand hen tyranniseerde,
koningen heeft Hij getuchtigd
om hunnentwil, Hij sprak:
'Raak mijn gezalfde niet aan,
doe mijn profeten geen kwaad.'
Honger kwam over het land
en alle brood raakte op.
Toen zond Hij een man voor hen uit:
Jozef, verkocht als een slaaf,
in de gevangenis geworpen,
zijn voeten in boeien geslagen,
ketenen om zijn hals -
totdat hij dromen verklaarde,
en zijn voorspelling vervuld werd.
Toen liet de koning hem vrij,
de farao van Egypte,
en gaf hem alles in handen,
zijn huis en zijn hele bezit;
hij werd de raadsman der wijzen,
het hof was hem onderdanig.
En Israël trok naar Egypte
en Jakob vond er gastvrijheid,
daar in het land van Cham.
Daar maakte de Heer hen vruchtbaar,
veel talrijker dan Egypte,
en dat verdroot Egypte
het begon Israël te haten,
het ging Israël kwellen
met sluwheid en met geweld.
Maar de Heer riep Mozes, zijn knecht
en Aäron heeft Hij gekozen;
Hij liet hen wonderen verrichten
daar in het land van Cham.
Duisternis zond Hij neer
en het werd aardedonker;
water veranderde in bloed
en alle vissen stierven.
Het land krioelde van kikkers
tot in het paleis van de koning.
Hij sprak, en daar waren de muggen,
muskieten in heel hun gebied.
Het regende hagel en vuur,
de vijgeboom en de wijnstok
liggen tegen de grond,
alle bomen ontworteld
overal in de omtrek.
Hij sprak en daar waren de sprinkhanen,
zwermen van ongedierte
geen grassprietje laten ze over,
het hele land vreten ze kaal.
Toen sloeg hij hun eerstgeborenen,
de eerstelingen van hun kracht.
Toen voerde Hij zijn volk naar de vrijheid:
daar trokken de stammen uit,
met zilver en goud beladen,
en niemand die ze wat deed.
Egypte, verlamd van schrik,
Egypte was blij dat ze gingen.
Hij zond een wolk met hen mee,
om hen in de rug te dekken,
en een vuur om hen 's nachts te verlichten.
Zij vroegen Hem: geef ons te eten,
en Hij liet kwartels komen,
Hij gaf hun brood uit de hemel
en ze hadden geen honger meer.
Hij scheurde de rotsen open,
daar sprong het water tevoorschijn,
stromen van levend water
midden in de woestijn.
Dit alles heeft Hij gedaan
omdat Hij het eens beloofd had
aan Abraham, zijn knecht.
Hij gaf zijn volk de vrijheid
en juichend zijn wij gegaan.
Hij gaf ons de landen der volken,
Hij gaf ons het werk van hun handen,
opdat wij zijn woorden bewaren
en leven in zijn verbond
en Hem loven en danken
nu en in eeuwigheid.
"""
Mijn schuilplaats is bij Hem

Waarom dan gezegd:
'Vogel, vlucht naar de bergen;
daar, die man zonder God
spant zijn boog, legt aan,
schiet in de nacht, wil onschuld
treffen in het hart
Scheuren de fundamenten,
wat baat dan goedheid nog?'

God, in zijn heilig huis,
Hij op zijn troon in de hemel,
zoekt met zijn ogen de wereld,
toetst de kinderen van Adam.

Goeden en kwaden doorschouwt Hij,
aanstichters van terreur
verafschuwt Hij hartgrondig.
Dat soort krijgt van Hem
stortbuien vuur en zwavel,
gloeiende woestijnwind
krijgen zij voor hun dorst.

Hij, de gerechtigheid zelf,
heeft de rechtvaardige lief.
Onschuld zal Hem aanschouwen.
"""Woord van God
tot mijn koning en heer:
'Zet u neer
aan mijn rechterhand.
Uw vijand maak ik
de trede van uw troon.
Ik reik u over
de scepter van mijn macht.
Heers vanaf Sion
over uw vijand.
Koning zijt gij
op de dag van uw geboorte,
licht van licht,
Ik heb u verwekt -
dauw uit de schoot
van de dageraad.'

Woord van God,
onschendbare eed:
'Gij zijt priester
in eeuwigheid,
zoals eertijds
Melchisedek.'

Hij is uw God,
Hij is aan uw zijde.
Als de dag van zijn
woede gekomen is,
zult gij koningen
de kop verpletteren;
volkeren daagt gij
voor het gericht,
er vallen doden
door heel het land.
Gij drinkt uit de beek
en als overwinnaar
gaat gij uw weg
met geheven hoofd.
"""Toen Israël uit Egypte trok,
de zonen van Jakob
weg uit een onverstaanbaar volk,
toen maakte de Heer
van Juda een veilige woning, van Israël
zijn koninkrijk.
Dat zag de zee, en zij sloeg op de vlucht,
en de Jordaan deinsde terug,
de bergen sprongen als rammen weg,
als lammeren de heuvels.
Wat was er, zee, dat je vluchten moest,
Jordaan, dat je wegkroop,
en bergen, dat jullie huppelden als rammen
als schapen en geiten?

Verschenen is de Heer van de aarde,
de God van Jakob,
die rotsen verandert in bronnen en vijvers,
stenen in water.
"""Niet ons komt de eer toe, o God, niet aan ons
maar aan U alleen.
Want Gij zijt waarachtige liefde en trouw,
God in ons midden.
Hoe kunnen er dan nog zijn die vragen:
waar is jullie God?
Onze God gaat alles te boven,
Hij maakt wat Hij wil.
Heidenen maken hun goden zelf,
van zilver en goud;
die hebben een mond, maar kunnen niet spreken,
ogen, en kunnen niet zien;
die hebben oren, maar kunnen niet horen
en een neus, maar ze ruiken niets -
en hun handen kunnen niet tasten
en hun voeten kunnen niet gaan,
en uit hun kelen, uit hun kelen
komt geen geluid vandaan.
En wie vertrouwt op zulke goden
is al even waardeloos.
Israël, blijf op uw God vertrouwen,
Hij is uw hulp en uw schild,
Gij allen die in het huis van God
uw diensten verricht, blijft Hem vertrouwen,
Hij is uw hulp en uw schild.
Mensen van God, blijf toch vertrouwen,
Hij is uw hulp en uw schild.
De Heer bewaart ons in zijn hart,
en geeft ons zijn zegen;
geluk en zegen voor Israël
en veel geluk voor wie Hem dienen,
niets dan genade voor al zijn mensen,
groten en kleinen.
Hij zal ons groot en talrijk maken,
ook onze kinderen.
Wij zijn gunstelingen van God,
hemel en aarde heeft Hij geschapen.
De hemel is de hemel van God,
de aarde heeft Hij aan de mensen gegeven.
Niet de dodenen spreken van Hem,
niet de doden in hun stilte.
Maar wij, mensen, maken Hem gelukkig
nu en in eeuwigheid.
Halleluja.
"""Brengt dank aan God, want Hij is goed,
zijn liefde duurt in eeuwigheid.
Getuigen moet heel Israël:
zijn liefde duurt in eeuwigheid,
en alle priesters van de Heer:
zijn liefde duurt in eeuwigheid,
alwie gelooft in onze God:
zijn liefde duurt in eeuwigheid.

Ik was gevangen en riep:
God, en Hij heeft mij geantwoord,
Hij heeft mij ruimte gegeven.

Hij komt voor mij op, ik ben veilig,
wat kunnen de mensen mij maken.
Hij komt voor mij op als een vriend
en mijn vijanden tellen niet meer.
Beter te schuilen bij God
dan te vertrouwen op mensen,
beter te schuilen bij God
dan te vertrouwen op macht.

Alle volken omsingelden mij,
ik sloeg ze neer met de Naam van God.
Zij sloten mij in van alle kanten,
ik sloeg ze neer met de Naam van God.
Zij kwamen op mij af als wespen,
een gonzend strovuur om mij heen,
ik sloeg ze neer met de Naam van God.

Ik was geslagen, ik was gevallen,
God heeft mij overeind geholpen.
Hij is mijn trots, Hij is mijn lied,
God is mijn overwinning geworden.

Kreten van vreugde klinken op
uit de tenten van de rechtvaardigen:
'Wonderen doet de hand van Heer,
hoog opgeheven, ons ten zegen,
wonderen doet de hand van de Heer.'

Ik zal niet sterven, ik zal leven
getuigen van zijn grote daden:
de Heer heeft mij wel hard geslagen,
maar het was niet ten dode toe.

Open voor mij
de deur van zijn huis.
Ik wil naar binnen,
Hem bedanken.

Deze deur
staat open naar God,
en wie goed is
mag naar binnen.

Ik dank U dat Gij mij hebt gehoord,
Gij zijt mijn overwinning geworden.
De steen die de metselaars niet konden
gebruiken, die is de hoeksteen geworden.
Zo heeft God het laten gebeuren,
wij zijn het maar begrijpen het niet.

Dit is de dag die de Heer gemaakt heeft,
een dag van vreugde voor ons allen.
Kom ons bevrijden, Gij onze God,
breng ons tot een gelukkig einde.

Gezegend wie komt in de Naam van de Heer.
Uit zijn woning wensen wij u zegen.
Zijn licht is over ons opgegaan.
Maak dan een feestelijke processie
en komt dicht om het altaar heen
en zwaait met palmen en zingt Hem toe:
Mijn God zijt Gij, U wil ik danken,
mijn God, U in de hoogte steken.

Brengt dank aan God, want Hij is goed.
Zijn liefde duurt in eeuwigheid. 

De Heer is mij tot hulp en sterkte
Hij is mijn lied mijn psalmgezang.
Hij is het die mijn heil bewerkte,
Ik loof de Heer mijn leven lang.
Des Heren hand is hoog verheven,
des Heren rechterhand is sterk,
ik zal niet sterven, ik zal leven
en zingen van des Heren werk.
"""Ik sla mijn ogen op naar de bergen -
zou iemand mij komen helpen?
Ja, mijn God komt mij helpen,
de schepper van hemel en aarde.

Hij zal niet toelaten dat je struikelt.
Hij zal niet slapen, Hij waakt over jou.
Nee, slapen en sluimeren zal Hij niet,
Hij waakt over heel zijn volk.

Onze God houdt de wacht
als een schaduw over je heen.
Overdag zal de zon je niet steken
en 's nachts zal de maan je geen kwaad doen.

Hij houdt alle kwaad van je af,
Hij neemt je onder zijn hoede.
En waar je ook gaat of staat,
God zal je behoeden voor eeuwig.
"""Als de Heer het huis niet bouwt,
ach metselaar, waarom nog werken.
Als de Heer de stad niet behoedt,
ach wachter, je waakt tevergeefs.

Wat zal je dan nog vroeg opstaan
en zwoegen tot diep in de nacht.
Je brood smaakt toch naar verdriet.
Je kunt het geluk niet maken, -
de Heer geeft het zijn vrienden
zo maar, in hun slaap.

Kinderen komen van God,
een zoon is een kostbaar geschenk.
Als pijlen op de boog van de man
zijn zonen, verwekt in je jeugd.
Gelukkig de man die ze heeft.
Hij hoeft zich geen zorgen te maken,
hij kan zijn vijand te woord staan,
hij kan de wereld aan.
"""Gelukkig is de man
die leven mag met God.
Jij bent die man wanneer je
zijn woorden goed bewaart.

Je handen zullen werken,
je land zal vruchten dragen,
genoeg om van te leven.
Het zal je meer dan goed gaan.

Je vrouw is een vruchtbare wingerd
die bloeit in het hart van je huis.
Zonen staan rondom je tafel
als takken van de olijf.

Zo gaat het een man van God,
genade op genade.

Ontvang voor heel je leven
de zegen van Gods huis,
geniet met volle teugen
de vrede van zijn stad.

Wees vruchtbaar in je zonen,
gezegend in hun kinderen -
zo redt de Heer zijn volk
en schenkt ons alle vrede.
"""God ik ben niet hooghartig
ik kijk niet op anderen neer

beeld mij niet in dat ik groot ben
droom geen geweldige dromen

ik heb mijn verlangens getemd
mijn ziel is tot rust gekomen

als een kind dat gedronken heeft
en rust aan de borst van zijn moeder

een kind dat gedronken heeft
zo is mijn ziel in mij

alles verwachten van Hem
nu en in eeuwigheid
"""Ja dat doet deugd: als broeders
in één huis samen te leven.
Dat is als kostbare balsem
uitgestort over het hoofd
en neervloeiend in de baard,
de baard van Aäron,
tot in de hals van zijn kleed.
Dat is als de dauw van de Hermon,
neerdalend op Sions bergen.
Daar schenkt de Heer zijn zegen,
leven in eeuwigheid.
"""Aan Babels stromen zaten wij neer,
treurend bij de gedachte aan Sion.
En aan de wilgen die daar stonden
hingen wij onze harpen op.

Want die ons hadden weggevoerd
vroegen ons om een lied te zingen,
onze beulen wilden iets vrolijks:
'Zing een liedje voor ons uit Sion.'

Ach, hoe zouden wij in den vreemde
kunnen zingen van onze God.
Jeruzalem, zou ik u ooit vergeten
ik miste nog liever mijn rechterhand.

Mijn tong mag in mijn mond verstenen
als ik niet zou denken aan u,
als ik niet mijn grootste vreugde
in u zou vinden, Jeruzalem.

O God, vergeld de zonen van Edom
die onheilsdag van onze stad,
aan hen die riepen: 'Weg met haar,
laat er geen steen op de andere blijven.'

O stad Babel, verwoestende furie,
ik zegen hem die jou zal vergelden.
Ik zegen hem die jouw kinderen grijpt
en te pletter slaat tegen de rotsen.
"""Mijn God, Gij peilt mijn hart en Gij kent mij,
mijn God, Gij weet waar ik ga of sta.
Gij doorziet mijn gedachten van verre,
Gij hebt mijn reizen en rusten bepaald,
en wat ik ook doe, Gij zijt ermee vertrouwd,
ja, en er komt geen woord op mijn lippen,
mijn God, of Gij hebt het al gehoord.
Gij zijt voor mij en Gij zijt achter mij,
Gij hebt uw hand op mij gelegd -
wonder van wijsheid dat mij te boven gaat,
onbereikbaar, ik kan er niet bij.

Hoe zou ik ooit ontkomen aan uw geest
en waarheen vluchten, Gij ziet mij overal.
Beklim ik de heuvel, Gij zijt in de hemel,
daal ik af in de aarde, daar vind ik U ook.
En vlieg ik mee met het morgenrood
tot aan het uiterste strand van de zee,
ook daar zal uw hand mij verder helpen,
ook daar houdt uw machtige hand mij vast.
Of ik nu uitroep: 'Duisternis, bedek mij,
laat het nacht worden om mij heen',
voor U bestaat er geen duisternis,
voor U is de nacht even licht als de dag,
de duisternis even stralend als het licht.

Uw schepping ben ik in hart en nieren,
Gij hebt mij geweven in de schoot van mijn moeder.
Ik dank U, Gij hebt mij zo wonderlijk gemaakt,
ontzaglijke wonderen zijn al uw werken.
Door U ben ik gekend, mijn ziel en mijn gebeente,
in mij was niets voor uw ogen verborgen
toen ik werd gevormd in het diepste geheim,
prachtig gevlochten in de schoot van de aarde.
Ik was nog ongeboren, gij had mij al gezien,
en al mijn levensdagen stonden in uw boek
nog voor Gij er een van gemaakt had.

Hoe moeilijk zijn uw gedachten voor mij,
God, wat een machtig geheel.
Ga ik ze tellen, ze zijn zo talrijk
als het zand aan de zee, en dan nog -
dan weet ik altijd nog niets van U.

Dood de kwaadwillige mens, o God,
weg van mij, mensen met bloed aan uw handen.
Zij spreken over U, maar om tegen U te stoken,
gebruiken uw naam wel, maar om U te verraden.
Zou ik niet haten, God, die U haten,
niet walgen van hen die zich tegen U keren?
Ik haat ze, zo fel als ik haten kan,
mijn eigen vijanden zijn het voortaan.

Peil nu mijn hart, o God, en ken mij,
toets mij en weet wat er in mij omgaat.
Ik ben toch niet op een doodlopende weg?
Leid mij voort op de weg van mijn vaderen.
Ik schreeuw het uit, ik schreeuw naar God,
o God, ik bid en smeek om genade.

Ik stort mijn klachten uit voor zijn ogen,
ik stort mijn hele hart bij Hem uit.

Ik kan niet meer, ik heb geen adem meer -
maar Gij, Gij weet een uitweg voor mij.

Zijn hebben valstrikken voor mij gezet,
waar ik mij wend of keer, geen vriend,

geen vriend voor mij, geen toevlucht meer,
niemand die ook maar iets om mij geeft.

Ik schreeuwde naar U, o God, ik riep:
mijn toevlucht, Gij mijn alles in dit leven.

Maar luister dan toch, ik ben bijna geen mens meer,
red mij dan toch, ze jagen me op, ze zijn me te machtig.

Ze sluiten me in, God, haal me er uit
en ik zal U tonen hoe dankbaar ik ben.

En al uw getrouwen wensen mij geluk
omdat Gij goed voor mij zijt geweest.
"""I

Een hooglied voor de Heer,
zingen maakt gelukkig,
zingen voor onze God,
want psalmen hoort Hij graag.

Hij bouwt een stad van vrede
voor het volk van zijn verbond;
hoe ver ook in den vreemde,
Hij roept ons weer bijeen.

Gebroken mensen geneest Hij
en Hij verbindt hun wonden,
Hij die het getal van de sterren
nog iedere nacht bepaalt,

die hen allen roept bij hun naam,
een machtige God is Hij,
onze God, en zijn wijsheid
is niet te schatten zo groot.

De arme houdt Hij staande,
hoogmoed brengt Hij ten val.
Wij moeten zijn Naam bezingen,
wij maken muziek voor Hem,

die de hemel met wolken bedekt
de regen maakt voor de aarde,
die de bergen kleedt in het groen
en de dieren hun voedsel geeft,

en zelfs de kleine raaf
krijgt waar hij zo om schreeuwt.
Nee, niet om paardekracht
of stalen spieren geeft Hij,

zijn hart gaat uit naar hen
die wachten op zijn liefde,
in hoop en vrees zijn vrienden -
zo is Hij onze God.

II

Jeruzalem, stad van God,
mensen, verheerlijkt Hem.
Hij heeft uw poorten vergrendeld,
Hij heeft uw kinderen gezegend.

Hij schenkt u brood en vrede,
gij woont in overvloed.
Hij stuurt zijn woord naar de aarde
en het gaat, als een lopend vuur.

En soms laat Hij het sneeuwen,
een witte wollen vacht.
Hij strooit de rijp als as
en hagel, stenen van ijs.

Wie kan zijn kou verdragen?
Maar dan spreekt Hij een woord,
het dooit, de wind gaat waaien,
de wateren stromen weer.

Aan Jakob en diens huis
heeft Hij zijn woord gegeven,
zijn recht, zijn openbaring,
belofte en verbond.

Er is geen ander volk
dat Hem zo mag ervaren,
zijn woorden mag bewaren -
ons lied klinkt hemelhoog.
"""Halleluja,
een nieuw lied voor onze God.
Zingt Hem toe,
allen die Hij heeft geroepen.
Israël
moet verheugd zijn om zijn schepper,
Sions kinderen
moeten juichen om hun koning.
Danst voor Hem
als een hulde aan zijn Naam,
speelt en slaat
op uw pauken en uw harpen.
Onze God
heeft zich zelf een volk gekozen.
Hij verlost,
Hij verheerlijkt arme mensen.
Laat dan nu
al zijn vrienden gloriëren,
nachtenlang
Hem toejuichen en aanbidden.

Uit hun mond
komt een lofzang voor de Heer,
in hun hand
schittert zijn tweesnijdend zwaard.
Om zijn wraak
aan de volken te voltrekken,
tuchtiging
op de ruggen van de naties.
Om hun vorsten
vast te binden en te boeien,
potentaten
in de ketenen te slaan.
Om zijn recht
en zijn vonnis uit te voeren -
zo geeft God
eer en glorie aan zijn vrienden,
Halleluja.
"""Looft de Heer in zijn heilige woning,
het firmament van zijn majesteit.
Looft Hem om zijn machtige werken,
looft Hem, Hij is onmetelijk groot.

Looft Hem op uw schallende hoorn
en op uw citers, harpen, gitaren.
Looft Hem met dansen en tamboerijnen,
spant uw snaren en speelt op de fluit.

Looft Hem met bekkens, pauken, cimbalen,
hout en koper, een koor van stemmen,
halleluja, kreten van vreugde,
alle levenden loven de Heer.
"""
I

De hemel ontvouwt de glorie van God,
het uitspansel roemt het werk van zijn handen.
De dag geeft het door aan de volgende dag,
de nachten vertellen elkaar wat zij weten.
Het is geen spreken, er zijn geen woorden
en hun stemmen zijn niet te horen;
toch, overal wordt hun ritme vernomen,
hun echo reikt tot de rand van de aarde.

Hij heeft voor de zon een tent opgeslagen -
een bruidegom die uit het bruidsvertrek komt,
een held die juichend zijn tocht onderneemt,
dat is de zon, hij klimt langs de hemel
en daalt af aan de uiterste grens
en niets blijft voor zijn hitte verborgen.

II

Het woord des Heren is volmaakt,
bron van leven.
Gods getuigenis betrouwbaar -
onverstand wordt wijs.

Helder water is zijn wet,
hartverkwikkend.
Zijn geboden: recht en reden,
licht voor onze ogen.

Wat Hij belooft is louter waarheid,
enkel vrede.
Wat Hij doet is welgedaan
tot in eeuwigheid.

Even kostelijk als honing,
nee, nog meer,
kostbaarder dan zuiver goud
is het woord des Heren.

III

Gij zelf zult ons de moeite lonen
als wij Uw woord bewaren, Heer.
Maar wie kent zijn eigen wegen?
Spreek ons vrij van heimelijk kwaad.

Laat hoogmoed ons niet overheersen,
behoed uw mensen voor eigenwaan;
dat wij niet met U breken, God,
maar zonder angst U tegemoet gaan.

De woorden die wij tot U spreken
en de gedachten van ons hart
mogen bij U genade vinden,
bij U, mijn God, mijn rots, mijn redder.
"""
Waartoe leidt het woeden van de volken,
het rumoer van de naties? Tot niets.
De koningen van de aarde komen in verzet,
de wereldmachten spannen samen
tegen de HEER en zijn gezalfde:
‘Wij moeten hun juk afwerpen,
ons van hun boeien bevrijden.’

Die in de hemel troont lacht,
de Heer spot met hen.
Dan spreekt hij tot hen in woede,
en zijn toorn verbijstert hen:
‘Ikzelf heb mijn koning gezalfd,
op de Sion, mijn heilige berg.’ 

Het besluit van de HEER wil ik bekendmaken.
Hij sprak tot mij:
‘Jij bent mijn zoon,
ik heb je vandaag verwekt.
Vraag het mij
en ik geef je de volken in bezit,
de einden der aarde in eigendom.
Jij kunt ze breken met een ijzeren staf,
ze stukslaan als een aarden pot.’

Daarom, koningen, wees verstandig,
wees gewaarschuwd, leiders van de aarde.
Onderwerp u, toon de HEER uw ontzag,
breng hem bevend uw hulde.
Bewijs eer aan zijn zoon met een kus,
anders ontvlamt zijn woede, en uw weg loopt dood,
want bij het geringste ontsteekt hij in toorn.
Gelukkig wie schuilen bij hem. 
"""
I

God, mijn God, waarom hebt Gij mij verlaten.
Ik schreeuw het uit, en Gij houdt U ver.
Mijn God, roep ik overdag, en Gij zwijgt,
ik roep het 's nachts, en Gij laat mij maar roepen.

O Gij, heilige God die troont
waar Israëls liederen worden gezongen,
onze vaderen hadden vertrouwen in U,
vertrouwen en Gij zijt hun redding geweest.
Zij riepen om U en Gij waart hun uitkomst,
en nooit hebt Gij dat vertrouwen beschaamd.

Maar ik ben geen mens meer, ik ben een worm,
gehoond door de mensen, veracht door de buurt.
Ik ben bespottelijk in aller ogen,
iedereen lacht me hoofdschuddend uit:
'Hij zocht het bij God, laat die hem dan redden,
laat God hem bevrijden, die houdt toch van hem.'

Hebt Gij mij niet uit de schoot getrokken
en doen rusten aan de borst van mijn moeder?
Ik werd bij mijn geboorte in uw handen gelegd,
Gij zijt mijn God van de moederschoot af.
Waarom zijt Gij dan nu ver weg?
Ik ben de wanhoop nabij, niemand helpt me.

II

Een wilde menigte komt op mij af,
bonkige stieren sluiten mij in,
sperren hun muilen naar mij open,
brullende en verscheurende leeuwen.

Als water ben ik uitgegoten
en mijn gebeente is ontwricht.
Mijn ziel is in mij weggesmolten,
mijn hart is uit mij weggerukt.

Droog als een potscherf is mijn keel,
mijn tong kleeft aan mijn gehemelte vast.
Gij dwingt mij neer in het stof van de dood,
honden zijn tegen mij losgelaten.

Het gepeupel heeft mij omsingeld,
ze hebben mijn handen en voeten doorboord
en zijn al mijn ribben aan het tellen.
Ze kijken toe en genieten ervan.

Ze verdelen mijn kleren onder elkaar
en zij dobbelen om mijn mantel.
En Gij, mijn God, Gij zijt ver weg,
helpt Gij mij niet, zijt Gij niet mijn sterkte?

Lever mij niet uit aan het zwaard,
geef mij niet prijs aan de macht van de honden,
red mijn leven uit de muil van de leeuw,
mij, arme mens, van de horens der stieren.

III

Ik wil over Hem aan mijn broeders vertellen,
zijn Naam hoog houden in het midden der gemeente:
'Zonen van Israël, mensen van God,
gij moet Hem aanbidden met diep ontzag.
Nooit heeft Hij veracht de armoe van de arme,
nooit heeft Hij mij de rug toegekeerd,
nooit mij geschuwd, maar mijn roepen gehoord.'

Dit is mijn lied in de kring van de gemeente,
en daar zal ik mijn belofte volbrengen.
De armen zullen eten en worden verzadigd,
en allen die Hem zoeken zegenen zijn Naam.
Zij zullen leven voor altijd en eeuwig.

De einden der aarde zullen het gedenken
en zich bekeren tot deze God.
Eenmaal zullen ze voor Hem knielen
alle geslachten van alle volkeren.
Want Hem komt het koninkrijk toe en de kracht,
Hij is de Heer van stammen en talen.
En zelfs wie neerliggen in het stof
en niet meer leven, zullen Hem aanbidden.

Maar ik wil leven met hart en ziel
en ook mijn kinderen zullen Hem dienen
en aan hun kinderen over Hem vertellen.
Iedereen die nog geboren moet worden
krijgt het te horen: God is getrouw.
En dit alles heeft hij gedaan. 
"""
Mijn herder is de Heer,
mij zal het nooit aan iets ontbreken.

Hij brengt mij in een oase van groen,
daar strek ik mij uit aan de rand van het water,
daar is het goed rusten.
Ik kom weer tot leven, dan trekken wij verder,
vertrouwde wegen, Hij voor mij uit.
Want God is zijn naam.

Al moet ik het duister in van de dood,
ik ben niet angstig, U bent toch bij me,
onder uw hoede durf ik het aan.

Gij nodigt mij aan uw eigen tafel,
en allen die tegen mij zijn
moeten het aanzien: dat Gij mij bedient,
dat Gij mij zalft, mijn huid en mijn haren,
dat Gij mijn beker vult tot de rand.

Overal komen geluk en genade
mij tegemoet, mijn leven lang.
En altijd kom ik terug in het huis
van de Heer, tot in lengte van dagen.



Was jij mijn herder, niets zou mij ontbreken.

Breng mij naar bloeiende weiden
doe mij liggen aan vlietend water
dat mijn ziel op adem komt
dat ik de rechte sporen weer kan gaan
achter jou aan

Jij mijn herder? Niets zal mij ontbreken.

Moet ik de afgrond in, de doodsvallei,
ik zal niet bang zijn- ben jij naast mij
ik zal niet doodgaan van angst.

Jij hebt de tafel al gedekt- mijn spotters
weten niet wat ze zien.
dat jij mijn voeten wast, ze zalft met balsem
mij inschenkt, drink maar, zeg je

niets zal mij ontbreken.

Laat het zo blijven, dit geluk
deze genade, al mijn levensdagen.

Dat tot in lengte van jaren
ik wonen zal bij jou in huis.
"""
Van God is de aarde, van Hem deze wereld
en die haar bewonen. Hij heeft haar zelf
op de stromen gebouwd en stevig verankerd.

Wie mag beklimmen de hoogte van God,
wie gaan en staan in zijn heilige stad?
Mensen met onschuldige handen.

Mensen met een gelouterd hart.
die niet op schijn hun leven bouwen,
geen leugens smeden tegen een ander.

Zij vinden heil en zegen bij Hem,
zij zijn het slag dat zoekt naar God,
dat Hem wil zien, met eigen ogen.

Poorten, heft uw hoofden omhoog,
maakt u groter, eeuwige deuren,
hier komt de koning der glorie.

Wie is de koning der glorie?
Het is de Heer, de machtige sterke,
het is de Heer, de sterke in de strijd.

Poorten, heft uw hoofden omhoog,
maakt u groter, eeuwige deuren,
hier komt de koning der glorie.

Wie is Hij, de koning der glorie?
Onze God, de Heer van de machten,
Hij is de koning der glorie.
"""
Naar U gaat mijn verlangen.

Heer, mijn God, ik ben zeker van U.
Zoudt Gij mij ooit te schande maken,
zullen mijn vijanden triomferen?
Neen, Gij zult ons nooit beschamen,
al die mensen die op U wachten.
Maar wie roekeloos met U breken
zullen te schande staan.

Maak mij, Heer, met uw wegen vertrouwd,
zet mij op het spoor van uw waarheid.
Richt mij, Gij zijt de God die mij redt
en op U wacht ik, een leven lang.
Zijt Gij niet altijd goed geweest,
barmhartige liefde, van meet af aan?
Denk dan niet aan mijn jeugdzonden, Heer,
en als ik ontrouw was, vergeet het.
Denk alleen met liefde aan mij.

Hij is God, Hij verloochent ons niet,
wie dwalen wijst Hij rechte wegen.
Arme en ootmoedige mensen
geeft Hij de kracht zijn weg te gaan.
Al wat Hij doet is liefde en trouw
voor allen die zijn verbond bewaren
en zich vasthouden aan zijn woord.

Omwille van uw Naam, vergeef mij,
Gij alleen kunt mijn schuld vergeven.

Wie God in ere houdt, zal weten
op welke wegen hij moet gaan.
Hij zal geluk en leven vinden
zijn zonen zullen de aarde ontvangen.
God zal hem in vertrouwen nemen
en binnenvoeren in zijn verbond.
Steeds weer zoeken mijn ogen naar Hem,
Hij richt mij op als ik ben gevallen.

Zie naar mij om en wees mij genadig,
want ik ben eenzaam en hulpeloos.
Beklemd en angstig is mijn hart,
maak mij open, geef mij ruimte.

Keer u niet af van mijn ellende,
neem mijn zonden van mij weg.
Gij weet toch dat ik vijanden heb
die mij haten met dodelijke haat?
Red mij uit hun handen, God,
of zult Gij mijn vertrouwen beschamen?

Eenvoud en oprechtheid mogen mij bewaren,
want op U wacht ik, een leven lang.

Kom ons uit onze angst bevrijden. 
"""
Van U wil ik spreken, God,
en iedereen mag het horen:
Gij hebt mij omhoog getrokken,
Gij hebt mij het leedvermaak
van mijn vijanden bespaard.
Ik riep tot U: help mij, God -
toen hebt Gij mij genezen;
Gij hebt mij teruggehaald
diep uit de afgrond, ik werd
al bij de doden gerekend,
Gij hebt mij weer levend gemaakt.

Zingt voor de Heer onze God,
allen die deelt in zijn liefde;
houdt in uw liederen levend
dat Hij de heilige is.
Zijn woede duurt maar een tel,
een leven lang zijn vriendschap,
de avond komt met droefheid,
met vreugde de nieuwe dag.

Ik was bezorgd en gelukkig,
ik dacht: zo zal het blijven,
ik sta en ik zal niet vallen;
en ik besefte niet
dat alleen uw genade
mij in leven houdt, Heer.
Daarom, toen Gij U afkeerde,
was ik nergens meer.

Ik heb U geroepen, God,
U om genade gesmeekt:
'Wat hebt U eraan, als ik dood ga
en in het graf word gelegd?
Kan het stof U soms loven,
een dode uw trouw bezingen?
Hoor mij dan toch, Heer God,
wees mij genadig en help.'

Toen hebt Gij mijn droefheid veranderd
in blijdschap, ik ging in rouw
en Gij hebt mij gekleed in vreugde.
En nu, van ganser harte,
zing ik dit lied voor U,
en ik mag niet meer zwijgen,
en daarom, God mijn God,
dank ik U eindeloos.
"""
I

Gelukkig is de mens
wiens ontrouw is vergeven,
wiens kwaad vergeten is.
Geluk voor hem, als God
zijn zonden niet meer telt,
als hij bekennen durft:
ik heb gezondigd.

Zolang ik doof was voor
de stem van mijn geweten,
werd ik verteerd van binnen,
vluchtte ik in zelfbeklag.
Uw hand woog zwaar op mij,
dagen en nachten lang.
Mijn krachten kwijnden weg
zoals een mens wegkwijnt
onder de zomerhitte.

Maar toen kon ik mijn kwaad
niet meer voor U verbergen.
Ik dacht: ik ga naar Hem,
zeggen wat ik gedaan heb -
en Gij hebt mij vergeven.

Daarom mag elke mens
die in uw naam gelooft,
vertrouwvol tot U gaan,
zolang Gij U laat vinden.
Al breekt een zondvloed los,
hem zal niets overkomen, -
Gij hebt toch ook mijn angst
bezworen, Gij zijt zelf
de ark van mijn behoud.
Het lied van uw verlossing
is overal om mij heen.

II

Zo spreekt de Heer uw God:
'Ik zal u wegwijs maken,
mijn raad zal Ik u geven
mijn ogen zijn op u.
Wees toch niet redeloos
en koppig als een ezel,
een paard dat men met sporen
en teugels moet bedwingen -
het zou u slecht vergaan.'

Ontvlucht uw God, gij vindt
ellende overal,
maar geeft gij u gewonnen,
Hij zal genadig zijn.
Mensen van goede wil,
Hij is een bron van vreugde,
verheugt u dan in Hem
met een gelouterd hart.
"""
1 Jubelt, rechtschapenen in den Heer; den deugdzamen past een loflied.
2 Looft den Heer met de citer, speelt voor hem op de tiensnarige luit.
3 Heft te zijner eer een nieuw lied aan, speelt schoon met jubelende tonen.
4 Want oprecht is het woord van den Heer, en al zijn daden zijn gekenmerkt door trouw;
5 hij heeft recht en gerechtigheid lief; de aarde is vol van 's Heeren goedertierenheid.
6 Door het woord van den Heer zijn de hemelen gemaakt, door den adem van zijn mond al hun heir;
7 hij stapelt het water der zee op, plaatst de oceanen in voorraadschuren.
8 Vreze voor den Heer de ganse aarde, zij de gehele bevolking der wereld voor hem beducht;
9 want hij sprak, en het was er, hij gebood, en daar stond het.
10 De Heer heeft den raadslag der natien verbroken, verijdeld de overleggingen der volken.
11 De raad van den Heer staat vast voor eeuwig, de overleggingen van zijn hart geslacht uit geslacht in.
12 Gelukkig de natie wier God de Heer is, het volk hetwelk hij zich ten erve verkoren heeft.
13 Uit den hemel schouwt de Heer, ziet hij naar alle mensenkinderen;
14 uit zijn woonplaats laat hij de ogen weiden over alle bewoners der aarde,
15 hij, die aller harten vormt en let op al hun werken.
16 Een koning behaalt de zege niet door een sterk leger, een held wordt niet gered door grote kracht;
17 het paard faalt de overwinning te verlenen, doet niet ontkomen door zijn grote sterkte.
18 Zie, het oog van den Heer is gericht op hen die hem vrezen, op hen die uitzien naar zijn goedertierenheid;
19 om hen te redden van den dood, hen in hongersnood in het leven te houden.
20 Onze ziel wacht op den Heer; hij is onze hulp en ons schild;
21 want in hem verblijdt zich ons hart, omdat wij vertrouwen op zijn heiligen naam.
22 Zij uw goedertierenheid, Heer, zo over ons als wij uitzien naar u!

-------------------------------------------------------------------------------
Leidsche Vertaling
"""
1 Van David, toen hij zich als een krankzinnige gedragen had bij Abimelech, deze hem weggejaagd had en hij heengegaan was. (34-2) Te allen tijde wil ik den Heer prijzen, voortdurend zal zijn lof in mijn mond zijn.
2 (34-3) Mijn ziel looft den Heer; mogen de deemoedigen het horen en zich verblijden!
3 (34-4) Verheerlijkt met mij den Heer, verhoogen wij tezamen zijn naam!
4 (34-5) Ik heb den Heer gezocht, en hij heeft mij verhoord; van alwat ik duchtte heeft hij mij bevrijd.
5 (34-6) Ziet op hem en luikt op; uw aangezicht zal niet schaamrood worden.
6 (34-7) Hier is een ellendige, die riep, en de Heer hoorde, redde hem uit al zijn noden.
7 (34-8) De engel des Heeren legert zich rondom hen die hem vrezen, en schenkt hun uitredding.
8 (34-9) Smaakt en ziet, dat de Heer goed is; gelukkig de man die tot hem zijn toevlucht neemt!
9 (34-10) Vreest den Heer, gij zijn heiligen; want wie hem vrezen hebben geen gebrek.
10 (34-11) Leeuwenwelpen lijden armoede en honger, maar wie den Heer zoeken, hun ontbreekt het aan niets goeds.
11 (34-12) Komt, kinderen, hoort naar mij; ik wil u de vreze van den Heer leren.
12 (34-13) Waar is de man die lust heeft in het leven, die lengte van dagen wenst, om het goede te zien?
13 (34-14) Behoed uw tong voor het kwade, en uw lippen voor bedrieglijk spreken.
14 (34-15) Wijk van het kwade en doe het goede, zoek den vrede en jaag dien na.
15 (34-16) Het aangezicht van den Heer is tegen de kwaaddoeners gekeerd, om hun gedachtenis van de aarde te verdelgen;
16 (34-17) de ogen van den Heer rusten op de rechtschapenen, zijn oren zijn gewend naar hun gekrijt.
17 (34-18) Zij roepen, en de Heer hoort, bevrijdt hen uit al hun noden.
18 (34-19) De Heer is den gebrokenen van hart nabij, en redt de verbrijzelden van geest.
19 (34-20) Al zijn de rampen des rechtschapenen vele, uit die alle bevrijdt hem de Heer.
20 (34-21) Hij behoedt al zijn beenderen, geen daarvan wordt gebroken.
21 (34-22) Onspoed doodt den boze, zij die den rechtschapene haten boeten er voor.
22 (34-23) De Heer verlost het leven zijner dienaren, zij die tot hem de toevlucht nemen staan niet schuldig. 
"""
Geef mij toch antwoord
als ik U aanroep, God.

Gij zijt mijn waarheid,
Gij die mij ruimte geeft
als ik benauwd ben -
wees mij genadig,
hoor mijn gebed.

Mens, hoe lang nog
blijft je hart verstokt,
loop je nog leugens na,
zoek je de schijn?

Weet je dan niet
dat God een vriend heeft,
dat Hij die groot maakt,
dat Hij dus luistert
als ik Hem roep.

Geef je gewonnen
en zondig niet meer,
prent het je in
voor je gaat slapen,
kom tot jezelf.

Breng je gaven
in oprechtheid,
schenk vertrouwen
aan onze God.

Menigeen vraagt:
wie maakt ons gelukkig?
Zegen ons met
het licht van uw ogen,
Heer onze God.

Gij hebt mij groter
vreugde gegeven
dan al die anderen
met hun rijkdom,
koren en wijn.

In vrede leg ik mij
neer en ik slaap al.
Gij doet mij wonen
veilig en wel, Heer
God, Gij alleen.
"""
I

Zoals een hert reikhalst naar levend water,
zo wil ik, God, met heel mijn wezen naar U toe.
Ik dorst naar God, de levende God;
Wanneer sta ik eindelijk oog in oog met mijn God?
Ik heb geen brood dan tranen dag en nacht
en altijd weer hoor ik zeggen: 'Waar blijft nu je God?'

Ik moet er steeds aan denken, en dan schiet mijn hart weer vol,
hoe ik meeliep in het gedrang, naar het huis van onze God,
en dan hoor ik ze weer zingen, heel die feestelijke stoet.

Maar waarom dan zo moedeloos,
waarom opstandig?
Ik zal wachten op God
en eens zal ik Hem danken:
Gij zijt mijn lijfsbehoud,
Gij zijt mijn God.

II

Ik ben zielsbedroefd, ik denk aan U
hier in het hoogland van Jordaan en Hermon,
ver weg van uw heilige berg.

Waterval dreunt hier op waterval,
stem van uw stromen, -
al uw brandingen beuken mij,
golven slaan over mij heen.

God, geef mij vandaag en iedere dag
een teken van liefde, dan zal ik voor U zingen
tot diep in de nacht, zolang ik besta.

Levende God, waarom hebt Gij mij vergeten,
mijn rots, waarom loop ik er laveloos bij,
gekweld en vernederd.
Mijn vijanden jagen mij de dood op het lijf,
'waar is die God van jou,' hoor ik ze roepen.

Maar waarom zo moedeloos,
waarom opstandig?
Ik zal wachten op God
en eens zal ik Hem danken:
Gij zijt mijn lijfsbehoud,
Gij zijt mijn God.

III

O God, rechtvaardig mij en vecht voor mij
tegen een volk dat geen genade kent,
verlos mij uit de greep van list en leugen.

Want Gij zijt mijn God en mijn sterkte;
waarom hebt Ge me uitgestoten,
waarom loop ik er haveloos bij,
gekweld en vernederd.

Zend mij uw licht en uw trouw tegemoet:
zij gaan voor mij uit naar uw heilige berg,
zij zullen mij brengen tot binnen in uw huis.

Dan mag ik opgaan naar het altaar van God,
naar Hem die mijn vreugde is, van jongs af aan,
dan zal ik met harpspel U danken,
mijn Heer en mijn God.

Maar waarom dan zo moedeloos,
waarom opstandig?
Ik zal wachten op God,
en eens zal ik Hem danken:
Gij zijt mijn lijfsbehoud,
Gij zijt mijn God.

"""
God onze toevlucht en onze kracht,
altijd in tegenspoed was Hij onze helper.
Daarom, ook al verandert de aarde,
wij vrezen niet. En laat de bergen
tuimelen en vallen diep in de zee,
en laat het water maar schuimen en razen,
springen tegen de klippen op:

Hij is voor ons de God van de machten
een God van mensen, een vaste burcht.

Ik zag een stroom van levend water,
een stroom van vreugde die zich vertakt
door heel de stad van de Allerhoogste.
Hij woont in haar, zij wankelt niet.
Zijn redding daagt als het licht in de morgen.
Koninkrijken wankelen en vallen,
volkeren raken in paniek,
heel de wereld stort in elkaar,
als Hij zijn machtige stem laat horen.

Hij is voor ons een God van de machten
een God van mensen, een vaste burcht.

Komt en ziet de ontzaglijke werken
die Hij op aarde verrichten zal:
Hij maakt een einde aan alle oorlog,
breekt de bogen, versplintert de speren,
werpt onze wapenen in het vuur.
Hij zegt: 'Houdt op, want Ik ben uw God,
Ik zal verschijnen aan alle volkeren,
Ik zal mijn Naam doen gelden op aarde.'

Hij is voor ons een God van de machten
een God van mensen, een vaste burcht.


"""
Wees mij genadig, Gij die genade zijt,
verdelg mijn schuld, in uw barmhartigheid.
Was mij, ik ben vuil van zonde -
wie kan vergeven dan Gij alleen?

Ik zie het kwaad dat ik gesticht heb,
overal is het om mij heen.
Tegen uw heiligheid heb ik gezondigd,
wat Gij verafschuwt heb ik gedaan.
Uw woord veroordeelt mij terecht,
Gij zijt rechtvaardig.

In ongerechtigheid ben ik geboren,
in zonde werd ik ontvangen en gedragen.
Nu wilt Gij dat ik tot waarheid kom,
ik hoor uw stem in mijn geweten.

Bedek mijn zonden, was mij schoon
en ik zal worden zo wit als sneeuw.
Spreek uw verlossend woord tot mij,
Gij hebt mij gebroken, Gij kunt mij genezen.
Sluit uw ogen toch voor mijn zonden,
laat ze niet langer voor U bestaan.

Geef mij een ander hart, mijn God,
maak mij nieuw, maak mij standvastig.
Keer U niet af, verstoot mij niet,
neem nooit uw heilige geest van mij weg.
Red mij, en ik kan weer gelukkig zijn,
en ik durf weer vrijuit te leven.
Maak mij tot teken van uw barmhartigheid,
dat allen die U hebben verloochend
de moed vinden om naar U terug te gaan.

Houd mij niet langer in stomheid gevangen,
of moet ik zwijgen over uw genade?
Geef mij de goede woorden in
om te getuigen van uw vergeving.

Gij vraagt mij niet om gaven en offers.
Als ik, gebroken en vernederd,
mijn hart geopend houd voor U,
is dat mijn offer. Neem het aan.

"""
God mijn God, ik zoek naar U.
Al wat ik ben is dorst naar U.
Mijn lichaam is een land zonder water,
uitgeput van verlangen naar U.

Ik heb U gezien, in uw heilige woning,
met eigen ogen, uw kracht en uw licht.
Ik weet, uw liefde is meer dan het leven,
U wil ik prijzen, mijn leven lang.

Naar U strek ik mijn handen uit,
ik roep uw Naam, Gij zijt mijn God,
mijn dagelijks brood, mijn overvloed.
Ik raak over U nooit uitgezongen.

Nachten lang lig ik wakker van U,
wakend en dromend denk ik aan U:
altijd hebt Gij mij nog geholpen,
in uw nabijheid ben ik gelukkig.

Gij hebt mij op uw rug gebonden,
met beide handen houdt Gij mij vast.
Allen die mij naar het leven staan
komen om in het holst van de aarde.

Zij zullen vallen door het zwaard,
zij worden een prooi van wilde dieren.
Maar ik zal mij verheugen in U,
wie U erkent heeft recht van spreken,

leugenaars wordt de mond gesnoerd.

"""God zij geprezen met ontzag,
Hij draagt ons leven dag aan dag
zijn naam is onze vrede.
Hij is het die ons heeft gered,
die ons in ruimte heeft gezet
en leidt met vaste schreden.
Hij die het licht roept in de nacht,
Hij heeft ons heil teweeg gebracht,
dat wordt ons niet ontnomen.
Hij droeg ons door de diepte heen,
levende God, Gij doet alleen
ons aan de dood ontkomen.
"""Red mij, God, ik sta tot mijn nek in het water,
ik ben weggezonken in zuigende modder,
nergens vinden mijn voeten meer vaste grond

water, niets dan water, de stroom sleurt mij mee;
moegeschreeuwd ben ik, een brandende wond is mijn keel,
mijn ogen zijn dood van het staren, het wachten op God.

Vijanden heb ik meer dan haar op mijn hoofd
en ik ben weerloos tegen hun haat en hun leugens;
zij eisen van mij terug wat ik nooit heb gestolen:
Gij zoudt het weten, Heer, als ik iets had misdaan,
wie kan zich voor U verbergen, machtige God?
Maak ze toch niet te schande, die op mij wachten,
wat moeten zij van mij denken als ze mij zien?

Omdat ik in U heb geloofd word ik uitgelachen,
heb ik mijn gezicht verloren, werd ik een vreemde,
ben ik voor mijn eigen broers onherkenbaar geworden.
De hartstocht voor uw huis heeft mij verteerd,
de woorden waarmee ze U uitschelden vallen op mij.
Ik huil, ik wil niet eten - zij spotten ermee;
ik loop er in lompen bij - ze zeggen: die gek!
Mijn naam ligt op straat, ik voel dat ze over mij praten,
ze maken liedjes op mij in hun dronkemanstaal.

Komt er nog ooit voor mij een uur van genade,
Heer, dat uw liefde mij antwoordt, uw waarheid mij redt?
Trek mij omhoog uit de modder, of moet ik verdrinken
in die verachting, in dat afgrondelijke water?
Laat de vloed, de diepte mij niet verslinden,
laat de mond van het graf niet boven mij dichtgaan.
In uw liefde zou ik geborgen zijn, God,
als in de schoot van een moeder, ik ben toch van U.
Keer U niet af, wees niet zo'n zwijgende God,
spreek en ontferm U over mijn angstige ziel,
eis mij terug, maak mij los uit de greep van mijn vijanden.

Gij kent ze bij name, allen die tegen mij opstaan,
Gij weet hoe ik word getrapt, hoe vernederd ik ben.
De schande heeft mij gebroken, het is ongeneeslijk,
ik wachtte op troost, maar niets; ik hoopte op iemand
die mij zou helpen, maar ik heb niemand gevonden.
Ze hebben mij brood gegeven, het was vergiftigd,
ze hebben mij drinken gegeven, het was azijn.

Ik wou dat ze zich aan hun tafel een ongeluk aten,
laat ze in hun overvloed stikken, de hele bende.
Sla ze met blindheid, verlam hun lenden voor eeuwig,
stort uw vloeken als vlammen over ze uit,
laat ze maar branden in het vuur van uw woede.
Maak van hun stad een woestijn, verjaag er het leven;
toen ik door U werd geslagen, durfden ze wel,
toen ik door U was gewond, sloegen zij me nog harder.

Laat ze maar zonde op zonde stapelen, God,
en als Gij komt geen genade vinden in uw ogen.
Veeg hun namen weg uit het boek van het leven,
dat zij er niet geschreven staan bij uw vrienden.

Maar mij zult Gij redden, zo arm en geplaagd als ik ben,
dan zal ik U loven, uw Naam met een danklied vereren,
dat zal U gelukkiger maken dan bloedige offers.

Kleinen en armen, allen die zoeken naar God,
mogen het weten, zij zullen opleven van vreugde.
Mensen in nood en ellende vinden gehoor,
mensen in boeien, God laat u niet in de steek.
Hemel en aarde zullen zijn naam verkondigen
en ook de zee, met alles wat daar in leeft.

Hij zal zijn volk bevrijden, hun steden herbouwen,
en ook hun kinderen zullen daar wonen in vrede.
En zo zal zijn Naam bekend en bemind zijn, voor eeuwig.
"""Geef uw wijsheid, God, aan de koning,
leg uw koninkrijk in zijn handen,
dat hij een herder mag zijn voor uw mensen,
voor uw arm volk een rechtvaardige rechter.
Dan dragen de bergen schoven van vrede
en de heuvels een oogst van gerechtigheid.

Hij zal opkomen voor de misdeelden,
recht doen aan de minsten der zijnen,
hij zal de machten die ons dwingen
breken en binden, hij zal leven
onvergankelijk, zoals de zon,
zoals de maan, van geslacht op geslacht.

Zoals de regen daalt op het veld,
zoals de dauw die de aarde drenkt,
zo zal hij komen, en in die dagen
zullen trouw en gerechtigheid bloeien,
zal er vrede in overvloed zijn,
totdat het licht van de maan wordt gedoofd.

Hij zal heersen van zee tot zee,
van de grote Rivier tot het einde der aarde.
Vreemde volkeren dwingt hij op de knieën,
al zijn vijanden bijten in het stof.

Verre koningen, verre kusten
bieden hem hun geschenken aan.
Rijke vorsten, de rijkste landen
leggen hun schatten voor hem neer -
eens zullen alle groten der aarde
en alle volkeren knielen voor hem.

Hij zal de redder zijn van de arme,
een vriend voor hem die niemand heeft.
Voor kleine mensen is hij bereikbaar,
de rechtelozen geeft hij hoop.
Hun bloed is kostbaar in zijn ogen,
hij koopt hen vrij uit het slavenhuis.

Zij zullen leven, een gouden tijd,
hem dag aan dag gelukkig prijzen
en bidden dat het zo blijven mag:
een vloed van koren, golvende velden,
bomen vol vruchten, hoog op de bergen -
een stad rijst op uit een zee van groen.

Zijn naam is tot in eeuwigheid,
zolang de zon staat aan de hemel.
Zijn naam gaat rond over de aarde,
een woord van vrede, van mens tot mens.
"""Ja, God is wèl
goed voor ons,
voor een mens
die is gelouterd. 

Bijna was ik
uitgegleden,
het scheelde niets
of ik was gevallen;
ik was afgunstig
op zo'n blaaskaak,
ik zag zijn vrede
zonder God. 

Voor hem geen zorgen:
puike gezondheid,
het leed der mensen
kent hij niet,
hij wordt niet geplaagd
als ieder ander;
hoogmoed is zijn
zegelring,
machtswellust
zit hem als gegeten. 

Zijn ogen puilen
uit zijn vet,
zijn hart loopt over
van gemeenheid,
spot, cynisme,
dreigementen,
grote mond
tegen de hemel,
tong die heel de
aarde bederft.
Natuurlijk krijgt hij
de massa mee.
Ze slurpen zijn woorden
als water op:
'Wat heeft God
met ons te maken
als die tenminste
nog bestaat.'
Zo gaat hij lustig
zijn goddeloze gang,
maakt het best,
krijgt het steeds beter. 

Waarom heb ik
in U geloofd,
heb ik mijn handen
schoon gehouden?
Iedere dag is
een straf voor mij,
elke morgen
word ik geslagen.

Vaak genoeg dacht ik:
doe als die anderen.
Maar dan zou ik
breken met U,
en het geloof van mijn
vader verloochenen.
Zo werd ik heen
en weer geslingerd,
gekweld, wanhopig
en zonder uitzicht. 

Totdat ik rust vond
in uw mysterie
en leerde zien
vanuit uw toekomst:
heel hun bestaan
is op drijfzand gebouwd,
het valt in puin,
ze worden in een
oogwenk vernietigd -
een boze droom
zo vaagt Gij hen weg
uit de wereld der mensen. 

Ik was verbitterd
en opstandig,
ik was gewond
tot in mijn ziel.

Ik was als een redeloos
dier bij U. 

Bij U, ik ben
altijd bij U.
Gij houdt mij vast,
uw hand in mijn hand.
Alles zult Gij
ten goede leiden,
Gij voert mij mee
in uw raadsbesluit.
Wat is de hemel
voor mij zonder U,
wat moet ik op aarde
als Gij niet bestaat?
Al wordt mijn lichaam
ook afgebroken,
al sterft mijn hart,
Gij zijt mijn Rots,
mijn God, de toekomst
die op mij wacht. 

Ver weg van U
is het geen leven,
U ontrouw zijn
is niemand zijn. 

Bij U, mijn hoogste
goed, mijn God,
bij U ben ik
geborgen.

1 Een psalm van Azaf. Wel is God goed voor Israel, voor hen die rein zijn van hart;
2 toch waren bijkans mijn voeten gestruikeld, verschilde het weinig of mijn schreden waren uitgegleden;
3 want ik was afgunstig op de overmoedigen, als ik zag dat het den bozen welging.
4 Immers banden hebben zij niet, gezond en welgedaan is hun lichaam,
5 zij delen niet in de moeite der stervelingen, worden niet geplaagd als gewone mensen.
6 Daarom is hoogmoed hun halssieraad, omhult hen geweldenarij als een kleed.
7 Hun schuld dringt uit het vet naar buiten, de inbeeldingen des harten lopen over;
8 zij spotten en spreken boosaardig, spreken uit de hoogte tot onderdrukking;
9 zij zetten een mond op tegen den hemel, en hun tong beweegt zich op aarde.
10 Daarom verzadigen zij zich met brood, slorpen zij volop water,
11 en zeggen: Hoe zou God het bespeuren, de Allerhoogste er kennis van dragen?
12 Zie, zo zijn de bozen, en immer onbezorgd, worden zij steeds welvarender.
13 Gans en al tevergeefs heb ik mijn hart zuiver gehouden, mijn handen gewassen in onschuld;
14 den gansen dag toch word ik geslagen, elken morgen word ik opnieuw getuchtigd.
15 Had ik gezegd: Zo iets moet ik vertellen--dan zou ik verraad gepleegd hebben aan het geslacht uwer zonen.
16 Daarom dacht ik na om het te begrijpen; ijdele moeite was het in mijn oog.....
17 totdat ik Gods heiligdommen binnentrad en lette op der bozen einde.
18 Ja, gij zet hen op een glibberigen bodem, doet hen vervallen tot puinhopen.
19 Hoe zijn zij eensklaps ter verwoesting geworden, vergaan, omgekomen door verschrikkingen!
20 Als een droom na het wakker worden, zo, Heer, versmaadt gij hun schaduwbeeld, wanneer gij ontwaakt.
21 Toen mijn hart wrevelig werd, ik in mijn nieren een pijnlijken steek voelde,
22 toen was ik reddeloos, onverstandig, was ik bij u als een dier.
23 Maar ik ben voortdurend bij u, gij hebt mijn rechterhand gevat;
24 naar uw raad zult gij mij leiden, en daarna aannemen met ere.
25 Wien anders heb ik in den hemel? en nevens u lust mij niets op aarde.
26 Al bezwijkt mijn vlees en hart, God is voor eeuwig de rotssteen van mijn hart en mijn deel.
27 Want zie, zij die ver van u zijn gaan te gronde, en gij verdelgt alwie van u wegboeleert;
28 maar ik--nabij God te zijn is mij kostelijk; ik heb bij den Heere God mijn toevlucht gezocht om al uw werken te verhalen.

Statenvertaling
1 Een psalm van Asaf. Immers is God Israel goed, dengenen, die rein van harte zijn.
2 Maar mij aangaande, mijn voeten waren bijna uitgeweken; mijn treden waren bijkans uitgeschoten.
3 Want ik was nijdig op de dwazen, ziende der goddelozen vrede.
4 Want er zijn geen banden tot hun dood toe, en hun kracht is fris.
5 Zij zijn niet in de moeite [als] [andere] mensen, en worden met [andere] mensen niet geplaagd.
6 Daarom omringt hen de hovaardij als een keten; het geweld bedekt hen [als] een gewaad.
7 Hun ogen puilen uit van vet; zij gaan de inbeeldingen des harten te boven.
8 Zij mergelen [de] [lieden] uit, en spreken boselijk van verdrukking; zij spreken uit de hoogte.
9 Zij zetten hun mond tegen den hemel, en hun tong wandelt op de aarde.
10 Daarom keert zich Zijn volk hiertoe, als hun wateren eens vollen [bekers] worden uitgedrukt,
11 Dat zij zeggen: Hoe zou het God weten, en zou er wetenschap zijn bij den Allerhoogste?
12 Ziet, dezen zijn goddeloos; nochtans hebben zij rust in de wereld; zij vermenigvuldigen het vermogen.
13 Immers heb ik te vergeefs mijn hart gezuiverd, en mijn handen in onschuld gewassen.
14 Dewijl ik den gansen dag geplaagd ben, en mijn straffing is er alle morgens.
15 Indien ik zou zeggen: Ik zal ook alzo spreken; ziet, zo zou ik trouweloos zijn aan het geslacht Uwer kinderen.
16 Nochtans heb ik gedacht om dit te mogen verstaan; [maar] het was moeite in mijn ogen;
17 Totdat ik in Gods heiligdommen inging, [en] op hun einde merkte.
18 Immers zet Gij hen op gladde plaatsen; Gij doet hen vallen in verwoestingen.
19 Hoe worden zij als in een ogenblik tot verwoesting, nemen een einde, worden te niet van verschrikkingen!
20 Als een droom na het ontwaken! Als Gij opwaakt, o Heere, [dan] zult Gij hun beeld verachten.
21 Als mijn hart opgezwollen was, en ik in mijn nieren geprikkeld werd,
22 Toen was ik onvernuftig, en wist niets; ik was een groot beest bij U.
23 Ik zal dan geduriglijk bij U zijn; Gij hebt mijn rechterhand gevat;
24 Gij zult mij leiden door Uw raad; en daarna zult Gij mij [in] heerlijkheid opnemen.
25 Wien heb ik [nevens] [U] in den hemel? Nevens U lust mij ook niets op de aarde!
26 Bezwijkt mijn vlees en mijn hart, zo is God de Rotssteen mijns harten, en mijn Deel in eeuwigheid.
27 Want ziet, die verre van U zijn, zullen vergaan; Gij roeit uit, al wie van U afhoereert;
28 Maar mij aangaande, het is mij goed nabij God te wezen; ik zet mijn betrouwen op den Heere HEERE, om al Uw werken te vertellen. 
"""
Heer onze Heer, hoe machtig is uw Naam allerwegen op aarde.

Gij die uw majesteit toont aan de hemel,
Gij opent de mond van weerloze kinderen,
en dan klinkt een lied dat uw vijand beschaamt
en brengt Gij uw tegenstanders tot zwijgen.

Als ik kijk naar de hemel, het werk van uw vingers,
de maan en de sterren die Gij hebt bevestigd,
wat is dan de mens, dat Gij aan hem denkt,
de zoon van Adam, dat hij U ter harte gaat.

Toch hebt Gij hem bijna een god gemaakt
en hem met glorie en luister gekroond.
Gij doet hem het werk van uw handen beheren
en alles hebt Gij aan zijn voeten gelegd,

schapen en runderen, alles en alles,
en ook de dieren in het vrije veld,
de vogels van de hemel, de vissen van de zee,
al wat er wandelt op de paden van het water.

Heer onze Heer, hoe machtig is uw naam
allerwegen op aarde.
"""Herder van Israël, hoor ons gebed.
Gij die Jozef leidt als een kudde,
Gij die troont op gevleugelde wezens,
gids en zegen van Benjamin,
God van Efraïm en Manasse,
laat onze ogen uw heerlijkheid zien,
wek uw kracht en kom ons bevrijden.

Wees hier aanwezig,
licht in ons midden,
wees onze heiland,
dat wij herleven.

O Heer, God van de machten, hoe lang nog
keert Gij U woedend af als wij bidden?
Brood van tranen moesten wij eten,
een vloed van tranen liet Gij ons drinken.
Wij zijn de speelbal van onze buren,
wij zijn belachelijk voor onze vijanden.

God van de machten,
licht in ons midden,
wees onze heiland,
dat wij herleven.

Er was een wijnstok in Egypte.
Die hebt Gij uitgegraven, voorzichtig;
andere volken hebt Gij verdreven
om hem te planten in hun grond.
Gij hebt voor hem de bodem bewerkt,
zo kon hij overal wortel schieten
en uitgroeien over het hele land -
en met zijn schaduw bedekt hij de bergen,
en met zijn twijgen de goddelijke ceders;
hij strekt zijn takken uit tot de zee,
zijn ranken tot aan de grote Rivier.

Waarom werd zijn omheining vernield?
Waarom kan ieder die voorbijgaat
hem zomaar leegplukken, breken de zwijnen
los uit het woud om hem te vertrappen,
komt het gedierte en vreet hem kaal?

God van de machten,
wees onze heiland,
wees hier aanwezig,
dat wij herleven.

Zie uit uw hemel neer op deze wijnstok,
zoek hem weer op, en koester het stekje
dat Gij toch eigenhandig geplant hebt.
Die hem als kaphout hebben verbrand,
mogen verteren in het vuur van uw woede.
Maar trek uw handen nooit meer af
van hem die Gij hebt uitverkoren,
de mens, de zoon van uw genade.

Wij zullen nooit meer van U weggaan.
Maak ons nieuw en wij roepen uw Naam:

God van de machten,
wees hier aanwezig,
licht in ons midden,
dat wij herleven.
"""Hoe lieflijk is het waar Gij woont,
Heer God van alle machten.
Ik verlang met hart en ziel
naar de voorhoven des Heren,
heel mijn lichaam schreeuwt en hunkert
naar de levende God.

Iedere vogel vindt een huis,
zelfs de zwaluw bouwt een nest
in de schaduw van uw altaar,
om haar jongen neer te leggen
bij U, Heer van alle machten,
mijn koning en mijn God.

Gelukkig is de man
die mag wonen in uw huis,
dag aan dag zal hij U loven.
Gelukkig zijn de mensen
die in U hun sterkte vinden -
uw wegen zijn in hun hart.

Trekken zij door een dorre vallei,
maken zij haar tot een bronnen-vallei.
Lenteregen zegent het land.
Zo gaan zij voort als kregen zij vleugels,
om U te vinden in uw heilige stad.

Heer van de machten, hoor mijn gebed,
God van Jacob, luister naar mij:
bescherm het volk dat Gij hebt geroepen,
zegen ons die hier voor U staan.

Beter één dag in uw voorhof
dan daarbuiten duizend dagen.
Liever wachten op de drempel
van het huis van onze God
dan mijn leven te verslijten
in de tenten van het kwaad.

De Heer is een zon, de Heer is een schild.
Hij brengt ons tot aanzien, maakt ons bemind.
Wie rechtop en zonder leugen
in het leven staat, hij zal
genade vinden in Gods ogen.

Gelukkig is een mens
die zijn vertrouwen stelt op U,
o Heer God van alle machten.
"""Steeds opnieuw hebt Gij uw land begenadigd,
o God, en ons leven ten goede gekeerd,
al onze zonden hebt Gij bedekt,
alle schuld van uw volk afgenomen,
steeds weer uw dreigementen herroepen
en de brand van uw woede geblust.

Wees ook nu weer genadig voor ons
en niet meer verbitterd, of zoudt Gij voor eeuwig
kwaad op ons blijven, van geslacht op geslacht?
Zoudt Gij ons niet veel liever doen leven.
dat wij ons kunnen verheugen in U.
Geef ons een teken van uw verband,
God van liefde, herstel ons in ere.

Ik wil horen het woord van de Heer.
Vrede is het woord van de Heer,
dat Hij richt tot zijn getrouwen.
Voor wie zich bekeert tot Hem,
heeft de Heer een woord van vrede.
Ja, voor hen is de redding dichtbij,
in hun land zal zijn heerlijkheid wonen.

Genade en trouw ontmoeten elkaar,
recht en vrede omhelzen elkaar.
Trouw ontkiemt als een zaad in de aarde,
gerechtigheid staat als een zon aan de hemel.
Onze God wil zegen schenken
en het land zal vruchten dragen.
Gerechtigheid gaat voor Hem uit als een bode,
vrede volgt Hem, waar Hij gaat.
"""Gij zijt voor ons van geslacht op geslacht,
o Heer, een veilige woonplaats geweest.
Nog voor de bergen waren geboren
en deze wereld in weeën werd gebaard,
sinds mensenheugenis zijt Gij God
en in alle komende geslachten.

Gij doet de mensen tot stof vergaan,
Gij zegt: voorbij, ach kinderen van Adam.
In uw ogen zijn duizend jaren
als de dag van gisteren, weg,
als een uur van waken 's nachts.
Gij vaagt ons uit als een droom in de morgen,
wij zijn als het welig tierende gras:
's morgens komt het omhoog en bloeit,
's avonds is het gemaaid en dood.

Ja, door uw woede komen wij om,
van angst verteren wij, als Gij kwaad wordt.
Want Gij herinnert U onze zonden
en onze geheimen staan U voor ogen -
daarom zijn onze dagen zo nietig,
gaan onze jaren voorbij als een zucht.

Een mensenleven duurt zeventig jaar
of, als wij sterk zijn, tachtig.
Het meeste daarvan is moeite en verdriet
en opeens is het uit en vliegen wij heen.
Wie kan de kracht van uw woede peilen
en wie beseft hoe vreeswekkend Gij zijt?
Leer ons dan zo onze dagen waarderen 
dat wij er wijze mensen van worden.

Hoelang nog moeten wij op U wachten?
O God, kom terug en sluit vrede met ons,
Stel uw genade niet langer uir,
dat wij ons voortaan in U verheugen;
en geef ons zoveel gelukkige dagen
als wij ellende hebben doorstaan.

Toon dat Gij met ons bezig zijt
en laat onze kinderen uw heerlijkheid zien.
Wees met uw mildheid om ons heen,
o Heer, en bestendig het werk van onze handen,
bestendig het werk van onze handen. 
"""Wie woont onder de hoede van de allerhoogste God,
wie overnacht in de schaduw van God almachtig,
hij zegt tot de Heer: mijn toevlucht, mijn vesting,
mijn God, op U stel ik heel mijn vertrouwen.

Hij maakt u los uit de netten van de vogelaar,
Hij houdt van u af de pest van het kwaad,
Hij zal u dekken met zijn vleugels,
onder zijn wieken vindt gij uw veiligheid.

Bij nacht en ontij hebt gij niets te duchten,
vrees ook overdag geen aanval in de rug,
en niet de pest die rondwaart in het donker,
geen koorts die midden op de dag u wil verwoesten.

Al vallen er duizend aan uw zijde,
al storten er tienduizend neer voor uw ogen,
u zal het niet raken, uw God is getrouw,
Hij is een schild, een muur om u heen.

Gij hoeft uw ogen maar op te slaan
om te zien hoe het onrecht wordt gewroken.
Dan zegt gij: de Allerhoogste is mijn toevlucht,
en gij zijt kind aan huis bij hem.

Geen rampen zullen u overkomen,
geen plagen in de buurt van uw tent.
Hij heeft zijn engelen uitgezonden
om u te behoeden op al uw wegen.

Zij zullen u op de handen dragen
en aan geen steen zult gij u stoten.
Gij plant uw voet op de kop van de leeuw,
de slang zult gij vertrappen, de draak zult gij doden.

'Klampt hij zich vast aan Mij. Ik zal hem redden.
Ik maak hem groot, omdat hij mijn Naam belijdt.
Roept hij, Ik antwoord. In angst en nood: Ik met hem,
Ik maak hem vrij en bekleed hem met heerlijkheid.

Leven zal hij, tot in lengte van dagen.
Hij zal mijn redding aanschouwen.'
"""Koning is onze God,
zijn kleed is majesteit
kracht heeft Hij aangetrokken.

Onwankelbaar is de aarde
onwankelbaar vast staat uw troon
Gij zijt van eeuwigheid.

De zeeën verheffen, o Heer,
de zeeën verheffen hun stem
hun vloed van beukende golven.

Machtiger dan de stem van het water
machtiger dan de branding van de zee
zijt Gij, de God van de hemel.

Uw woord is onfeilbaar en trouw
geheiligd worde uw huis,
Heer God, tot in lengte van dagen.
"""I

Wij moeten zingen dat het een aard heeft,
juichen voor God, de rots van ons behoud,
spelend en dankend voor Hem verschijnen
en roepen: 'Hij is een machtige God,
koning boven alle goden.'

De diepten der aarde horen Hem toe,
de hoogste bergen, ze zijn van Hem.
De zee is van Hem, Hij heeft haar gemaakt,
het land is door zijn hand geboetseerd.

Komt en buigt voor Hem in aanbidding,
knielt voor de God die ons allen heeft geschapen.
Hij is onze God, Hij is onze Herder,
en wij zijn het volk, de kudde van zijn hand.

II

Luistert dan heden naar zijn stem:

'Verhardt u niet, zoals gij gedaan hebt
in dat oord van tweedracht, die dag van Beproeving,
toen uw vaders Mij tartten in de woestijn,
en ze hadden toch mijn werken gezien.
Veertig jaar walgde Ik van dit geslacht.
Ik zei: dat volk met zijn dwalende hart,
zij kennen en willen mijn wegen niet.
Daarom heb Ik in mijn woede gezworen:
nooit zullen zij komen in mijn Rust.'
"""Koning is onze God,
alle stranden der aarde
lachen en juichen van vreugde.
Hij woont in nacht en wolken,
gerechtigheid en waarheid
schragen zijn koningstroon.

Vuur gaat voor Hem uit,
brandt zijn vijanden weg.
Het weerlicht over de wereld.
De aarde heeft het gezien.
De aarde kronkelde en steunde
als een barende vrouw.

Bergen smelten als was
waar onze God verschijnt,
heer en meester op aarde.
De hemelen hebben verkondigd,
de heidenen hebben aanschouwd
zijn liefde in volle luister.

Schande over de mens
die zich voor beelden buigt,
die zich beroemt op niets.
Moeten niet alle goden
voor Hem ter aarde buigen,
knielen voor onze God?

Sion heeft het gehoord,
de steden van Juda juicen
dat Gij hun redder zijt.
O allerhoogste God,
meer en groter zijt Gij
dan alle aardse goden.

Alwie boosheid haat
wordt van God bemind.
Hij bewaart hun hart.
Hij zal zijn geliefden
eens voorgoed bevrijden
uit de greep van het kwaad.

Licht is uitgezaaid
voor Gods gerechte vrienden,
vreugde zal ontbloeien.
Vrienden, weest verheugd
en verkondigt zijn Naam
boven alle namen.

"""%a	Weekday, short version	Wed	
%A	Weekday, full version	Wednesday	
%w	Weekday as a number 0-6, 0 is Sunday	3	
%d	Day of month 01-31	31	
%b	Month name, short version	Dec	
%B	Month name, full version	December	
%m	Month as a number 01-12	12	
%y	Year, short version, without century	18	
%Y	Year, full version	2018	
%H	Hour 00-23	17	
%I	Hour 00-12	05	
%p	AM/PM	PM	
%M	Minute 00-59	41	
%S	Second 00-59	08	
%f	Microsecond 000000-999999	548513	
%z	UTC offset	+0100	
%Z	Timezone	CST	
%j	Day number of year 001-366	365	
%U	Week number of year, Sunday as the first day of week, 00-53	52	
%W	Week number of year, Monday as the first day of week, 00-53	52	
%c	Local version of date and time	Mon Dec 31 17:41:00 2018	
%x	Local version of date	12/31/18	
%X	Local version of time	17:41:00	
%%	A % character	%	
%G	ISO 8601 year	2018	
%u	ISO 8601 weekday (1-7)	1	
%V	ISO 8601 weeknumber (01-53)	01~~~~

ddddd	 NEW IN: 5.2.0 Day of year (1 to 365, or 366 for leap years)
0ddddd	 NEW IN: 5.2.0 Zero padded day of year (001 to 365, or 366 for leap years)
DDD	Day of week in full (eg, "Monday")
ddd	Short day of week (eg, "Mon")
dddd	 NEW IN: 5.2.0 Weekday number from 1 through 7, beginning with Monday and ending with Sunday
DD	Day of month
0DD	Adds a leading zero
DDth	Adds a suffix
WW	ISO-8601 week number of year
0WW	Adds a leading zero
MMM	Month in full (eg, "July")
mmm	Short month (eg, "Jul")
MM	Month number
0MM	Adds leading zero
YYYY	Full year
YY	Two digit year
wYYYY	Full year with respect to week number
aYYYY	 NEW IN: 5.1.23 Full year but negative dates are displayed as positive
wYY	Two digit year with respect to week number
{era:BCE||CE}	 NEW IN: 5.1.23 Displays a different string for years that are negative, zero or positive (see below)
hh	Hours
0hh	Adds a leading zero
hh12	Hours in 12 hour clock
0hh12	Hours in 12 hour clock with leading zero
mm	Minutes
0mm	Minutes with leading zero
ss	Seconds
0ss	Seconds with leading zero
XXX	Milliseconds
0XXX	Milliseconds with leading zero
am or pm	Lower case AM/PM indicator
AM or PM	Upper case AM/PM indicator
TZD	Timezone offset
\x	Used to escape a character that would otherwise have special meaning
[UTC]	Time-shift the represented date to UTC. Must be at very start of format string
"""pip installeren
sudo apt update
sudo apt install python3-pip

pip3 install pynput

sudo apt install xclip xsel -y

Een script runnen: python3 /home/jos/pCloudDrive/Python/mh7.py

In Keyboard een shortcut maken, bijv. ctrl-alt-7
om het mh7.py script te draaien.
<$list filter="[tag[quickadd]sort[title]]"><$link to={{!!title}}><$view field="title"/>: <$view field="text"/></$link><br>
</$list>
''Joseph von Trotta, held''<br>
Van Sloveense boerenzoon tot Oostenrijkse edelman. Op het juiste moment op de juiste plaats. Naderhand boos over de manier waarop zijn heldendaad in de geschiedenisboeken terecht komt.  Op zijn verzoek wordt de passage geschrapt uit de schoolboeken.

''Franz von Trotta, districtshoofd''<br>
De zoon van de held belichaamt het geordende rijk. Hij vereenzelvigt zich zo sterk met het rijk dat hij fysiek op de keizer gaat lijken, en tegelijk met de keizer zijn laatste adem uitblaast. Hij is streng, veeleisend en rechtlijnig, maar gaat uiteindelijk zijn zoon achterna en bepleit diens lot bij de keizer zelf. 

''Carl Joseph von Trotta, luitenant''<br>
De held van het boek. Joseph Roth heeft uitdrukkelijk gezegd: de luitenant, dat ben ik zelf. Er zijn dan ook veel parallellen in de levensgeschiedenis van de luitenant en de schrijver. Als lezer denk je enige tijd dat Carl Joseph een brave zoon van zijn vader is, die zijn best doet om diens dromen te doen uitkomen, namelijk carrière maken in het leger en misschien wel weer een held op het slagveld worden. Maar terwijl je dat als lezer nog denkt, heeft hij al een geheime relatie aangeknoopt met mevrouw Slama, die helaas veel te vroeg in het kraambed sterft. Carl Joseph blijft zich daar schuldig over voelen, evenals over de dood van dokter Demant, de echtgenoot van de volgende geheime liefde van Carl Joseph. Hij maakt een eind aan de droom van zijn vader door over te stappen van de cavalerie naar de infanterie en te verhuizen naar een garnizoensplaats aan de rand van het rijk. Daar daalt hij af in de leegheid van het zinloze soldatenleven en raakt hij definitief aan de drank. Zijn dood in de intussen uitgebroken oorlog is niet heldhaftig maar getuigt wel van opofferingsgezindheid als hij water voor zijn compagnie gaat halen en daarbij wordt neergeschoten.

''Jacques, bediende''<br>
Een van de mooiste rollen in het boek. Volledig getypeerd in de volgende zinnen, door Benno Barnard in zijn Huizingalezing in 2002: "Als de afgeleefde Jacques dan ten slotte op sterven ligt, betreedt Von Trotta voor het eerst het huisje van zijn dienaar: "Het districtshoofd ging op een stoel naast het bed zitten en zei: 'Ik heb zoëven van de dokter gehoord dat het nogal meevalt. Het zal een verkoudheid zijn!' En dan volgt de subliemste zin uit de romanliteratuur die ik ken: "Jawel, meneer de baron!' antwoordde Jacques en hij deed onder het dekbed een zwakke poging zijn hakken tegen elkaar te slaan.""

''Franz Joseph I, keizer''<br>
De keizer is de enige historische figuur in het boek. Wat de vraag oproept in hoeverre De Radetzkymars een historische roman genoemd kan worden. Het korte antwoord is nee. Die conclusie kun je trekken uit het feit dat van keizer eigenlijk geen enkele gedocumenteerde handeling in het boek is opgenomen. De episode op het slagveld van Solferino, waarmee het boek begint, is om te beginnen al niet historisch, maar daarom niet minder goed bedacht. Verder weten we dat Roth zelf in zijn verhalen ook nogal losjes omsprong met zijn eigen levensgeschiedenis. De keizer is overigens in het boek wel weer een prachtig uitgebeeld karakter. Hoofdstuk 15 is zelfs geheel aan de keizer gewijd, aan zijn bezoek aan de garnizoensstad waar Trotta is gelegerd. Het hoofdstuk begint aldus (zie ook de afbeelding): "De keizer was een oude man. Hij was de oudste keizer van de wereld. Rondom hem liep de dood in een kring, in een kring en maaide en maaide. De hele akker was reeds leeg, alleen de keizer stond er nog en wachtte, als een vergeten zilveren halm. Zijn lichte, harde ogen keken reeds vele jaren verloren in een verloren verte. Zijn schedel was kaal als een gewelfde woestijn. Zijn bakkebaarden waren wit als een vleugelpaar van sneeuw. De rimpels in zijn gezicht waren een warrig struikgewas, waarin de jaren huisden. Zijn lichaam was mager, zijn rug een weinig gebogen. Thuis liep hij met kleine trippelpasjes. Maar zodra hij op straat kwam, probeerde hij zijn dijen hard te maken, zijn knieën lenig, zijn voeten licht, zijn rug recht."

Een prachtig moment wil ik er even bijhalen.

"De keizer stond op. Zijn barbier kwam. Elke ochtend stak hij hem zijn kin toe, zijn bakkebaarden werden bijgeknipt en netjes geborsteld. Bij zijn oorschelpen en voor zijn neusgaten kietelde het koele metaal van de schaar. Soms moest de keizer niezen. Hij zat vandaag voor een kleine, ovale spiegel en volgde met aangename spanning de bewegingen van de magere handen van de barbier. Na elk haartje dat viel, na elke haal van het scheermes en elke streek van de kam of de borstel sprong de barbier achteruit en fluisterde: ‘Majesteit!’, met bevende lippen. De keizer hoorde dat gefluisterde woord niet. Hij zag alleen de lippen van de barbier voortdurend bewegen, hij durfde niets te vragen en dacht ten slotte dat de man een beetje zenuwachtig was. ‘Hoe heet u?’ vroeg de keizer. De barbier – hij bezat de rang van korporaal, hoewel hij pas een halfjaar bij de landweer was, maar hij diende zijn kolonel onberispelijk en mocht zich verheugen in de gunst van al zijn superieuren – was met één sprong bij de deur, elegant zoals zijn vak het vereiste, maar ook militair, het was een sprong, een buiging en een verstarring tegelijk, en de keizer knikte goedkeurend. ‘Hartenstein!’ riep de barbier. ‘Waarom springt u zo?’ vroeg Franz Joseph. Maar hij kreeg geen antwoord. De korporaal liep weer aarzelend naar de keizer toe en voltooide zijn werk met haastige handen. Hij wou dat hij ver weg en weer in het kamp was. ‘Blijf toch hier!’ zei de keizer. ‘Ach, u bent korporaal! Allang in dienst?’ – ‘Een halfjaar, Majesteit!’ fluisterde de barbier. ‘Zozo! En nu al korporaal? In mijn tijd,’ zei de keizer, alsof hij een oudgediende was, ‘ging het niet zo vlot! Maar u bent ook wel een kranige soldaat. Bent u van plan in het leger te blijven?’ Barbier Hartenstein had vrouw en kind en een goedlopende zaak in Olmütz, hij had al een paar maal geprobeerd gewrichtsreumatiek te simuleren om spoedig ontslagen te worden. Maar hij kon tegen de keizer geen nee zeggen. ‘Jawel, Majesteit!’ zei hij en op hetzelfde ogenblik wist hij dat hij zijn hele leven had verknoeid. ‘Dan is het goed. Dan bent u van nu af aan sergeant-majoor! Maar doet u niet zo zenuwachtig.’"

''Graaf Chojnicki, Poolse graaf''<br>
Graaf Wojciech Chojnicki, een man van de wereld, veertig jaar oud maar leeftijdloos, reserveritmeester, vrijgezel, luchthartig en zwaarmoedig, hield van paarden, van alcohol, van het gezelschap van anderen, van lichtzinnigheid en ook van ernst. De winter bracht hij door in de grote steden en in de speelzalen aan de Rivièra.

In zijn ruime landhuis zorgt hij voor vertier voor de lamlendig soldaten die helemaal opveren bij het vooruitzicht van weer een feestavond bij de graaf. 

"Ongelovig, spotlustig, onbevreesd en zonder aarzelen placht Chojnicki te beweren dat de keizer een seniele oude man was, de regering een troep sukkels, de Rijksraad een verzameling goedgelovige, pathetische idioten, de autoriteiten corrupt, laf en lui. De Duitse Oostenrijkers waren walsendansers en wijnzangers, de Hongaren stonken, de Tsjechen waren geboren schoenpoetsers, de Roethenen verkapte en verraderlijke Russen, de Kroaten en Slovenen, die hij ‘Krowoten en Schlawiner’ noemde, borstelmakers en kastanjepoffers, en de Polen, waartoe hijzelf behoorde, pluimstrijkers, kappers en modefotografen. Na elke terugkeer uit Wenen en de andere delen van de grote wereld die zijn speelweiden waren, placht hij een sombere toespraak te houden, die ongeveer als volgt luidde: ‘Dit rijk moet ten onder gaan. Zodra onze keizer de ogen sluit, vallen we in honderd stukken uiteen. De Balkan zal machtiger blijken dan wij. Alle volkeren zullen hun smerige, kleine staatjes stichten en zelfs de joden zullen in Palestina een koning uitroepen. In Wenen stinkt al het zweet van de democraten, ik kan het op de Ringstraße niet meer uithouden. De arbeiders hebben rode vlaggen en willen niet meer werken. De burgemeester van Wenen is een gedweeë huismeester. De papen lopen al mee met het volk, in de kerken wordt in het Tsjechisch gepreekt. In het Burgtheater worden liederlijke, joodse stukken gespeeld en elke week wordt een Hongaarse fabrikant van closetpapier baron. Ik zeg u, mijne heren, als er nu niet geschoten wordt is het afgelopen. Wij zullen het nog meemaken!"

Een Amerikaanse recensent merkt bij de bespreking van een in het Engels vertaald brievenboek van Roth op, dat Roth zelf deze vervulde tegenover zijn vriend en hulp Stefan Zweig die zelfgenoegzaam van mening was dat het allemaal wel los zou lopen met de opkomst van het nationaal-socialisme. 
Voormalig voetballer en journalist voor een Parijse krant, Raymond Rambert, komt in Oran vast te zitten als de pest uitbreekt en de poorten worden gesloten. Hij probeert weg te komen, eerst bovengronds en later ondergronds, tevergeefs. <p>

Rambert is in de roman de verpersoonlijking van la séparation, de scheiding, een hoofdthema in boek, volgens Camus zelf. Rambert en Rieux zijn beiden gescheiden van hun geliefden. Alle inwoners van Oran voelen zich bannelingen in hun eigen stad. Zij wantrouwen elkaar en voelen zich alleen in hun lijden. Alleen zij, die de werkelijkheid en hun eigen ballingschap aanvaarden, maar er ook tegen blijven vechten, lijken in staat een persoonlijk gevoel van vrijheid te herwinnen. <p>

Dat overkomt Rambert. Na enkele vluchtpogingen kiest hij ervoor om te blijven en solidair te worden met Rieux en Tarrou. Hij gaat Rieux helpen en en kiest voor zijn geweten door zijn keuze voor een moreel hogere loyaliteit. Hij gaat de quarantaineplaatsen organiseren, eerst in het hotel en later ook in het stadion en op andere plaatsen.  Juist in die strijd weet hij vast te houden aan zijn dromen en zijn hoop op terugkeer naar Parijs en zijn geliefde. Hij houdt zijn beelden van Parijs en zijn geliefde levend. Na het einde van de pest komt zijn geliefde naar Oran en sluiten ze elkaar in de armen. 
\define currentFilter()
[<currentTiddler>!has[draft.of]] +[sort[title]]
\end
\define currentTiddlerFilename()
$(currentTiddler)$.tid
\end
\define actionDownload()
<$list filter="$(currentFilter)$">
<$action-sendmessage $message="tm-download-file" $param="$:/core/templates/exporters/TidFile" exportFilter=<<currentTiddler>> filename=<<currentTiddlerFilename>> />
</$list>
\end

<$button actions=<<actionDownload>> >
download
</$button>
\define currentFilter()
[<currentTiddler>!has[draft.of]] +[sort[title]]
\end
\define currentCaption()
(<$transclude field="caption" mode="inline" class="" />)
\end
\define currentTitleText()
<br><$transclude field="titletext" mode="inline" class="" />
\end

<ul>
<$list filter=<<currentFilter>> >
  <$set name="captionDisplay" filter="[<currentTiddler>has[caption]]" value=<<currentCaption>> emptyValue="">
  <$set name="titleTextDisplay" filter="[<currentTiddler>has[titletext]]" value=<<currentTitleText>> emptyValue="">
  <li>
    <$link to=<<currentTiddler>> >
      <$transclude field="title" mode="inline" class="" />
    </$link>
    <<captionDisplay>>
    <<titleTextDisplay>>
  </li>
  </$set>
  </$set>
</$list>
</ul>
''12-31-2020''

* Upgraded Stroll site and empty version of Stroll to TiddlyWiki version 5.1.23.
* Updated $:/plugins/wikilabs/link-to-tabs and $:/plugins/flibbles/relink to most recent versions.
* Updated [[$:/.giffmex/ui/EditTemplate]] because it was causing the delete and close buttons to stop working in edit mode after the upgrade to 5.1.23.
* Added the editor-autolist plugin by Saq Imtiaz, which makes numbered lists and bulleted lists easier to use. Hit enter to create a new line, tab to indent, shift+tab to unindent, and enter (twice) to escape list.  $:/plugins/sq/editor-autolist
* Added a new way to view references - as tabs!: [[$:/.giffmex/ViewTemplate/refstabs]] Try it out from the pink eyeball tab.
* Added [[Remove Stroll from your TW]] and edited [[Welcome to Stroll]] so it appears in the tabs.
* Still working on a fix for the non-functioning Close others and Fold others buttons in the more menu.


''8-8 -2020''

*Added update to the Stories plugin to fix the bug with the titles. If you have been keeping up with prior updates, you should be able to drag $:/plugins/sq/Stories and  $:/.giffmex/sidebar/advancedconfig to your file to fix it. If you encounter more problems, you may have an older version of Stroll, and you will need to drag the following tag pill to your file to update all Stroll tiddlers. {{$:/giffmex/stroll||$:/core/ui/TagTemplate}}

''8-3-2020''

*Added te new update to the Stories plugin. Now you can:
**Adjust the ratio between the two story columns (with a slider in the gear tab of the sidebar)
**Add a custom viewtemplate or edittemplate to your tiddlers (see [[$:/plugins/sq/Stories/changelog]], 1.01)
*To update, drag these links to your file: 
**[[$:/.giffmex/sidebar/advancedconfig]] (the slider added to the sidebar tab)
**[[$:/.giffmex/ViewTemplate/title]] (contained errors related to the sidebar tab)
**[[$:/core/ui/ViewTemplate/title]] (contained errors related to the sidebar tab)

''6-3-2020''

*Fixed an oversight which kept autocomplete from working. If your autocomplete doesn't work, drag [[this link|$:/config/EditorTypeMappings/text/vnd.tiddlywiki]] into your file. Updated the troubleshooting tab accordingly. Thanks to Fact Droid for catching this!

''5-27-2020''

*Added to the troubleshooting tab about ~TiddlyMap.

''5-21-2020''

*Now the only non-system tags will be yours. The others have been turned into system tags.
*Added the <<icon {{$:/core/images/chevron-down}}"">> button in editing view. Clicking this button reveals a dropdown which allows you to hide editing sections as desired, and expand the text area. This gives you more space and less clutter when writing and editing.
*Updated [[Advanced stuff]] [[Add Stroll to your TW]] accordingly.

''5-19-2020''

*Added instructions on updating Stroll
*Untagged 'stroll' from $:/DefaultTiddlers so that adding Stroll to an existing ~TiddlyWiki file will not overwrite the user's default tiddlers.

''5-16''

* Added a [[Troubleshooting]] section with hacks for Markdown, ~TiddlyMap, and iOS
* New to the [[Goodies file|https://giffmex.org/stroll/goodies.html]]: a new way to view references!

''5-14''

*Reverted the animation duration to the default 400. This was an unnecessary part of Stroll. Thanks to Faldrian for pointing this out, to keep Stroll lean and as much like a standard ~TiddlyWiki as possible.

''5-10:''

*Fixed description fields for the new-note-here buttons (thanks Gerrit Beine!)
*Put link to Muffin back in the pink eyeball tab (thanks Mark Krieg!).
*Added two new goodies to the [[Goodies file|https://giffmex.org/stroll/goodies.html]].

''5-9:''

*Changed Stylesheet tiddler to $:/.giffmex/.Stylesheet4Stroll, and removed the tc-sidebar-scrollable line, since it was conflicting with the Stories plugin and user tweaks. (It had been for the parallel tab in ~TiddlyBlink.)

*Added documentation for disabling autocomplete for iOS, etc, and additional explanation about importing the 'blinks' tag pill to one's own ~TiddlyWiki file.

*Added the present 'Updates to Stroll' tab.
<$list filter="[!has[draft.of]tag{!!title}sort[tocnr]]"><$link to={{!!title}}><$view field="title"/><br>
</$link></$list>
"""ik geloof in een rivier 
die stroomt van zee naar de bergen 
ik vraag van poëzie niet meer 
dan die rivier in kaart te brengen
ik wil geen water uit de rotsen slaan 
maar ik wil water naar de rotsen dragen 
droge zwarte rots 
wordt blauwe waterrots
maar de kranten willen het anders 
willen droog en zwart van koppen staan 
werpen dammen op en dwingen 
rechtsomkeert

© Remco Campert 
uit: 'Vogels vliegen toch', 
Uitgeversmaatschappij Holland 1951 
de windroos no 14
"""
1

Het was een geweldig feest
er stierven drie mensen
een van ouderdom
een door alcohol
een omdat hij vocht met de slang

O maar er werd gezongen
gedanst en gedronken!
De pijp ging rond en de pruim
oude verhalen werden nieuw
opa´s stonden in hoog aanzien
die zeiden dat het zo altijd was geweest
en altijd zo zou blijven
en de kinderen bleven erbij
tot ze niet meer konden.
O maar er werd gedanst
en gevrijd bij het leven
een dag een nacht en een dag!

Tot het zout op was
de kruiken leeg
en de schelpen door de kroegbaas
weer afgepakt
toen wankelden ze lachend de berghelling op
sliepen hun roes uit in het gras
een nacht en een lange dag

Terwijl ze sliepen
reden
beladen met het werk van hun handen
in kratten en balen verpakt
in bewaakte colonnes
de vrachtwagens naar de stad

de stad van de banken en de congressen
de stad van de krotten en open riolen
de stad van de mooie dames met chauffeur
de stad van de hoeren voor een knaak
de stad waar iedereen verdient het zout in de pap
iedereen die een vinger in de pap heeft
de stad waar ze altijd van droomden
de stad die ze nooit zouden zien.

2

Verzet begint niet met grote woorden
maar met kleine daden

zoals storm met zacht geritsel in de tuin
of de kat die de kolder in z´n kop krijgt

zoals brede rivieren
met een kleine bron
verscholen in het woud

zoals een vuurzee
met dezelfde lucifer
die de sigaret aansteekt

zoals liefde met een blik
een aanraking iets dat je opvalt in een stem

jezelf een vraag stellen
daarmee begint verzet

en dan die vraag aan een ander stellen.

3

iemand weigert de schelp
iemand houdt op met dansen
iemand smijt de kroegbaas de kruik in ´t gezicht
iemand zegt opa de pest met je oude verhalen
iemand wil het alfabet leren

iemand pakt de opzichter z´n zweep af
iemand steelt een geweer
iemand zegt dit is mijn grond
iemand staat zijn dochter niet af aan de landheer
iemand antwoordt niet met twee woorden

iemand houdt zijn graan verborgen
iemand viert geen feest als de vrachtwagens komen
iemand spuugt op de grond als hij de soldaten ziet
iemand snijdt de banden door
iemand verschuilt zich in het woud

iemand droomt niet meer
iemand richt zich op
iemand is voor altijd wakker
iemand stelt de vraag
iemand verzet zich

en dan nog iemand
en nog iemand
en nog.


Remco Campert
uit Betere tijden
De Bezige Bij Amsterdam 1970
"""Winter nadert. 
Ik voel het aan de lucht 
en aan de woorden, die ik schrijf. 
Alles wordt klaarder: de straat 
is tot aan zijn eind te zien. De woorden 
hebben geen eind. 

Ik ben dichter 
bij de waarheid in december 
dan in juli. Ik ben dichter 
bij gratie van de kalender, lijkt het 
soms wel. Toch, de woorden niet, de steden 
nemen hun eind. 

Als er ergens, 
zomer en winter, maar een ster 
brandde, die een fel wit licht gaf. 
Ik zeg een ster, maar het 
mag alles zijn. Als het maar brandt en 
woorden warmte geeft. 

Maar ik geloof 
niet, en 's winters nog minder, aan 
zo'n ster. In woorden moet ik geloven. 
Maar wie kan dat? Ik ben 
een stem, stervend en koud, vol 
winterse woorden. 

Remco Campert 
Uit: Berchtensgaden,
De bezige bij, Amsterdam 1953  
"""Poëzie is een daad 
van bevestiging. Ik bevestig 
dat ik leef, dat ik niet alleen leef. 

Poëzie is een toekomst, denken 
aan de volgende week, aan een ander land, 
aan jou als je oud bent. 

Poëzie is mijn adem, beweegt 
mijn voeten, aarzelend soms, 
over de aarde die daarom vraagt. 

Voltaire had pokken, maar 
genas zichzelf door o.a. te drinken 
120 liter limonade: dat is poëzie. 

Of neem de branding. Stukgeslagen 
op de rotsen is zij niet werkelijk verslagen, 
maar herneemt zich en is daarin poëzie. 

Elk woord dat wordt geschreven 
is een aanslag op de ouderdom. 
Tenslotte wint de dood, jazeker, 

maar de dood is slechts de stilte in de zaal 
nadat het laatste woord geklonken heeft. 
De dood is een ontroering.  

Uit: Het huis waarin ik woonde. 
© Amsterdam, 1955.
"""
Spiritual

Ik zal gaan
o met genoegen zal ik gaan
met diepe vreugde en trompetgeschal
ik zal gaan

Als jij roept zal ik gaan
mijn werk, mijn eten en mijn handen 
zal ik laten staan
als jij roept zal ik gaan

Als jij roept in de morgen
in de middag in de avond
in mijn dromen in mijn waken
als jij roept zal ik gaan

Ik zal gaan
al breken ze mijn benen
al moet ik kreupel gaan.
Engelen binden dan mijn wagen
vleugels aan

Ik zal gaan 

© Remco Campert 
Uit: Een standbeeld opwinden 
Amsterdam: De Bezige Bij 1952 
"""
Voor Deborah
 
Als ik doodga
hoop ik dat je erbij bent
dat ik je aankijk
dat je mij aankijkt
dat ik je hand nog voelen kan.
 
Dan zal ik rustig doodgaan
Dan hoeft niemand verdrietig te zijn
Dan ben ik gelukkig
To remove Stroll from to your own ~TiddlyWiki, 

# Open  $:/AdvancedSearch 
# Go to the 'Filter' tab
# Type or paste in `[tag[$:/giffmex/stroll]]`
# Hit the red garbage can button and click Delete these tiddlers. Save changes.
This great trick was shown to the tiddlywiki google group by [[Alberto Molina|https://groups.google.com/forum/#!topic/tiddlywiki/OCntQ79DuwM]]. I enhanced it a bit.

|!Search tag: | <$edit-text tiddler="$:/temp/RenameTags/search" tag="input" type="text"/> |
|!Replace by: | <$edit-text tiddler="$:/temp/RenameTags/replace" tag="input" type="text"/> |

---
<$reveal type="nomatch" text="" state="$:/temp/RenameTags/replace">

!First step
!!//Apply the tag <$tiddler tiddler={{$:/temp/RenameTags/replace}}><$transclude tiddler="$:/core/ui/TagTemplate"/></$tiddler> to the following tiddlers//
<$list filter="[!has[draft.of]tag{$:/temp/RenameTags/search}!tag{$:/temp/RenameTags/replace}sort[created]]">
<$checkbox tag={{$:/temp/RenameTags/replace}}> <$link to={{!!title}}><$view field="title"/></$link></$checkbox><br/>
</$list>
</$reveal>

<$reveal type="nomatch" text="" state="$:/temp/RenameTags/search">

!Second step
!!//Remove the tag <$tiddler tiddler={{$:/temp/RenameTags/search}}><$transclude tiddler="$:/core/ui/TagTemplate"/></$tiddler> from the following tiddlers//
<$list filter="[!has[draft.of]tag{$:/temp/RenameTags/search}tag{$:/temp/RenameTags/replace}sort[created]]">
<$checkbox tag={{$:/temp/RenameTags/search}}> ~~<$link to={{!!title}}><$view field="title"/></$link>~~</$checkbox><br/>
</$list>
</$reveal>
Lijstje van vijf

|^ <$checkbox field='163458' checked=1></$checkbox>|<<adv "Conclusies nalopen">>|
|^ <$checkbox field='163520' checked=1></$checkbox>|<<adv "Punten updaten">>|
|^ <$checkbox field='163533' checked=1></$checkbox>|<<adv "Punten uitschrijven">>|
|^ <$checkbox field='163549' checked=1></$checkbox>|<<adv "Review versturen">>|

|^16:36|Nu artikel heropenen.|
|^16:37|Nu Conclusies nalopen: p. 21|
|^16:43|p. 22|
|^16:49|p. 23|
|^16:52|p. 24|
|^17:04|p. 25|
|^17:08|p. 26|
|^20:38|Punten ophalen|
|^21:01|Punten uitschrijven|
|^22:26|OK klaar en verstuurd!|

"""
Conclusies:
RQ1 Characterizing Interventions for Gender Equity in Computing
Weinig longitudinal interventions
Scope: 1 site (??) geen onderzoeksvraag
Duur: Meestal een jaar of meer. Hoe langer de duur, hoe meer kans op succes.
Evaluations: meestal kwantitatief.
Zeer onbevredigend antwoord op eerste onderzoeksvraag!!

RQ2 Goals of Conputer Interventions for Gender Equity
Improving Computing Content: 70%. Doel meestal bereikt maar hoe dat komt later.
Improve Social Support: 37%
Increase Access to Computing: 50% Beurzen etc.

RQ2 Did these Interventions achieve their intended outcomes?
Gender parity in computing performance. 45% heeft dit gemeten, daarvan bereikte 63% het doel. Dat is dus (= round(4.5 * 6.3, 0) =)% van het totaal aantal studies.
Increases enrolment: 25% meet dit, daarvan 75% succesvol, (= round(2.5 * 7.5, 0) =)%.
Motivational momentum: succes: (= round(6.67*7.19, 0) =)%. Maar Improved Persistence: (= round(2.5 * 7.5, 0) =)%.
Social Momentum: (= round(3.44*7.06, 0) =)%.
Structural Momentum (cursussen): (= round (100*10/48, 0) =)%. (= round(2.92*7.14, 0) =)%
Global Perspective: kwart buiten VS. Nederland?

Kort en goed: globale resultaten, teveel geteld, te weinig voorbeelden. Resultaten in het algemeen teleurstellend. Geen onderzoeksvragen. 

Punten:
1. Inleiding: teveel stellingen, te weinig toewerken naar echte onderzoeksvragen, literatuur deels gedateerd. Zie p. 3 onderaan. p. 13 midden. In mijn context (NL) afgelopen twintig jaar erg veel veranderd. Literatuur voor 2010 nauwelijks relevant. 
2. Momentum theory: geen theorie maar een beschrijving. Betekenis van Figuur 1?
3. Inclusie/exclusie criteria: wat betekent "appropriate" in Figuur 2?
4. Resultaten: globale resultaten, teveel geteld, te weinig voorbeelden. Resultaten in het algemeen teleurstellend. Geen onderzoeksvragen. Zie conclusie in Abstract: Findings reveal that both the structure and aims of the interventions influence their efficacy.
5. Global perspective: geen Europese invalshoek. 
6. Leesbaarheid: veel slordigheden in de tekst. Zie p. 7 bovenaan en onderaan. p. 9 midden. p. 23

Manuscript EDUREV-D-21-00718, entitled "Educational Interventions to Increase Gender Equity in Computing from 2000 to 2020: A Systematic Literature Review", entails a review of interventions in primary, secondary and university education, aimed at increasing gender equity in computer science subjects and curricula. The authors make a strong case, arguing that gender differences in computer science education are still, anno 2021, a major problem. This argument supports the relevance of the topic for the Journal. However, the descriptive nature of the theoretical basis of the study makes it hard to arrive at substantial conclusions. Therefore, the scientific contribution of the study is limited. My advice is to reject the paper. The comments below may clarify my advice and may help the authors to reconsider the paper.

1. The (too) lengthy Introduction contains a lot of statements, which do not contribute to a focused explanation of research questions. In fact, the two research questions, (1) What are the characteristics of interventions that make computing environments more inclusive to girls and/or women? and (2) To what extent are these characteristics associated with positive change in gender equity?, are rather descriptive and do not help the authors to arrive at an in-depth analysis of the critical success factors of attempts to increase gender equity in computer science education. These research questions could have been formulated without taking the theoretical basis of the study, as put forward in the Introduction, into consideration. 

Part of the literature, used in the Introduction, seems outdated. In the context of this reviewer (the Netherlands) a lot has changed during the last 20 years as far as gender equity in STEM disciplines in secondary and university education is concerned. I was surprised by the following line of argument on p. 13: "Girls may be socialized to choose professions benefitting society; until recently, computer science and programming have been constructed as lacking in this regard (Fong et al., 2016). Thus, women may expect to find less value to computing careers (Weinberger, 2004; Wilson, 2002; Beyer et al., 2004)." This does not sound familiar to this reviewer. Statements like this should be underpinned by (1) data, and (2) a clear description of the cultural context for which they are supposed to be valid. 

2. The momentum theory, as presented in Figure 1, is better characterized as a description of factors (curricular, social, motivational, etc.) influencing the participation of female and male students in STEM disciplines, than an attempt to explain the gap between girls and boys. 
It is not clear what the meaning of the overlapping circles, the circular arrows, the house, the door and the arrow in the figure is. 

3. Figure 2 contains a list of inclusion/exclusion criteria used to select the sample of studies for the review. The figure contains the word "appropriate" in quality criterion 2 and 3. The meaning of quality criterion 3, "Does the method use appropriate for addressing the purpose or objective?", is unclear. But, more importantly, the meaning of the word "appropriate" is unclear, which makes it difficult to replicate the selection procedure. 

4. The results are presented in very general terms, with a lot figures and percentages, which do not make much sense, without providing more content, examples of good practices. The lack of clear research questions is felt here. The data lead to a rather general conclusion, as formulated in the Abstract: "Findings reveal that both the structure and aims of the interventions influence their efficacy". This conclusion is definitely true but does not provide much insight into the critical success factors which do contribute to increasing the participation of female students in STEM disciplines, particularly computer science. More qualitative data, including examples, might inspire the reader. 

Moreover, many figures are rather disappointing. Gender parity in computing performance has been reported in only 28% of the total of 48 studies included in the sample. Similar outcomes are reported with respect of various factors (motivational, social, structural, etc.) influencing gender differences in participating in computer science programs. It might be equally worthwile to explore causes for failure in attempts to increase female participation. 

5. The current manuscript contains inaccuracies which sometimes make the text difficult to understand. Examples are "We include that the teaching and learning, curricular, and motivational domains" (p. 7), "Self-efficacy and skills development is a precursor for computing major choice and career aspirations (Mau & Li, 2018; Sáinz & Eccles, 2012)" (p. 9), "Over 2/3 of interventions assessed had social support as a goal (n=18; 37.5%), and 72.2% (n=13) achieved it" (p. 23).
Today is 30th, juni 2021
View Letter
Date:	Apr 20, 2021
To:	********
From:	"Educational Research Review" edurev.journal@elsevier.com
Subject:	Decision on submission to Educational Research Review
Manuscript Number: EDUREV_2020_738   

A bottom-up Methodological Framework for Systematic Reviews and Scoping Reviews in Higher Education Research

Dear ******** ********,

Thank you for submitting your manuscript to Educational Research Review.

I have completed my evaluation of your manuscript. The reviewers recommend reconsideration of your manuscript following major revision. I invite you to resubmit your manuscript after addressing the comments below. Please resubmit your revised manuscript by Jul 19, 2021.

When revising your manuscript, please consider all issues mentioned in the reviewers' comments carefully: please outline every change made in response to their comments and provide suitable rebuttals for any comments not addressed. Please note that your revised submission may need to be re-reviewed. 

To submit your revised manuscript, please log in as an author at https://www.editorialmanager.com/edurev/, and navigate to the "Submissions Needing Revision" folder.  

Educational Research Review values your contribution and I look forward to receiving your revised manuscript.

Kind regards,     
Professor Raija Hämäläinen   
Associate Editor  

Educational Research Review

Editor and Reviewer comments:



Reviewer #1: The authors take up the fact that at present in different disciplines—among them the field of higher education—both systematic reviews (SYR) and scoping review (SCR) are accomplished, but unfortunately thereby heterogeneity in the methodological approaches prevails. Therefore, they aim to develop a methodological framework for the field of higher education. This framework contributes to standardise the methods applied and consequently ensures high quality research. Furthermore, authors aim to compare SYR and SCR.
* The fact of heterogeneity in methodology applied is well addressed. However, in their line of reasoning it remains unclear why and in what respects the authors are of the opinion that the field of higher education is specific and needs an own framework. I could not find comprehensive arguments in the text.
* In addition, I miss arguments to support the assumption that standardisation is helpful.
* The authors aim to develop a usable bottom-up realistic methodological framework for carrying out SCR und SYR. Here, some comments/questions/critics should be mentioned:
o The question arises why a bottom-up approach is used and whether a bottom-up framework can and should serve as prescription or norm for further reviews to be carried out. To put it more generic: Can an abductively gained conclusion be used as methodological norm? Why? If the intention is just to provide a framework the authors should elaborate on how the framework should be used.
o How can the authors ensure high quality of the methodology/framework? The argument that only publications in ranked peer-reviewed journals were included in the study seems a bit weak.
o Can the authors reflect the bottom-up framework in light of a theory? If so, it would substantiate results.
* The authors themselves conducted a (meta)review. This approach is comprehensible and the steps are well documented.
* Similarities and differences between SCR and SYR are pointed out adequately. The overview in the appendix is helpful.
* The thematic analysis really makes sense. Coding examples in the main text would have fostered comprehensibility. However, I appreciate the table in the appendix.
* I would have been interested in problems while synthesizing data. I would have appreciated example in the main text body.
* The feedback of experienced reviewers is nice to have, however bears the danger of randomness.
* The results are interesting as the reader receives an overview of the state-of-the-art in accomplishing reviews in higher education. In my view the article is very beneficial in that sense. The authors state that review approaches in higher education are somewhat heterogeneous. Against this background I would like to raise some questions:
o Is heterogeneity problematic? Why? What is the reason for lack of consensus in reviews? Possibly, heterogeneity results from different objectives of the reviews.
o What about the option that researchers synthesize some steps under one header and do not mention all substeps though carried out?
o Is your recommendation for future reviews to carry out all steps you found and documented? Or is it to focus on the most commonly mentioned steps, and skip the others? Dependent of what? If future authors of reviews can select steps out of the framework dependent on research objectives, heterogeneity will be once again a topic to be discussed. In light of this consideration I wonder how high quality reviews can be assured.
o A Delphi study may help answering these questions. A Delphi study could be used for validation.
* After reading the article I do not know why the framework is field specific, and why it should be field specific.
* Suggesting a framework as prescription or norm seems currently too much. Such a framework must be better validated and justified. However, the article is well suited and beneficial as a meta review. Therefore, the authors should be modest in their claim and better argue from the perspective of conducting a meta review on methodology aiming at describing the state of the art.



Reviewer #2: Manuscript EDUREV_2020_738 contains a valuable review of reviews in the domain of higher education research. The proposed framework is a helpful tool to conduct review studies. In this way, the paper contributes to improving the quality of reviewing research in higher eduation. Therefore, I advise to accept the paper, although I do have some comments which may lead to revisions of the manuscript.

The authors identify three aims for their paper. The first has to do with initiating a dialogue "pertaining to the suitability of borrowed research synthesis guidelines for higher education research". I am not sure whether this aim has been attained. In fact, the question whether guidelines obtained from the domain of medical research are suitable for the domain of higher education is never explicitly addressed, for instance by comparing review procedures from both areas. Moreover, the authors do not convince me that this is a serious issue. What's wrong with review procedures applied in medical research? What makes review procedures domain specific in the first place? The current review contains 131 out of 160 reviews summarising research into medical education. So, the collection of studies is perhaps not appropriate to settle this issue. So, a more thorough attempt to pursue this first goal of the paper is needed.

The second aim of the paper is to create a generic framework for conducting review studies. That has been very well achieved, a genuine contribution to the journal and the field of higher education research!

The third aim "is to consider similarities and differences of SYR and SCR". Again, I have some doubts about the relevance of the distinction between SYR and SCR. As the authors indicate themselves SCR can be conceived as the fist step in SYR. So, why bother about conceptual and procedural differences between the two techniques. Is SCR really a technique worthwile analysing and comparing with SYR? The current account suggests that SCR is just a first step of SYR or a loose attempt to conduct a SYR.

Four minor comments. (1) Is Table 1 really necessary? Are the differences between the three authors important for this paper? What do we have to keep in mind as readers? (2) On page 9, the paragraph starting with "In view of the aforementioned methodological papers on SYR and SCR, ..." seems redundant. (3) On page 18 and 19, references are to Section 3.3, 4.4 and 4.5. This should be adapted to the current layout of the paper. (4) In my view, Appendix A and B do not add to the understanding of the paper's argument. They may be dropped from the paper.


Reviewer #3: This methodological paper is timely and highly relevant for the field of higher education research, but mostly likely for the wide field of educational research.
The study is carried out systemically and carefully, reporting faithfully on details and practical consequences. This will be a useful guiding paper for many researchers in higher education.
The only comment I have is that the paper focuses very much on the 'pragmatics' of review methodology. It identifies types, methods, procedures, criteria, etc. It also discusses differences and similarities between SYR and SCR.
I would have liked to perhaps see a more in-depth discussion of the particularities of review work in higher education research, especially because the authors state this may be different than in other fields. Also, references and perhaps a discussion of the relationship with other review types (quantitative meta-reviews, for example) would have provided more perspective.
Thank you for the opportunity to review your paper!


 



*****
Data in Brief (optional):
We invite you to convert your supplementary data (or a part of it) into an additional journal publication in Data in Brief, a multi-disciplinary open access journal. Data in Brief articles are a fantastic way to describe supplementary data and associated metadata, or full raw datasets deposited in an external repository, which are otherwise unnoticed. A Data in Brief article (which will be reviewed, formatted, indexed, and given a DOI) will make your data easier to find, reproduce, and cite.

You can submit to Data in Brief when you upload your revised manuscript. To do so, complete the template and follow the co-submission instructions found here: www.elsevier.com/dib-template. If your manuscript is accepted, your Data in Brief submission will automatically be transferred to Data in Brief for editorial review and publication.

Please note: an open access Article Publication Charge (APC) is payable by the author or research funder to cover the costs associated with publication in Data in Brief and ensure your data article is immediately and permanently free to access by all. For the current APC see: www.elsevier.com/journals/data-in-brief/2352-3409/open-access-journal

Please contact the Data in Brief editorial office at dib-me@elsevier.com or visit the Data in Brief homepage (www.journals.elsevier.com/data-in-brief/) if you have questions or need further information.




*****
MethodsX (optional)

We invite you to submit a method article alongside your research article. This is an opportunity to get full credit for the time and money spent on developing research methods, and to increase the visibility and impact of your work. If your research article is accepted, we will contact you with instructions on the submission process for your method article to MethodsX. On receipt at MethodsX it will be editorially reviewed and, upon acceptance, published as a separate method article. Your articles will be linked on ScienceDirect.

Please prepare your paper using the MethodsX Guide for Authors: https://www.elsevier.com/journals/methodsx/2215-0161/guide-for-authors (and template available here: https://www.elsevier.com/MethodsX-template) Open access fees apply.
Click ‘Submit’



More information and support 

FAQ: How do I revise my submission in Editorial Manager? 
https://service.elsevier.com/app/answers/detail/a_id/28463/supporthub/publishing/ 

You will find information relevant for you as an author on Elsevier’s Author Hub: https://www.elsevier.com/authors 

FAQ: How can I reset a forgotten password?
https://service.elsevier.com/app/answers/detail/a_id/28452/supporthub/publishing/kw/editorial+manager/

For further assistance, please visit our customer service site: https://service.elsevier.com/app/home/supporthub/publishing/. Here you can search for solutions on a range of topics, find answers to frequently asked questions, and learn more about Editorial Manager via interactive tutorials. You can also talk 24/7 to our customer support team by phone and 24/7 by live chat and email.
!!!! 1. Introduction
1. Persoonlijke verhalen en levenservaringen zijn belangrijk voor kwalitatief onderzoek. 2. Gaat vaak via verbale interviews. Kunnen we daarmee de complexiteit van de menselijke ervaringen en opvattingen vangen? Misschien hebben we meer visueel materiaal nodig. Interviews met foto's om diepere geheugen aan te spreken worden photo-elicitation interviews (PEI) genoemd. Je krijgt daardoor rijkere herinneringen. Antropologen doen dit al langer. 3. We hebben een lijst van issues rond PEI's. <br>//1. Welke inzichten heeft het gebruik van foto's opgeleverd?<br>2. Welke methodologische uitdagingen?<br>3. Hoe methodologische problemen aan te pakken?//

!!!! 2. Methode
4. Zoekmethode. 33 Studies. 5. 25 studies over de ervaringen van studenten (van jong tot oud), 8 over de opvattingen van docenten. 6. 7.

!!!! 3. Findings
!!!!!3.1 PEI's bijdrage aan het begrijpen van doorleefde ervaringen.
Stimuleren van verborgen herinneringen, gevoelens, nieuwe toegangswegen voor discussie, speciaal bij ppn. met beperkte taalvaardigheid, zoals kinderen en minderheden. 

8. Voorbeelden van Afro-Amerikaanse studenten. Waren zich niet betwist van de impact van ras, tot ze met de foto's gingen werken. Combi van visueel en verbaal geeft de mogelijkheid tot triangulatie. Docenten die terugblikken op hun lerarenopleiding waarvan ze zelf foto's hadden gemaakt. 

9. Jonge kinderen: uitleggen en laten zien. 

10. Dieper ethnografisch begrip. Amerikaanse studenten in Vlaanderen leren fietsen. Samenwerking tussen ppn. een onderzoekers. 
11. Samen data verzamelen. Kinderen hebben een rondleiding door hun school en maken foto's van wat zij belangrijk vinden. Later gebruikt in focus group interviews. Met agency bij de kinderen. 

!!!!3.2 Methodological Concerns in Implementing PEI.

12. <b>Contextual Validity</b><br>
Drie soorten foto's: participant-driven, researcher-driven, pre-existing images. Meestal de eerste categorie. Verkeerd gebruik van de camera kan problemen geven. 
13. R-d foto's geven meer controle, maar de onderzoeker moet wel op de hoogte zijn. Kan ook de aandacht van de ppn. afleiden. Gevaar van researcher bias, ook p-e foto's. 
14. Foto selectie proces moet transparant zijn voor de pp. Welke prompts gebruikt de onderzoeker om over de foto's te praten? Heeft ook weer invloed. Nieuwe bron van bias. 15. <b>Ethical Considerations</b> Mensen kunnen achterdochtig worden, de privacy moet worden beschermd. Informed consent van toevallige passanten? 16. 

!!!!3.3 Addressing Methodological Concerns

<b>Briefing, Piloting, Analytical Strategies, Addressing Researcher Positionality, Member Checking</b><br>
Aan de ppn. uitleggen wat de bedoeling is. Etc. 17. Pilot study ook nuttig. Qua analyse: je kunt de beelden als stimuli beschouwen en alleen de interview data analyseren. 18. Je kunt de foto's ook zelf analyseren. Evt. ter triangulatie. Foto's kunnen worden beschouwd als weergave van de werkelijkheid, of symbolische constructies. 19. Dan wordt het van belang om na te gaan wie er interpreteert: de pp. of de onderzoeker.  Bevestiging vragen voor interpretatie van foto's (member checking). 20. Wordt zelden gedaan. 

!!!4. Discussion

//The use of PEI to date has contributed to researchers’ understanding of individuals’ perceptions and experiences of teaching and learning in various ways, through stimulating hidden memories and emotional responses, empowering participants, as well as supporting more collaborative and equitable approaches to research. Nevertheless, existing studies employing PEI point to numerous challenges with implementation, particularly regarding contextual validity and research ethics. Acknowledging these challenges and carefully considering mitigation strategies can enable researchers to draw on the potential of PEI as a powerful tool for investigating participants’ perceptions and experiences in the education field.//
Review of manuscript EDUREV-D-21-00549, entitled "Interactions between teachers and students with Autism Spectrum Disorder in mainstream secondary schools: A systematic review".

This manuscript reports on a review of eight studies into the interactions between teachers and students with Autism Spectrum Disorder (ASD) in mainstream secondary education. The topic is interesting and relevant for the Journal. It is a relatively small study with rather obvious outcomes. Therefore, I do not advise to accept the paper in its current form. The following comments may help the authors to revise and resubmit the paper.

1. The title and the main research question are both rather general which makes it difficult to arrive at concrete conclusions. Interactions between teachers and students refer to almost everything that takes place in the classroom. Aiming at identifying "aspects of teacher-student interactions [that] contribute to a successful inclusion ..." is already a bit more specific. But what are "aspects of teacher-student interactions"? As a reader, I have no particular clue on what direction this paper is going to take. The term "inclusion" is indeed meaningful but does not receive attention in the Introduction. In fact, a proper theoretical framework is lacking, which, again, makes it difficult to arrive at sound conclusions. On page 9, Method Section, the authors state that "an 'inductive' model for the generation of themes was followed. That is, themes were not a priori generated, as happens in deductive models". That is precisely the problem of this paper. There is no theoretical framework, and, consequently, the conclusions are not very impressive. 

The size of the sample of eight selected papers is small. The studies are situated in various educational systems: the US, the UK, and Australia. Is it possible to compare studies embedded in these three backgrounds, assuming that the differences between the systems do not interfere with the outcomes? The small sample size is not necessarily a problem, as long as the collected data are analysed thoroughly, and alternative explanations like context differences are adequately ruled out. But that is not the case in this paper, see above. 

2. To illustrate the obvious character of the conclusions, a few quotes. "Teachers from one study acknowledged the positive effect courses and workshops had on their understanding of ASD and their teaching skills. However, they also emphasized they did not have enough time for professional development" (p. 13). These obervations are not specific for students with ASD. "Thus, classroom management skills could help teachers to find time to interact with the student with ASD and provide them the support they need" (p. 15). Again, not specific for students with ASD. "Thus, teachers could take advantage of having a repertoire of strategies to work and interact with the student with ASD (p. 15). Again, not specific for students with ASD.

3. The presence of a Teaching Assistant (TA) in the classroom is an interesting theme, because ASD students react differently on the presence of a TA. It would be worthwile to further explore why some students do appreciate the help of TAs and others do not. The explanations given need further deepening. What are the consequences of these differences between students? By the way, this theme has been discussed twice, once under "Help from other professionals and parents" (p. 14), and once under "Material and social support" (p. 19). 

4. The difference between integration and inclusion has been casually introduced in the Method section (p. 7). Many readers will not understand the importance of this distinction. Moreover, some conclusions put into question whether inclusion is indeed the best approach to educate students with ASD. Particularly themes under "School environment" and under "Didactic strategies and performance". It would give the paper more impact when the inclusion approach were explicitly challenged. 

5. The dilemma whole class versus group work under "Group-work" (p. 21) would become more interesting. This also goes for the conclusion on p. 25: "However, it is still unclear if the needs that teachers refer to (i.e., receiving training with regard to ASD) are being met in their mainstream secondary schools and, more importantly, to what extent the fulfilling (or the lack thereof) of these needs influences the teacher-student interaction and inclusion of students with ASD in mainstream education."

6. A few minor points:
- The tables in Appendix 1 have a strange layout. The Comments are not in line with the other columns.
- The use of the + and * symbols in the subheadings under School Environment should be explained (p. 18).
- Reporting percentages does not make sense in a small sample of eight studies. Use absolute numbers. 
"""
1. Wat betekent momentum
2. Wat is de status van het framework
3. Verschillende niveaus kun je niet op één hoop gooien
4. Wat zijn de opvallende uitkomsten. Verhaal nu heel beschrijvend.
5. Veel slordigheden in de tekst.
6. Analyse duidelijk?
*Changed text in references tab
*Adjusted colors of view toolbar icons, and reverted to default new journal icon. Also, new journal from page controls has 'journal' tag
*Colored edit toolbar icons
*Home button in page controls
*Numerous tutorial changes suggested by the ~TiddlyWiki community including links back to 'Welcome to Stroll' from other tiddlers in the tutorial
*'Soon' in red letters next to dead links that will be created at the end
*Warning for mobile users in the welcome tab
*Fixed two reference views that were not folding
*Fixed ~TiddlyBarfolddata problem
*Wording of Two columns easier to read
*Locking and viewing titles moved to an 'advanced' tutorial tiddler, and made easier to use in the gear tab in the sidebar.
*[[Stroll layout cheat sheet]]
"""
Rigatoni met zoete tomaten, aubergine en mozzarella

Jamie's dinners p. 194

1 aubergine, olijfolie, 2 tenen knoflook, 1 ui, 2 blikken gepelde tomaten, 1 eetlepel balsamicoazijn, zout en peper, gedroogde chilipepers, verse basilicum, 4 eetlepels slagroom, 200 g mozzarella, Parmezaanse kaas om te raspen

Aubergine in blokjes, in hete olie, goed roeren, rondom laagje olie, 7 tot 8 minuten op matig vuur bakken, knoflook en ui erbij. Even later tomaten en balsamico erbij. Zout en peper, pepertjes, basilicum, 15 minuten pruttelen.
|^||
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="<tgeel>"
	suffix="</tgeel>"
/>
"""
Met tomaten, courgettes, uitje, mozarella, basilicum, bouillonblokje.
Water opzetten voor maatbeker bouillon. Tomaten, courgette, mozarella in stukjes.
Uitje en courgettes apart bakken. Courgette opzij. Rijst bij de uien, kort meebakken. Bouillon erbij totdat het gaar is, kan wel 20 minuten duren, niet bij weg lopen. Tomaten en courgette erbij.

Alternatief: broccoli met harde geitenkaas

sudo usermod root -p password; sudo passwd root;
Over Friedl

https://www.nzz.ch/kein_sanfter_tod_fuer_eine_schuechterne-1.9790498?reduced=true

Over Stefan Zweig

Over de Nederlands auteurs

<<ximg width:% "/Cultuur/Roth met Nederlandse schrijvers in 1937.jpg">>

The Austrian author Joseph Roth (1st from left) with his Dutch friends in Amsterdam, 1936. Next to him (from left to right) the artists and intellectuals Frans Hannema, Charles Nypels, Charles Roelofsz, Joop Sjollema and Maurits Mok
"""
We hebben een tekst, die even fatsoeneren:

Het adres is Christoffelkruidstraat 70 in Amsterdam Noord. Als je met de auto komt rijd je met de TomTom naar de kruising Papaverweg en Riddersporweg. Je rijdt in oostelijke richting de Papaverweg in en slaat vóór Rien de Wolf, een outdoor sportwinkel, rechtsaf de Christoffelkruidstraat in. 

Met het openbaar vervoer kun je vanaf het Centraal Station GVB bus 35 richting Molenwijk nemen en dan uitstappen bij de halte Draaijerweg, tegenover de Gamma. Je loopt dan in 5 minuten via de Floraweg, kruising met de Klaprozenweg, Ridderspoorweg en de Papaverweg (afslaan bij Rien de Wolf) naar ons huis. 

Als je met de fiets komt neem je de pont achter het station naar de Buiksloterweg. Vanaf de pont ga je linksaf voor café de Pont langs, het bruggetje over richting Eye en de voormalige Shell-toren. Je fietst tussen deze twee gebouwen door en dan voor de flats van Overhoeks langs. Als je de flats voorbij bent ga je rechtsaf de Bundlaan in. Je gaat op de kruising linksaf de Asterweg in. Aan het eind rijd je schuin op een t-splitsing aan. Links de Distelweg op en meteen rechtsaf de Ridderspoorweg in. Volgende kruising rechtsaf de Papaverweg in en meteen rechtsaf de Christoffelkruidstraat in.

<$details summary="1. Creativiteitsonderzoek">
{{1. Creativiteitsonderzoek}}
</$details>
{{[[Introductie: Culturele klimaatverandering]] [[I. The Solitary Self]] [[II. Consequences: the Market and the State]]}}
"""
Romeinse sla
aardappel gekookt 
boontjes gekookt
ei gekookt 
dressing
feta
tomaten
citroen 
tonijn
zwarte olijven 
Maak een directory /home/jos/bin

Maak daarin een textfile Blank met als inhoud<br>
`#!/bin/bash
sleep 1; xset dpms force off
`
Maak Blank executable

Maak een nieuwe launcher met als opdracht /home/jos/bin/Blank
|^School|^Aantal lln|^Niveaus|^Uitstroom|^Inspectie|^Bijzonderheden|
|^Gerrit van der Veen College|^890|^havo (340), vwo (399), tweejarige brugperiode|^van de havo gaat 34% naar hbo, van het vwo gaat 32% naar het wo|^juni 2018: voldoende|^Cultuurschool, één dans-muziek brugklas per jaar, veel leerlingen uit oostelijk havengebied|
|^Fons Vitae Lyceum|^1096|^havo (24%), havo/vwo (30%), atheneum (15%), gymnasium (10%)|^havo>hbo: 64%, vwo>wo: 57%|^havo-resultaten op niveau inspectienorm, vwo-resultaten boven niveau inspectienorm|^Begaafdheidsprofielschool. Veel lln uit Oud-Zuid, oostelijk havengebied en Abcoude|
|^St. Nicolaaslyceum|^1200|^havo (25%), havo/vwo (17%), atheneum (54%), vwo (4%)|^havo>hbo: 63%, vwo>wo: 68%|^basisarrangement|^cultuurplusklassen, sportplusklassen, tweetalig vwo, mooie nieuwe school. Veel lln uit oostelijk havengebied|
Dat brengt ons bij het derde subthema: Schuldgevoel, eenzaamheid en alcohol

Schuldgevoel is duidelijk aanwezig in de Radetzymars. Luitenant Carl-Joseph Trotta voelt zich schuldig over de dood van zijn eerste geliefde mevrouw Slama, die in het kraambed sterft. Hij voelt zich ook schuldig over de dood van dokter Demant, de man van zijn tweede geliefde. Schuldgevoel speelde ook een rol in Roth's leven zelf, met name over het tragische lot van Friedl. Roth schreef dat mede toe aan zijn ongeregelde levensstijl en aan zijn onvermogen, ook financieel, om voor haar een passende omgeving te vinden. Uiteindelijk bleef Roth tot het eind van zijn leven een heer. 

Alcohol was zowel een thema in Roth's boeken als een realiteit in zijn leven en dus ook in zijn schijversleven. Wil Rouleaux schrijft hierover in Trouw van 17 januari 2009, naar aanleiding van het verschijnen van een boek over Roth: "’Zijn laatste Parijse lente’ heet het hoofdstuk waarin Roths vriend Soma Morgenstern vertelt over deze aanvankelijk succesvolle kuur. Iets verder begint hij aan een nieuw hoofdstuk, getiteld ’Het Einde’, dat opent met de omineuze zinsnede: „Eén van zijn bewonderaars, die meer gevoel dan verstand had en geheelonthouder was, bracht Roth een cadeau dat hij van een familielid uit Joegoslavië had gekregen: een fles slivovitsj, geheel echt.”

Wat er vervolgens gebeurde laat zich gemakkelijk raden. Roth maakte de fles pruimenjenever in korte tijd soldaat, kreeg de smaak opnieuw te pakken en belandde al spoedig met delirium tremens in een Parijs ziekenhuis, waar hij enkele dagen later overleed.

Waarom Roth weer begon te drinken is niet geheel duidelijk. Misschien heeft de plotselinge zelfmoord van zijn vriend Ernst Toller een rol gespeeld (hij stierf één week voor Roth), of de steeds slechter wordende politieke en financiële situatie voor Joodse vluchtelingen. Zeker is wel dat Roth al minstens tien jaar een forse innemer was, niet zelden sternhagelvoll (stomdronken), en dat hij zonder alcohol eenvoudig geen letter meer op papier kon krijgen. De meesterwerken uit Roths laatste levensfase zoals de romans ’De Kapucijner Crypte’ en ’Het valse gewicht’ of de formidabele novelle ’De legende van de heilige drinker’ zijn blijkbaar in volledige roes en dronkemanswaanzin ontstaan." 
"""
05-01-22
15:56 p11
<div class="tc-table-of-contents">
<<my-toc-linked-selective-expandable-body sort[tocnr]>>
</div>


"""
De Dood, die onbekend en onbemind,
Zoo uit het oog, zoo uit het hart vandaan,
De weg vervolgt die hij vanouds moet gaan,
Weg waarop niets hem aan zijn offers bindt,

Vindt soms op stille ziekbedden, waaraan
De laatste hand hij leggen zal, een kind
Dat hem herkent en glimlachend bemint
En hem verzoent met heel zijn doodsbestaan.

Hij neemt het kind, en 't kind hangt aan zijn lippen.
Ziet dan de glimlach dralend ingeteekend
Rond de eigen lippen als hij verderschrijdt.

Zoo wordt zijn baan naar kinderen berekend:
Zachte oasen tusschen zand en klippen
Der menschelijke onverschilligheid.
"""
<div class="tc-table-of-contents">
<<my-toc-linked-selective-expandable-body sort[tocnr]>>
</div>
|^ <$checkbox field='153620' checked=1></$checkbox>|<<soc "[[Gedicht voor Anne]]">>|
|^ <$checkbox field='153643' checked=1></$checkbox>|<<soc "[[Gedicht voor Cathrien]]">>|
|^ <$checkbox field='153710' checked=1></$checkbox>|<<soc "[[Gedicht voor Jochem]]">>|
|^ <$checkbox field='153733' checked=1></$checkbox>|<<soc "[[Gedicht voor Sara]]">>|
|^ <$checkbox field='153800' checked=1></$checkbox>|<<soc "[[Gedicht voor Toon]]">>|
|^ <$checkbox field='155203' checked=1></$checkbox>|<<soc "[[Gedicht voor Berend]]">>|
|^ <$checkbox field='155222' checked=1></$checkbox>|<<soc "[[Gedicht voor Sietske]]">>|
|^ <$checkbox field='155240' checked=1></$checkbox>|<<soc "[[Gedicht voor Mercia]]">>|
|^ <$checkbox field='155258' checked=1></$checkbox>|<<soc "[[Gedicht voor Els]]">>|
|^ <$checkbox field='155411' checked=1></$checkbox>|<<soc "[[Gedicht voor Gerrie]]">>|
Topic: God en wij: Tom Wright - God en de pandemie
Time: Mar 17, 2021 08:30 PM Amsterdam

Join Zoom Meeting
https://us02web.zoom.us/j/85755835822?pwd=dVJMMnd4SWc5VUxkaDFnTUEvVlRDZz09

Meeting ID: 857 5583 5822
Passcode: 861574

[[Tom Wright - God en de pandemie]]

[[Sacks: Moraal]]
https://github.com/reidgould/tiddlywiki-nn-plugin
\define lt() <$text text='<'/>
\define gt() <$text text='>'/>
\define dq() <$text text='""'/>
"""° RAlt-Shift-: &deg;
€ RAlt-5
✔ Ctrl-Shift-U 2714
½ Ctrl-Shift-U 00BD RAlt-7
&rarr; 	&#x27A1; &#10132;
&psi; &Psi;
± &plusmn;
½ &frac12;
&#10004; &#x2714;
&#8199; figure space
&#x2610;
&#x2611;
&#x2612;
&#x1F5F9;
&#x29BE;
&#x29BF;

Essay Oswald Spengler & onze zoveelste ondergang
Het Avondland is er nog steeds
Europa doet het beter dan ooit. Toch zijn ondergangstheorieën, zoals die van Oswald Spengler, weer populair. Vanwaar deze revival?

Chris van der Heijden beeld Dick Tuinder

20 september 2017 – verschenen in nr. 38 De Groene Amsterdammer

 
Medium sprengler 3 b  follow up  
Iets meer dan 35 jaar geleden was Oswald Spenglers Untergang des Abendlandes een van mijn lievelingsboeken. Ik bezat een verkorte uitgave van zo’n vierhonderd pagina’s dundruk. Deze is in de loop van de tijd zo vol geraakt met strepen, opmerkingen, papiertjes en knipsels dat het boek volstrekt onbruikbaar is geworden. Ook bezat ik een oude, tweedelige editie. Die hield ik ernaast. Er is me van al dat toenmalige lezen in Spenglers magnum opus weinig bijgebleven. Een sfeer, dat wel. Een indruk. Kennis van de context.

De jonge historicus die destijds bezeten was van Spenglers Ondergang, en die ikzelf geweest schijn te zijn, werd gedreven door een onstuitbaar verlangen ‘de’ wereld en dan in het bijzonder ‘de’ geschiedenis in kaart te brengen. Volgens mij werd er op de Utrechtse faculteit een beetje om gegrinnikt, maar ik had geluk. Hermann von der Dunk, ook niet vies van een paar grote grepen, was er hoogleraar en Maarten van Rossem, eveneens geïnteresseerd in intellectuele geschiedenis, medewerker. Beiden lieten me mijn gang gaan. Toch heb ik nooit gedurfd hun over mijn fascinatie voor Spengler te vertellen.

Want Spengler was taboe. Niet zozeer vanwege zijn werk als wel vanwege zijn faam ‘voorloper van het fascisme’ te zijn geweest. En alles wat daar ook maar even naar riekte – ik praat hier over de jaren rond 1980 – mocht geen aandacht waard zijn. Fascisme bestond slechts om bestreden te worden. Als iemand al belangstelling voor Spengler had, dan moest het om die reden zijn: bestrijding. Maar ik bestreed Spengler niet. Dat van dat ‘voorloper zijn’ zei me weinig. Des te meer zeiden mij ’s mans enorme greep, grote sprongen, duizelingwekkende woorden en zijn verbijsterende beheersing van het ‘proces van de geschiedenis’.

Ontvang dagelijks onze nieuwsbrief
Onafhankelijk en onbevreesd. Sinds 1877.

E-mailadres
e-mailadres
Mijn visie op ‘de’ geschiedenis is inmiddels fundamenteel veranderd. Ik geloof niet langer in het bestaan ervan zoals ik ook niet meer geloof in ‘de’ natie, ‘de’ gemeenschap’, ‘het’ individu en andere generalisaties. Mijn wereld is vloeibaar geworden, net als mijn denken. Van mijn vroegere geloof in alomvattende werkelijkheden is slechts de herinnering gebleven – en daarmee een zekere sympathie voor degenen die zich bij een dergelijke vloeibaarheid niet neerleggen, sympathie dus ook voor werk als dat van Oswald Spengler. Maar sympathie is iets anders dan begrip, laat staan instemming. Sterker, volgens mij zijn Spenglers leidende gedachten niet alleen onzinnig, ze zijn ook onverenigbaar met de open wereld. Destijds zag ik dat niet, kon ik het, denk ik, ook niet zien. Nu wel. Vandaar dat het me ook welhaast als bizar voorkomt dat Spengler en zijn wereldbeeld op dit moment, om andere redenen dan historische, opnieuw in de belangstelling staan. Overigens is dit iets anders dan stellen dat de man een voorloper van het fascisme geweest zou zijn. In dergelijke simplismen geloof ik evenmin. Voorlopers bestaan eigenlijk niet omdat niemand de toekomst kan vormgeven. Voorlopers worden gemaakt omdat het verleden steeds weer voor het karretje van het heden wordt gespannen.

***
Van Spengler zelf wist ik destijds weinig, zoals het ook nu nog altijd moeilijk is meer over zijn leven te weten te komen. Hij is en blijft de man van ‘dat boek’, als mens meer een schim dan een wezen van vlees en bloed. Dat hij dit laatste wel degelijk was, meer dan hemzelf bekoorde, weten we sinds de publicatie van een tekst die tien jaar geleden, meer dan zeventig jaar na Spenglers dood, voor het eerst openbaar werd gemaakt: Eis heauton, letterlijk: ‘Aan mijzelf’. Onder specialisten schijnt deze tekst al langer bekend te zijn, hij ligt in het Spengler-archief in de Bayerische Staatsbibliothek, maar werd tot voor een jaar of twintig nooit vermeld. Tegenwoordig gebeurt dat wel, zeker sinds hij in 2007 onder de titel Ich beneide jeden, der lebt werd uitgegeven. En terecht: het is een veelzeggende, opzienbarende tekst.

Op het eerste gezicht bestaat Eis heauton uit weinig meer dan krabbels van een sombere chaoot. Maar voor wie het werk van Spengler kent, zijn deze krabbels als een sleutel, in ieder geval tot Ondergang. Die krabbels stammen dan ook precies uit de jaren dat dit boek geschreven werd, de jaren tussen kort vóór en kort na de Eerste Wereldoorlog, zeg 1913-1919. Spengler, geboren in 1880, was op dat moment in de dertig, woonde in het kunstzinnige deel van München (Schwabing) en probeerde zich als freier Schriftsteller, wij zouden zeggen freelance journalist, in leven te houden. Dankzij een klein legaat lukte dat en had hij de gelegenheid zo goed als al zijn tijd te wijden aan het grote project: Ondergang.

Van harte ging dat niet. Daarvoor was Spengler te somber, te onzeker ook, te eenzaam, te gekwetst. Louter negatieve kwaliteiten. Eis heauton staat er vol van. De verdrietige jeugd. Het slechte huwelijk van de ouders. Het ontbreken van elk spoortje cultuur in de opvoeding. Geen vrienden, geen liefde. Het gevoel nergens bij te horen, altijd en overal buitenstaander te zijn. Angst ook voor een spoedige persoonlijke ineenstorting. ‘Dat zal bij mij gebeuren als ik een jaar of veertig ben’, schrijft Spengler, ‘nauwelijks later, eerder vroeger. Ik heb innerlijk te veel geleden. Als ik vrienden had gehad met wie ik mijn gedachten had kunnen delen, was ik een ander mens geweest. Dan hadden mijn belangrijkste gedachten me niet zo somber gemaakt. Ik zal aan de gevolgen van eenzaamheid sterven. Alcohol is me als middel te grof. En ik ben bang om opium of hasjiesj te gebruiken. Zal ik voordat ik gek word de belangrijkste dingen die ik me voorgenomen heb, nog kunnen afmaken?’

Getuige deze laatste woorden stonden tegenover alle somberheden een groot verlangen, een droom, ambitie en, ook daarvan getuigt Eis heauton, een sterke verbondenheid met de ‘vrienden van de boekenkast’, Goethe en Nietzsche voorop. In zoverre was Spengler op zijn 35ste nauwelijks anders dan op zijn vijftiende. Dit blijkt ook uit geschriften die hij al op jonge leeftijd samenstelde en in Eis heauton herhaaldelijk noemt, over de Azteekse leider Montezuma, over een Groot-Duitsland en over het denkbeeldige continent Afrikasië, stuk voor stuk ontsnappingen uit de werkelijkheid dan wel projecties van persoonlijke dromen op een niet-bestaande wereld en een denkbeeldige toekomst.

Eigenlijk is Ondergang van het Avondland dat ook, zij het dat dit werk zich anders presenteerde en zeker anders ontvangen werd: als geschiedschrijving, dat wil zeggen als een poging het verleden, heel het verleden van heel de mensheid, in kaart te brengen en wel zo dat daardoor ook de toekomst inzichtelijk wordt. Dit laatste was voor Spengler cruciaal. Hij schrijft het al in de eerste zin: ‘In dit boek wordt voor het eerst een poging gewaagd het verloop van de geschiedenis op voorhand te bepalen.’ Zo bezien wilde Ondergang niets minder dan het laatste boek zijn: het vatte eens en voor al heel de tijd en heel de ruimte van de volledige mensheid samen.

Is een dergelijke pretentie, vriendelijk gezegd, al opmerkelijk, opmerkelijker nog is dat zij door zo velen serieus werd genomen. Dat was zeker kort na de Eerste Wereldoorlog het geval – zie bijvoorbeeld de studie die filosoof Manfred Schröter in 1922 onder de titel Der Streit um Spengler publiceerde. Maar ook in de jaren na de Tweede Wereldoorlog werd Ondergang vol instemming gelezen, niet in de laatste plaats doordat een door dit boek en zijn varianten beïnvloed cultuurpessimisme bon ton was. Iets dergelijks schijnt op dit moment eveneens het geval te zijn. Daarom besloot uitgeverij Boom wellicht om met een vertaling van de complete Untergang des Abendlandes te komen – de eerste ooit.

***
De huidige ‘populariteit’ – groot woord want in vergelijking met de aandacht na de Eerste Wereldoorlog gaat het om weinig mensen – van Spenglers Ondergang is niet gemakkelijk in kaart te brengen. Moeilijker nog is het er een verklaring voor te vinden. Niettemin lijkt sprake van een revival, al is het alleen maar omdat zovelen zeggen dat daarvan sprake is. ‘Class, Trump, Brexit, and the Decline of the West’ kopte de linkse website openDemocracy kort na de overwinning van Donald Trump, om vervolgens te betogen dat het kapitalisme en daarmee de VS sinds de jaren zeventig terrein verliezen. ‘Oswald Spengler: Race Theorist of the Trump Regime’, stelde een aan de Amerikaanse Democratische Partij gelieerde criticus onlangs. ‘El mal de occidente’ (‘Het kwaad van het Westen’) zette de Catalaanse krant La Vanguardia midden juli boven een artikel waarin werd verwezen naar huidige ondergangsstemmingen, met daarbij het traditionele beroep op Spengler. Voorbeelden te over.

‘Zal ik voordat ik gek word de belangrijkste dingen die ik me voorgenomen heb, nog kunnen afmaken?’
Ook in Nederland is het niet moeilijk enthousiaste Spengler-commentaren of varianten erop te vinden. ‘Is de Nederlandse samenleving ten dode opgeschreven?’ zette de Volkskrant begin augustus boven een gastcolumn. De column was deels een reactie op een stuk van Paul Cliteur over ‘Occidentofobie’, de afkeer tegen het Westen die kenmerkend voor onze cultuur zou zijn en overmijdelijk (‘een cultuur kan namelijk niet voortbestaan als een groot deel van de bevolking die cultuur haat of daarvan een disproportionele afkeer heeft’) tot ondergang moet leiden – onzin allemaal, maar dat terzijde. Een ander voorbeeld is het recente dubbelinterview in Vrij Nederland met Thierry Baudet en Tommy Wieringa. Een flink deel ervan gaat nadrukkelijk over Spengler. ‘De grootste worsteling in mijn leven’, zegt Baudet. ‘Hij heeft mij ten diepste beïnvloed’, zegt Wieringa.

Een Spengler-revival dus? Maar als we Google Trends, een overzicht van het aantal keren dat op een onderwerp gezocht wordt, mogen geloven, is daarvan geen of, wat op hetzelfde neerkomt, voortdurend sprake. In ieder geval is het volgens Google Trends niet zo dat er tegenwoordig vaker op ‘Spengler’, ‘Decline of the West’ of vergelijkbare termen gezocht wordt dan tien, vijftien jaar geleden. Hetzelfde tonen Ngram Viewers, zoekmachines die het gebruik van termen in een groot aantal teksten tellen. Na een hausse rond 1940 is de uitdrukking ‘decline of the West’, om slechts dit voorbeeld te nemen, voortdurend populair geweest.

Small sprengler cover fc 300 dpi
Al is het wel onduidelijk waar die zoekcijfers naar verwijzen, omdat onduidelijk is wat bedoeld wordt of waarnaar gezocht wordt bij het gebruik van de naam Spengler of een uitdrukking als ‘ondergang van het Westen’. Anders gezegd: iedereen bedoelt er het zijne mee en dat kan ook, omdat Spengler zoveel beweert en dat bovendien in zo vage bewoordingen doet dat je zijn teksten, net als horoscopen, op elke gewenste manier kunt uitleggen.

***
Toch is vaagheid niet het eerste waar je in verband met Spenglers Ondergang aan denkt. Dat komt doordat het boek vooral bekend is uit samenvattingen. Daarin wordt Ondergang steevast een ‘morfologie (vormkunde) van de geschiedenis’ genoemd. Spengler stelt dat culturen zich ontwikkelen als organismen en dus, net als organismen, een proces van geboorte tot dood doormaken. Met die visie wilde hij niet alleen een eind maken aan de klassieke lineaire chronologie (Oudheid, Middeleeuwen, enzovoort) maar ook aan de eurocentrische gedachte dat de geschiedenis eigenlijk alleen het verhaal van het Westen is, zeg de lijn Mesopotamië > Europa > VS, en dat alles wat niet op deze lijn past bijzaak is.

Hiertegenover stelt Spengler dat de geschiedenis van de mensheid acht (hoge) culturen heeft gekend. Daaronder ook die van de Maya’s en Azteken en verder Arabische, Chinese en Indiase culturen. Elk van deze was in zich besloten en had een aantal dominante kenmerken zoals magisch, apollinisch of faustisch. Ook doorliepen alle culturen min of meer dezelfde stadia, zodat er een vreemd soort ‘gelijktijdigheid’ ontstaat – de Odyssee stamt uit dezelfde ‘tijd’ als het Nibelungenlied en zowel Confucius en Kant als Alexander de Grote en Napoleon waren, althans ‘morfologisch’ gezien, tijdgenoten. Belangrijk is verder dat Spengler betoogde dat het laatste stadium van elke cultuur de ‘civilisatie’ is. Civilisatie staat haaks op cultuur. Zij betekent haar einde. Waar cultuur gekenmerkt wordt door leven, betekent civilisatie dood.

Zo samengevat is Spenglers verhaal glashelder. Toch doen dergelijke samenvattingen in positieve noch negatieve zin recht aan Untergang des Abendlandes. Het boek is aan de ene kant veel rijker en aan de andere kant heel wat armer. Rijker is het omdat het onmiskenbaar vol prikkelende beelden en gedachten staat. Tijdens het herlezen ervoer ik opnieuw dat mijn gedachten dankzij de tekst afdwaalden naar ongekende vertes, rare verbanden, verrassende inzichten. Maar teruggekeerd naar het hier en nu moest ik telkens weer constateren dat die beelden en gedachten weinig meer waren dan dat: vergezichten, filosofie, geen geschiedschrijving, abstracties zonder noemenswaardige verwijzing naar een bestaande werkelijkheid.

‘Ich bin für das Sehen geschaffen’, schrijft Spengler in een van de eerste zinnen van Eis heauton. Inderdaad, hij ‘zag’, is een ziener en beklaagt zich er dan ook steeds weer over dat hij zijn vergezichten moet verduidelijken. Eigenlijk had hij daar geen zin in. Want door verduidelijking verloren die vergezichten hun horizon. Een dergelijk verlies probeerde Spengler te voorkomen door een tekst te schrijven die zoveel mogelijk ‘beeld’ bleef – filosofie, abstractie, een autonomie van woorden. Daarin slaagt hij, met alle na- en eventuele voordelen van dien.

Eén voorbeeld – het komt uit het eerste deel van het vijfde hoofdstuk met de voor een historisch werk verrassende titel ‘Zielenbeeld en levensgevoel’ en gaat over de verbondenheid van mensen met hun omgeving. Voor de klassieke (‘apollinische’) mens was het thuisland de plek waarop zijn stad was gebouwd, stelt Spengler. Voor de magische mens, de christen en de moslim, is er geen relatie tussen thuis en geografie. ‘Voor ons [de faustische mens] is het [thuisland] een ongrijpbare eenheid van natuur, taal, klimaat, zeden en gewoonten en geschiedenis; niet aarde, maar “land”, geen puntvormige aanwezigheid, maar historisch verleden en toekomst, geen eenheid van mensen, goden en huizen, maar een idee dat strookt met een rusteloos zwerversbestaan, met diepste eenzaamheid en met dat oer-Duitse verlangen naar het Zuiden waaraan vanaf de Saksische keizers tot Hölderlin en Nietzsche de besten te gronde zijn gegaan.’

Laat ik eerlijk zijn: ik vind dit best mooi, in het Duits overigens mooier dan in het Nederlands – waarom maakte de vertaler van ‘punktförmige Gegenwart’ ‘puntvormige aanwezigheid’ en niet ‘puntvormige (?) tegenwoordigheid’, dat strookt volgens mij beter met het in het vervolg van de tekst genoemde verleden en de toekomst; verder hulde voor de vertaling, wat een klus! Maar het is wel mooi zoals muziek mooi kan zijn. Want vraag me niet wat er precies staat, laat staan wat ermee bedoeld of waarnaar verwezen wordt. Dit is ook wat ik versta onder Spenglers vaagheid. Zijn verhaal neigt naar Hegel, maar dan wel een Hegel die zo vaak verwijst naar personen en gebeurtenissen dat het lijkt alsof hij geschiedschrijving bedrijft. Dat doet hij niet, tenzij je dat vak geheel in de – wat heet – Duits-idealistische school plaatst. Want ook in die zin is Spengler door en door Duits. Zijn woorden en beelden scheppen een wereld die welhaast jenseitig is, ‘buitenaards’. Dit verklaart ook dat zijn boek hetzelfde effect heeft als een religieuze tekst: voor de goede verstaander is hij doorzichtig als glas, voor de slechte verstaander abracadabra. Eerst komt het geloof, dan de boodschap, en niet, zoals in moderne westerse non-fictie, andersom.

Het maakt dat je Ondergang van het Avondland eigenlijk slechts op twee manieren kunt lezen. De ene is vanuit het perspectief van de schrijver, als autobiografie dus, eventueel als collectieve autobiografie, dat wil zeggen als het levensverhaal van de groep waartoe Spengler behoorde. De andere is vanuit het perspectief van de lezer, en dan niet een willekeurige, laat staan een strenge lezer maar een die bij de tekst rode oortjes krijgt. In beide gevallen is de vaagheid van de tekst eerder een voordeel dan een nadeel. Want nogmaals: met geschiedschrijving in de empirische traditie heeft het boek niets van doen, met mythologie daarentegen alles.

Het Avondland is geen paradijs, zoals geen enkele samenleving dat is – bespaar ons paradijzen, ze blijken telkens weer een hel te zijn
Begrijp me goed. Wat mij betreft is dat geen verwijt. Waarom zou je geen historische mythologie mogen bedrijven? In Eis heauton stelt Spengler herhaaldelijk dat hij dergelijke mythologie (zelf spreekt hij van droom, fantasie, ja zelfs leugen) sterk verkiest boven de droge ‘en-toen-en-toen-geschiedschrijving’ die kenmerkend is voor veel negentiende-eeuwse wetenschap. Tot op zekere hoogte deel ik die voorkeur. Niets is zo saai als een geschiedenisverhaal zonder visie, zonder standpunt, zonder stellingname, zonder actualiteit. Dergelijke ‘archiefkunde’ is belangrijk en noodzakelijk, maar dient een hoger doel, namelijk interpretatie, visie.

Maar er zijn wel grenzen. Je kunt onmogelijk heel de geschiedenis van heel de ruimte en heel de tijd beschrijven terwijl je en passant ook nog even de toekomst voor je rekening neemt. Ach, misschien kan het wel, het gebeurt regelmatig, maar noem het filosofie, religie, mythologie, maar niet geschiedenis. Die gaat immers over de werkelijkheid van mensen in het verleden, terwijl mythologie over het verlangen, de idealen, angsten, dromen en andere emoties van mensen in het heden gaat. Mythologie is projectie, en geschiedschrijving wil het tegenovergestelde zijn: retrospectie.

***
Wat betreft de projectie van Spengler en de groep waartoe hij behoorde zou je, denk ik, de klemtoon moeten leggen op het verlangen naar synthese, eenheid, begrip, greep of hoe je het ook wilt noemen. Je zou dit verlangen op meerdere manieren kunnen verklaren. Een daarvan is het typisch negentiende-eeuwse bèta-complex van de alfa. Simpel gezegd: de natuur toont telkens weer een zekere harmonie, al is het alleen al doordat licht steevast afwisselt met donker, leven met dood, groei met afbraak. Op basis van dit feit kun je ‘harde’ wetenschap bedrijven. Als het over cultuur gaat, lukt dat niet. Dat is frustrerend, zeker voor een kunstzinnig-filosofisch aangelegde persoon die, zoals Spengler, natuurwetenschap studeerde. Vandaar de (ondertussen wel voorbije) neiging van allerlei -sofen en -logen om patronen te ontdekken in het bestaan van groepen en individuen. Het verklaart Spenglers welhaast onbeschrijflijke bewondering voor Goethe – de meest geciteerde persoon in Ondergang. Die bewondering geldt vooral Goethe de natuurwetenschapper en grondlegger van de morfologie.

Een andere verklaring voor dat onstuitbare verlangen naar greep verwijst naar de tweede persoon die Spengler, zeker in Eis heauton, voortdurend noemt: Nietzsche. Neem slechts zijn ‘God is dood’-filosofie. Deze dood betekende onder meer dat het aloude houvast bezweken zou zijn en dat een mens voortaan op eigen benen moest staan – of een nieuw houvast moest vinden. Spengler probeerde het laatste. Weliswaar beperkte hij zich daarbij tot wetenschap en geschiedenis, maar de stap naar actualiteit, politiek en maatschappij is niet groot. Ook dat blijkt weer uit Eis heauton. Spengler spreekt hierin herhaaldelijk van zijn verlangen naar een leider, iemand die hem en zijn tijd tot voorbeeld kan dienen. Hij was zeker niet de enige die naar zo iemand verlangde – denk alleen maar aan Erich Fromms Escape from Freedom waarin precies dit verlangen naar houvast magistraal geanalyseerd wordt. Volgens mij is het aanstellerig in Spenglers verlangen een voorafspiegeling van het hitlerisme te zien. Tegelijkertijd kan onmogelijk ontkend worden dat Hitler en de zijnen van dergelijke verlangens optimaal gebruik hebben gemaakt.

Medium sprengler 3 lead
Vandaar de onverenigbaarheid van Spenglers visie met een open samenleving. In een waarlijk open samenleving is het verlangen naar een archimedisch middelpunt verdwenen, verdampt, herinnering geworden. Dat dit misschien wel de lastigste opgave van de moderniteit is, blijkt uit het feit dat zo’n verlangen in de een of andere vorm telkens weer terugkeert – en vermoedelijk ook de essentie is van het huidige debat over natie, identiteit en samenleving. Zo stelde Thierry Baudet – laat ik eerlijk zijn: iemand in wie ik veel herken maar met wie ik het, juist daarom, op cruciale punten fundamenteel oneens ben – in genoemd dubbelinterview dat het ‘project van zijn leven’ eruit bestaat de ‘heelheid van de wereld’ te herstellen. Die heelheid, vervolgt hij, zou vóór de Eerste Wereldoorlog nog bestaan hebben. ‘Kunsten gingen nog over een coherent verhaal, een ideaal. Vanaf het modernisme, ook in de muziek, overheerst de gedachte dat we alleen zijn in de kosmos – dat er slechts chaos is in het universum. Wanorde, lelijkheid. En dat het uitdrukken van een ideaal dus belachelijk is. Of uitdrukking geeft aan een vals bourgeois-bewustzijn. Grenzen moeten continu worden overschreden: het veilige, het thuis. Transgressie wordt de grondideologie (…) Politiek vertaalt het zich in het opheffen van landsgrenzen.’

Ik zou het anders formuleren maar inderdaad: in moderne bewoordingen is dit wat ook Spengler meende. Maar die zogenaamde eenheid van vóór de Eerste Wereldoorlog heeft nooit bestaan en voorzover ze bestond was ze het gevolg van een type samenleving waarin wij niet meer willen en ook niet meer kunnen leven. Eenheid is precies datgene wat een open wereld niet nastreeft en ook niet wil of kan verwerkelijken. Een dergelijke wereld is immers vloeibaar, niet vast, zij is pluriform, niet uniform. En deze vloeibaarheid is niet slecht, zoals velen beweren, zij is goed, mooi en bevrijdend. Het klopt dat zo’n vloeibare samenleving ook ontzettend moeilijk is om in te leven en op bepaalde gebieden zeker moeilijker dan haar tegendeel, de gestolde samenleving. Maar die complexiteit is geen reden voor verwerping.

Hiermee ben ik bij de andere lezing van Ondergang, die vanuit het perspectief van degenen die het boek verslonden. Zij deden dat, denk ik, in de eerste plaats omdat zij het daarin verkondigde grondgevoel herkenden: pessimisme. Want al beweerde Spengler in Pessimismus? (1921) bij hoog en laag dat zijn cyclische geschiedtheorie juist niet pessimistisch was (op elke ondergang volgde immers weer nieuwe bloei), optimisme is niet wat Ondergang uitstraalt, zeker niet wat de eigen tijd betreft. Daarover was Spengler diep somber, zoals de meesten van zijn tijdgenoten dat waren – terecht overigens: Europa was er tijdens de dertigjarige oorlog van 1914 tot 1945 op zo goed als alle gebied buitengewoon slecht aan toe.

In zoverre is Spenglers Ondergang niet meer dan een schakel in een lange reeks – Eliots The Waste Land, Yeats’ The Second Coming, Ortega’s Opstand der horden, Freuds Das Unbehagen in der Kultur, Huizinga’s In de schaduw van morgen, Toynbee’s A Study of History en talloze meer. Dat verklaart ook de vele pogingen om aan deze misère te ontsnappen. Dat was uiteindelijk ook wat de nazi’s wensten. Met een onmiskenbare verwijzing naar Spengler spraken zij steeds weer over de Aufgang Europas. Die opgang kwam er inderdaad – wat dat betreft hadden de nazi’s het wel en had Spengler het niet bij het rechte eind: het Avondland is niet ten onder gegaan. Gelukkig is het wel een volstrekt ander ‘land’ geworden dan zowel de optimisten als de pessimisten van toen zich konden voorstellen.

Hier ligt wellicht, ondanks alle gedateerdheid en kletskoek, ook de actualiteit van Spenglers Ondergang: in het feit dat er nog altijd velen zijn die zich zo’n ander Avondland niet kunnen of willen voorstellen, die somber worden van de huidige complexiteit en die voor die somberheid illustraties en bewijzen zoeken, onder meer in geschriften als die van Spengler. Maar alleen al het feit dat hun ondergangsstemmingen meer dan een eeuw dezelfde zijn en keer op keer gelogenstraft worden, illustreert hoezeer de somberaars het bij het verkeerde eind hebben. Europa, het Westen of wat mij betreft het Avondland is geen paradijs, zoals geen enkele samenleving dat is – bespaar ons paradijzen, ze blijken telkens opnieuw een hel te zijn.

Maar Europa, alle problemen ten spijt, bestaat al eeuwen en ‘doet’ het sinds de Tweede Wereldoorlog beter dan ooit. Problemen zijn er, zoals gewoonlijk, te over. Maar dat is geen reden om van zoiets dramatisch als ‘ondergang’ te spreken, laat staan draconische maatregelen voor te stellen ter voorkoming daarvan. Anders gezegd, Spenglers Untergang des Abendlandes is en blijft een interessant boek, maar uitsluitend omdat het een voorbije tijdgeest illustreert. Het is te hopen dat het zo blijft.

Op dinsdag 10 oktober wordt de verschijning van de eerste Nederlandse vertaling van Spenglers boek gevierd in Paradiso, onder de titel ‘De ondergang van het Avondland’.

De ondergang van het Avondland verschijnt op 10 oktober bij Boom, in de vertaling van Mark Wildschut. Twee delen, 1200 pagina’s, € 89,-
"""
Merquesworstjes (250 gram)
Sperziebonen (4 ons)

Aardappels koken
Boontjes koken
Uitje fruiten
Worstjes bakken
Blik tomaten erbij
Boontjes en aardappels erbij
"""
Als bij het installeren van Spotify de foutmelding komt: One or more signatures could not be verified, zoek dan de betreffende signature op en open een terminal:

gpg --recv-key 13B00F1FD2C19886

Installeer dan opnieuw, dan moet het goed gaan. 
Ingrediënten

    500 g spruitjes panklaar (zak)	
    1 sjalot	
    2 el olijfolie	
    125 g gerookte spekblokjes (duopak à 250 g)

Kook de spruiten in water met zout 8 min. Giet af. Snipper ondertussen de sjalot. Verhit de olie in een wok en bak de spekblokjes 5 min. Voeg de sjalot toe en bak 2 min. mee. Voeg de spruiten toe en roerbak nog 2 min. tot de spruiten beetgaar zijn. Breng op smaak met peper.

God is ons lot
{{[[Stelling 1]] [[De eerste preek van Paneloux]] [[Het sterven van Philippe Othon]] [[De tweede preek van Paneloux]]}}

<tgeel>Stelling 1: Over God en de pandemie</tgeel>


Uiteindelijk vraagt Tarrou Paneloux of hij mee wil gaan doen met de hulpploegen. Paneloux stemt toe. Dit gesprek wordt in de film geplaatst na afloop van de preek. 

De pest is een straf van God voor jullie losbandig leven. Het is jullie verdiende loon. Denk aan de pest in het Uittocht-verhaal. Straf voor de farao en de Egyptenaren. De gesel Gods dwingt de hoogmoedigen en de verblinden aan zijn voeten. De vromen hebben niets te vrezen maar de zondaren hebben alle reden om te sidderen. In de enorme korenschuur van het heelal zal de onverbiddelijke dorsvlegel van de pest het menselijk graan slaan totdat het kaf gescheiden is van het koren. De goede engel beveelt de kwade engel met zijn jachtspeer op de deuren van de huizen te slaan. En zo vaak als hij een huis trof, zoveel doden werden eruit gedragen. Het is tijd voor bezinning. Dezelfde dorsvlegel die u pijnlijk treft, verheft uw ziel en wijst u de weg.
De pest: onze absurde werkelijkheid
{{[[Stelling 2]] [[Antwoord 1: Zelfmoord plegen]] [[Antwoord 2: Geloven in God]] [[Antwoord 3: Het absurde accepteren]]}}

<tgeel>Stelling 2: Over de absurde werkelijkheid</tgeel><p>
Deze wereld is de onverklaarbare, onbegrijpelijke begrenzing van de mens die verlangt naar eenheid en helderheid. Het absurde is niet de mens of de wereld zelf, het is de botsing tussen de mens en de wereld: ‘Het absurde ontstaat uit de confrontatie tussen het roepen van de mens en het onredelijke zwijgen van de wereld.’
Aanvaarding maakt hoop mogelijk.
{{[[Stelling 3]] [[Hoop zonder meer leidt de aandacht af]] [[Rambert verlangt naar Parijs en naar zijn geliefde]] [[Geen hoop zonder wanhoop]]}}
<tgeel>Stelling 3: Over de hoop</tgeel>
Altijd bestaat de vrijheid om te kiezen
{{[[Stelling 4]] [[Onbewust leven]] [[Bewust leven]] [[Kiezen voor liefde en solidariteit]]}}
<tgeel>Stelling 4: Over de vrijheid om te kiezen</tgeel>
Voor zover uit de literatuur bekend is het begrip menselijke waardigheid voor het eerst gebezigd in de Grieks-Romeinse Oudheid, meer in het bijzonder in de zogeheten Stoa. 
''Tiddler toolbar in view mode''

[img width="50%" [https://giffmex.org/stroll/strolltiddlertoolbar.png]]

|{{$:/_sq/Stories/icons/divert-right.svg}}<br>{{$:/_sq/Stories/icons/divert-left.svg}}|Divert tiddler to the opposite column|
|{{$:/core/images/fold-button}}<br>{{$:/core/images/unfold-button}}|Fold / unfold tiddler to hide all but the title and toolbar|
|{{$:/core/images/new-button}}|Create a new tiddler with a backlink to the current tiddler|
|{{$:/core/images/new-journal-button}}|Create a new journal tiddler with a backlink to the current tiddler|
|{{$:/core/images/down-arrow}}|A hidden menu with more options|
|{{$:/core/images/edit-button}}|Edit the current tiddler|
|{{$:/core/images/close-button}}|Close the current tiddler|

''Tiddler toolbar in edit mode''

[img width="50%" [https://giffmex.org/stroll/strolledittoolbar.png]]

|{{$:/_sq/Stories/icons/divert-right.svg}}<br>{{$:/_sq/Stories/icons/divert-left.svg}}|Divert tiddler to the opposite column|
|{{$:/core/images/delete-button}}|Delete the current tiddler|
|{{$:/core/images/cancel-button}}|Discard changes made while editing, and return to view mode|
|{{$:/core/images/done-button}}|Save changes made while editing, and return to view mode|

''Page controls''

[img width="50%" [https://giffmex.org/stroll/strollpagecontrols.png]]

|{{$:/core/images/home-button}}|Home button. Takes you to 'Wecome to Stroll' in tutorial version. Takes you to your default tiddlers in empty version|
|{{$:/core/images/new-button}}|Create a new tiddler|
|{{$:/core/images/new-journal-button}}|Create a new tiddler tagged 'journal' and with a date-timestamp in the title.|
|{{$:/core/images/options-button}}|Open the Control panel to configure numerous aspects of your ~TiddlyWiki file|
|{{$:/core/images/save-button}}|Save changes (when in a local file) / Download this file (when in an online file)|

''References tab (pink eyeball in the sidebar)''

[img width="50%" [https://giffmex.org/stroll/strollrefstab.png]]

|Full text|Each reference shown with a link and with the full text field transcluded|
|Full text under sliders|Each reference shown with a link and with the full text field transcluded under a slider button, to view each indvidually|
|Hidden|Reference section hidden from all tiddlers|
|Highlights in context|Each reference shown as highlighted search results in context, so you don't have to read the entire tiddler to find the references|
|Simple links|References shown as simple links in all tiddlers|

''More tab''

[img height="50%" [https://giffmex.org/stroll/strollmoretab.png]]

|All|List of tiddlers in alphabetical order|
|Recent|List of tiddlers ordered by most recently edited|
|Tags|List ofyour tags|
|Missing|List of tiddlers with missing links. Irrelevant in Stroll, because Stroll creates tiddlers for every link|
|Drafts|Tiddlers you left in edit mode and didn't close|
|Orphans|List of tiddlers not linked to or tagged to from other tiddlers|
|Types|Tiddlers given a special type in the type field (see bottom of edit mode)|
|System|The background tiddlers and plugins that make Stroll so great|
|Shadow|The background tiddlers that make ~TiddlyWiki work|
|Explorer|A table of contents of the system and shadow tiddlers|
|Plugins|The plugins|

''Control panel''

[img width="80%" [https://giffmex.org/stroll/strollcontrolpanel.png]]

*The gear button in the sidebar page controls opens the Control panel tiddler
*Go to the Appearance tab > Two Story Layout tab to configure the two column features:
**The first two items are to adjust the width of the columns and sidebar. This is helpful if your screen width is different from the average laptop.
**The third item is to have tiddlers move to the top or bottom of the opposite column when using the divert button
**Dropzones are areas where you can drag a tiddler to move it to the opposite column.
**Adjust the story view for the columns:
***Classic is default: tiddlers appear in a vertical column.
***Zoomin: only the top tiddler of each column is visible. You will need to use the 'Open' tab in the sidebar to navigate to hidden tiddlers in each column.

Stroll and Roam (https://roamresearch.com/) are not competitors. I use both, and recommend Roam highly. 

Each app has its strengths and drawbacks. Here is a general comparison:

''Advantages of Roam''

*Block level transclusion
*Outliner features (zoom in and out, expand and collapse points, etc)
*Graph overview
*Fast code blocks like /time, /date picker, etc
*Numerous hotkeys

''Advantages of Stroll''

*Free
*Local file, your data is yours, no privacy concerns or fear of losing your data if Roam gets hacked or closes its doors
*Text formatting, CSS options for tables, etc are superior
*Infinitely customizable UI
*Widgets, macros and other goodies built in
*An extensive list of plugins (see the [[TiddlyWiki toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]])
*Multiple options for viewing references
Op 30 november vergaderden bestuur en team over diverse onderwerpen. Als eerste de diensten en de kerstdiensten. We willen door met de diensten op zondag. Maar dan wel met brood en wijn, uit te delen door rondgang langs de aanwezigen. En met de mogelijkheid tot ontmoeting na afloop. Dit alles natuurlijk met inachtneming van voorzorgsmaatregelen om verspreiding van het coronavirus tegen te gaan. Over de kerstvieringen is nog veel onzeker. We nemen de adviezen van de bisschoppen en de Protestantse Kerk Nederland in overweging en kiezen dan een voor ons best passende oplossing. Nadere berichten volgen snel!

Een tweede onderwerp was de huisvesting. Roel Knol en Riekeld Scheper hadden een handzame notitie voorbereid en waren via de zoom aanwezig om toe te lichten en mee te denken (hulde!). Uiteindelijk kwamen we uit op het volgende. Zolang Amerborgh de mogelijkheid biedt blijven we de diensten in de Rode Hoed houden. Het koor blijft repeteren in de pastoriezaal van de Dominicuskerk. Kantoor en opslag blijven onderdak bij Stan en Tineke Teunen (weer hulde!) aan de Dongestraat. Voor groepsbijeenkomsten door de week heen onderzoeken we de mogelijkheden van een souterrain in Zuid, nabij het Vondelpark, welwillend beschikbaar gesteld door Henk Schreuder (opnieuw hulde!)

Een derde onderwerp zijn de leerhuizen die we in het voorjaar gaan organiseren. Mirjam en Alex hebben de plannen op papier gezet. We begroeten met instemming een hele lijst van geschikte onderwerpen en mogelijke inleiders. Sommige leerhuizen gaan we, zoals vanouds, binnen de eigen gelederen van de Ekklesia organiseren. Andere initiatieven proberen we met de Dominicuskerk of de Keizersgrachtkerkgemeente te realiseren. Dat laatste vraagt om nader overleg met onze buurgemeenten. Mirjam en Alex gaan daarbij aan de slag. Nadere berichten volgen in januari.

We hadden de slag goed te pakken tijdens deze zoomvergadering. Je merkt hoeveel creativiteit en bereidheid tot actie er leeft binnen het liturgisch team en binnen de gemeenschap van de Ekklesia. Hartverwarmend!
Dit is Subfiets
SF6
<<pdf "/Teksten/1681 TS Eliot FourQuartets.pdf">>


<div class="tc-table-of-contents">

<<toc-selective-expandable 'TableOfContents''sort[tocnr]'>>

</div>
Methode om energieverbruik van data centers zichtbaar te maken. Nieuwe techniek, nieuwe software. Ontworpen en uitgeprobeerd.

Leesbaarheid/Engels ok
Aanbeveling heel vlak

Maatschappelijke relevantie: 4
Vakrelevantie: 3
Leesbaarheid: 3
Diversiteit: 1
Abc, de kat gaat mee, de kat gaat mee. Piep
\define createTask()
<$action-sendmessage 
  $message="tm-new-tiddler" 
  title="New Task" 
  tags="task" 
  text=<<now "Today is DDth, MMM YYYY">>
  due-date=""
  priority="normal"
  status="not started"
  />
\end

\define newTask()
<$button actions=<<createTask>> class="btn btn-sm btn-info" >New Task
</$button>
\end

<div class="float-right">
<<newTask>>
</div>

<$macrocall $name=table-dynamic filter="[tag[task]]" fields="tbl-checkbox tbl-expand title priority status start-date due-date tags" class="w-100" stateTiddler="your-state-tid"/>
| <$checkbox field='a' checked=1></$checkbox>|Bart-Jan bellen|
| <$checkbox field='b' checked=1></$checkbox>|Hans Werner bellen|
| <$checkbox field='c' checked=1></$checkbox>|Bestuuur en RvT bijeen roepen|
Hier een tekst, als uitwerking. Hier een tekst, als uitwerking. Hier een tekst, als uitwerking. Hier een tekst, als uitwerking. Hier een tekst, als uitwerking. 



abc
de kat gaat mee
de hond blijft thuis
piep zei de muis in het voorhuis
Stroll is an adaptation of ~TiddlyWiki. Think of ~TiddlyWiki as a file drawer of notecards [the notecards are called tiddlers, a British term for a small fish]. 

*The left side of the layout is the stack of open tiddlers. It is called a story river.
*The right side of the layout is a sidebar that contains buttons, a search bar, and tabs with lists of the closed and hidden tiddlers.

<span class="bluebox">

''Activity 1: ''Close the sidebar by clicking the <<icon {{$:/core/images/chevron-right}} "">> icon in the top right corner. Click it again to re-open it.

</span>
Deze oefening heeft te maken met de gedachte dat de wereld om jou draait. Het gaat uiteindelijk niet om jou. Niet in je werk, niet in je relaties.  Misschien is een goede titel: "Niemand leeft voor zichzelf". Denken aan het feit dat je niet voor jezelf leeft maar voor de anderen om je heen, je geliefden,  Anne-Carien, de kinderen en hun partners, de kleinkinderen, de familie en vrienden,  de collega's op het werk. Deze gedachte brengt je echt in een warme stemming. Een glimlach hoort daarbij. Zie oefening 6.
'Heb je naaste lief als jezelf' is een gebod. Dat betekent twee dingen. In de eerste plaats jezelf aandacht geven en serieus nemen. Wees toegewijd aan de ander, zoals je toegewijd bent aan jezelf. Zonder toegewijd te zijn aan jezelf kun je niet toegewijd zijn aan de ander. Dat is een keuze. Je kunt ook cynisch tegen jezelf zijn, en dus ook cynisch naar de anderen. Een moeilijke keuze maar toch een keuze die een positief antwoord vormt op het gebod of de uitnodiging van de liefde. In de tweede plaats betekent toegewijd zijn aan de ander dat cynisme nooit de boventoon mag voeren in de relatie met de ander.
Deze oefening heeft twee brandpunten: het hier en nu, en de toekomst. Voor het hier en nu geldt: doe de dingen zo goed mogelijk. Neem de tijd, raffel niet of, concentreer je, ga uit van wat je nu doet. Een beetje mildheid en openheid helpt. Probeer je niet te laten afleiden. Een ding tegelijk. Voor de toekomst geldt: vertrouwen. vertrouw erop dat je, met Gods hulp, de goede dingen zult doen. Plan niet te veel van tevoren. Laat het allemaal een beetje gebeuren. Vertrouwen, vertrouwen, vertrouwen.
Deze oefening gaat eigenlijk over opruimen. Ruim je mails op, ruim je bureau op, vink taakjes af, breng de kranten weg. Een wandeling of rondje hardlopen ruimt de geest op. Het gaat dus om ordenen, op stapels leggen, van je af schrijven of denken, het werkgeheugen leeg maken.
Een uurtje met iemand praten helpt om sombere gedachten te verdrijven. In gezelschap van anderen ben je bijna altijd opgewekter dan in gezelschap met Anne, of met jezelf. Maak een afspraak met Bart, Sam, Kees, Joan, Jan, iedereen met wie je een goed gesprek kunt voeren.
Begin bij de gedachte dat er altijd iets kiezen valt. Dat je in elke situatie, hoe naar ook, de keuze hebt tussen een positieve en een negatieve grondhouding. Dat de (bewuste) keuze voor een van beide grondhoudingen je volgende keuzes en de waardering van situatie beïnvloedt. Er is ook nog het "net alsof gevoel", of het "en toch en toch en toch" gevoel waarvoor je bewust kunt kiezen.
Lees jezelf voor uit Psalm 51: 

Geef mij een ander hart, mijn God,
maak mij nieuw, maak mij standvastig.
Keer U niet af, verstoot mij niet,
neem nooit uw heilige geest van mij weg.
Red mij, en ik kan weer gelukkig zijn,
en ik durf weer vrijuit te leven.
Maak mij tot teken van uw barmhartigheid,
dat allen die U hebben verloochend
de moed vinden om naar U terug te gaan.
Wees je berust van de verschillende spelers die om de tafel van je persoonlijke identiteit zitten. Noem er eens vijf. 

""" 
1. De cynicus 
2. De angsthaas 
3. De struisvogel 
4. De volhouder tegen beter weten in 
5. De genieter 
6. De toegewijde 

Het benoemen van de positieve spelers kost veel meer moeite dan het identificeren van de negatieve spelers. Die laatsten lijken de boventoon te voeren. Dat kun je ombuigen. In de eerste plaats kun je erkennen dat de negatieve spelers er zijn, je kunt ze serieus nemen. In de tweede plaats kun je ook de positieve spelers ruimte geven om er te zijn. In de derde plaats kun je altijd kiezen, zie therapeutische oefening 5. Je kunt ervoor kiezen om de positieve spelers meer aan het woord te laten. 
Vanuit de gedachte dat handelen op zichzelf gevoelens van somberheid opzij zet kun je het handelen zelf cultiveren. Handel meditatief, dat wil zeggen denk na bij iedere stap, wees je bewust van de stap die je zet. Tel desnoods als dat zo uitkomt. Breng je gedachten bij je handeling, zoals je ze ook bij je ademhaling kunt brengen. Wees je bewust en zeg tegen jezelf: "Ik ben nu hier en hier mee bezig, ik ben nu bezig therapeutische oefening nummer 8 op te schrijven". Telkens als je gedachten wegzwermen breng je ze weer terug bij de handeling hier en nu. 
In lijn met oefening nummer 8. Wees je bewust van de maand en de dag in de maand die je vandaag beleeft. Wees je bewust van de dag in de week die je vandaag beleeft. Wees je bewust van het uur dat je nu beleeft. Laat de gevoelens bij je opkomen die horen bij deze dag, deze maand, dit uur. Denk daarbij als het uitkomt terug aan je kindertijd, je tijd als middelbare scholier, je studententijd, je tijd als jonge vader, als man van middelbare leeftijd. Hoe beleefde je die momenten? Het is vandaag zondag 2 oktober, het is nu 11:45 uur. Ik luister op de radio naar een strijkkwintet van César Franck. We zitten niet in de kerk, luisteren niet naar de preek van Huub Oosterhuis die hij nu houdt, hopelijk niet zijn laatste. 

/*\
title: action-timeout.js
type: application/javascript
module-type: widget
author: Eric Shulman elsdesign@gmail.com
revision: 1.4

$action-timeout invokes actions once after a specified delay, or repeatedly at a specified interval

\*/

(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var TimeoutWidget= function(parseTreeNode,options) {
	this.initialise(parseTreeNode,options);
};
TimeoutWidget.prototype = new Widget();
TimeoutWidget.prototype.render = function(parent,nextSibling) {
	this.computeAttributes();
	this.execute();
};
TimeoutWidget.prototype.execute = function() {
	this.delay     = this.getAttribute("delay",   "1000");
	this.interval  = this.getAttribute("interval","1000");
	this.actions   = this.getAttribute("actions",     "");
};
TimeoutWidget.prototype.refresh = function(changedTiddlers) {
	var changedAttributes = this.computeAttributes();
	if(Object.keys(changedAttributes).length > 0) { this.refreshSelf(); return true; }
	return this.refreshChildren(changedTiddlers);
};
TimeoutWidget.prototype.allowActionPropagation = function() { return false; };
TimeoutWidget.prototype.invokeAction = function(triggeringWidget,event) {
	var self=this;
	if (self.delay)    setTimeout( function() { self.invokeActionString(self.actions,self,event); }, self.delay);
	if (self.interval) setInterval(function() { self.invokeActionString(self.actions,self,event); }, self.interval);
	return true; // Action was invoked
};
exports["action-timeout"] = TimeoutWidget;
})();
\define temp() $:/temp/time/countdown/$(here)$

\define default_done() <$macrocall $name="showMessage" msg={{!!msg}} />

\define countdown_tick()
<!-- called from TiddlyTools/Time/Ticker -->
<$list filter="[prefix[$:/temp/time/countdown]]" variable="temp">
   <$list filter="[<temp>get[go]match[go]then<temp>]">
      <<showRemaining>>
      <$list filter="[<temp>get[text]match[1]then<temp>]">
         <$action-setfield $tiddler=<<temp>> go='stop' />
         <$vars here={{{ [<temp>split[/]last[]] }}}> {{!!done}} </$vars>
      </$list>
      <$list filter="[<temp>get[text]!match[1]then<temp>]">
         <$action-setfield $tiddler=<<temp>> text={{{ [<temp>get[text]subtract[1]] }}} />
      </$list>
   </$list>
</$list>
\end

\define showRemaining()
<$tiddler tiddler=<<temp>>>
<$vars  R={{{ [<temp>get[text]subtract[1]]       }}}>
<$vars  H={{{ [<R>divide[3600]trunc[]]           }}}>
<$vars HM={{{ [<H>multiply[60]]                  }}}>
<$vars  M={{{ [<R>divide[60]subtract<HM>trunc[]] }}}>
<$vars HS={{{ [<H>multiply[3600]]                }}}>
<$vars MS={{{ [<M>multiply[60]]                  }}}>
<$vars  S={{{ [<R>subtract<HS>subtract<MS>]      }}}>
<$action-setfield hours={{{ [<H>addprefix[00]split[]last[2]join[]] }}} />
<$action-setfield  mins={{{ [<M>addprefix[00]split[]last[2]join[]] }}} />
<$action-setfield  secs={{{ [<S>addprefix[00]split[]last[2]join[]] }}} />
\end

\define showMessage(msg:"Countdown completed")
<$action-setfield $tiddler="$(temp)$/msg"
   subtitle="""<$text text="$(here)$" />"""
       text="""@@font-size:2em; $msg$@@"""
     footer="""
         <$button class="tc-button tt-button" message="tm-close-tiddler"> close
            <$action-deletetiddler $tiddler="$(temp)$/msg" />
         </$button>
     """
/>
<$action-sendmessage $message="tm-modal" $param="$(temp)$/msg" />
\end

\define setCountdown(H:"00",M:"00",S:"00")
<$tiddler tiddler=<<temp>>>
<$action-setfield  text={{{ [[$H$]multiply[60]add[$M$]multiply[60]add[$S$]] }}} />
<$action-setfield hours={{{ [[$H$]addprefix[00]split[]last[2]join[]] }}} />
<$action-setfield  mins={{{ [[$M$]addprefix[00]split[]last[2]join[]] }}} />
<$action-setfield  secs={{{ [[$S$]addprefix[00]split[]last[2]join[]] }}} />
<$action-setfield  done=<<done>> />
\end

\define getCountdown()
<style> .tt-countdown { width:2.5em; text-align:center; } </style>
<span title="enter hours, minutes and seconds">
<$list filter="[<temp>get[go]match[go]then<temp>] -[<temp>get[text]match[0]then<temp>]"
   emptyMessage="""
   <$edit-text tiddler=<<temp>> field="hours" tag="input" class="tt-countdown" default="" placeholder="hh" />
   <$edit-text tiddler=<<temp>> field="mins"  tag="input" class="tt-countdown" default="" placeholder="mm" />
   <$edit-text tiddler=<<temp>> field="secs"  tag="input" class="tt-countdown" default="" placeholder="ss" />
   """>
   <input value={{{ [<temp>get[hours]] }}} class="tt-countdown" style="background:#eee;" disabled="disabled">
   <input value={{{ [<temp>get[mins]]  }}} class="tt-countdown" style="background:#eee;" disabled="disabled">
   <input value={{{ [<temp>get[secs]]  }}} class="tt-countdown" style="background:#eee;" disabled="disabled">
</$list>
</span>
\end

\define getMessage()
<$edit-text tiddler=<<temp>> field="msg" tag="input" size="30" default="" placeholder="enter a message" />
\end

\define start()
<$tiddler tiddler=<<temp>>>
<$vars H={{!!hours}} M={{!!mins}} S={{!!secs}}>
<$button class="tc-button tt-button">
   <$list filter="[<H>add<M>add<S>!match[0]]"  emptyMessage="@@color:gray; start@@" variable="if-not-zeros">
      <$list filter="[<temp>{!!go}!match[go]]" emptyMessage="@@color:gray; start@@" variable="if-not-countdown">
         start <$macrocall $name="setCountdown" H=<<H>> M=<<M>> S=<<S>> /> <$action-setfield go="go" />
      </$list>
   </$list>
</$button>
\end

\define pause()
<$tiddler tiddler=<<temp>>>
<$button class="tc-button tt-button">
   <$list filter="[<temp>get[text]compare:integer:gt[1]]" variable="has-countdown" emptyMessage="@@color:gray; pause@@">
      <$list filter="[{!!go}match[]then<temp>]">      @@color:gray; pause@@                 </$list>
      <$list filter="[{!!go}match[go]then<temp>]">    pause  <$action-setfield go="stop" /> </$list>
      <$list filter="[{!!go}match[stop]then<temp>]">  resume <$action-setfield go="go"   /> </$list>
   </$list>
</$button>
\end

\define reset()
<$button class="tc-button tt-button"> reset
   <$action-deletetiddler $tiddler=<<temp>> />
</$button>
\end

<$vars here=<<currentTiddler>>>
<$set  name="done" filter="[<done>!match[]]" value=<<done>> emptyValue=<<default_done>>>
<<getCountdown>> <<getMessage>> <<start>> <<pause>> <<reset>>
\define ticker_actions()
<$action-setfield $tiddler="$:/temp/time/ticker" text=<<now [UTC]YYYY0MM0DD0hh0mm0ss0XXX>> />
<$importvariables filter="TiddlyTools/Time/Alarms">    <<alarms_check>>   </$importvariables>
<$importvariables filter="TiddlyTools/Time/CountDown"> <<countdown_tick>> </$importvariables>
\end
<$action-timeout interval="1000" actions=<<ticker_actions>>/>

Sometimes TW can feel like a black box,  I made this plugin to get a better feel of my table of contents / index tiddlers at a glance. 

!! Download
* Drag[[ this|$:/plugins/hchaase/toc_counting]] to your wiki. latest version {{$:/plugins/hchaase/toc_counting!!version}}.

* Plugin dependencies (only for deep mode): The [[kin-filter|https://bimlas.gitlab.io/tw5-kin-filter/]]

!! Feedback
please add feedback /bugs in the threat in [[TW google groups|https://groups.google.com/forum/#!topic/TiddlyWiki/o6z8ig9a3bI]].


!! Readme
{{$:/plugins/HCHaase/toc_counting/readme}}


!! Changelog

{{$:/plugins/HCHaase/toc_counting/changelog}}
\import $:/plugins/kookma/todolist/macros/archive-operations
\import $:/plugins/kookma/todolist/macros/priority

!! Archive of completed (done) items

<$macrocall $name="todolist-empty-archived-tiddler" nameSpace={{!!td-namespace}} />

> <$macrocall $name="todolist-list-archived-items" nameSpace={{!!td-namespace}} />

\import $:/plugins/kookma/todolist/macros/archive-operations
\import $:/plugins/kookma/todolist/macros/priority

!! Archive of completed (done) items

<$macrocall $name="todolist-empty-archived-tiddler" nameSpace={{!!td-namespace}} />

> <$macrocall $name="todolist-list-archived-items" nameSpace={{!!td-namespace}} />

Vijf en een half jaar voorzitter geweest in roerige periode van de Ekklesia Amsterdam.

* Verzelfstandiging, losmaking Amerborg. Nieuwe afspraken met Huub Oosterhuis.
* Nieuw team met aanstelling Mirjam en Bart-Jan.
* Continuering diensten, koor, secretariaat, groepen, pastoraat, leerhuizen, maatschappelijke betrokkenheid, ook in lastige coronatijd.
* Zorgen voor financiële stabiliteit.

Alles samen met hele bestuur, waarin tot eind vorig jaar Hans Bart belangrijke ondersteunende rol speelde. En samen met Liturgisch Team, Mirjam en Alex, die hun eigen centrale positie en verantwoordelijkheid in de Ekklesia hebben. En samen met secretariaat dat sinds een jaar geheel uitgevoerd wordt door Stan en Tineke Teunen. En samen met alle andere vrijwilligers in de Ekklesia.

Je stijl:

* Relativerend. Spanning, daar brandt bij ons thuis het licht op.
* Vasthoudend in onderhandelingen
* Opgewekt
* Wijsheid!

Wijsheid, de filosofie, dat is wat je nu trekt, waar je hart naar uitgaat. We wensen je een goede tijd toe met veel ruimte om te studeren, om na te denken en te schrijven. Wellicht ook samen met anderen in de ekklesia. We danken je voor je enorme bijdrage aan het bestaan en de identiteit van de Ekklesia Amsterdam. En we wensen elkaar nog een lang en gelukkig leven toe.

Dank aan Hans Werner!

Vijf en een half jaar is Hans Werner voorzitter geweest van het bestuur van de Vereniging Ekklesia Amsterdam en het bestuur van de Stichting Ekklesia Leerhuis Amsterdam. De achter ons liggende periode was roerig en vol veranderingen voor de Ekklesia. De afspraken met onze huisbaas Amerborgh werden opnieuw vastgesteld. Huub Oosterhuis trok zich verder terug uit het dagelijkse bedrijf van de Ekklesia, wat ook leidde tot nieuwe onderlinge afspraken. Nieuwe leden van het Liturgisch Team werden aangesteld en ingewerkt. Intussen leefden we als Ekklesia door, ook in de lastige coronatijd. Hans heeft, samen met het team, het bestuur, het koor, de musici, de vrijwilligers, gezorgd voor stabiliteit. Zijn relativerende, maar vasthoudende stijl van besturen maakten hem tot een ideale voorzitter. Opgewektheid en wijsheid sierden hem. We zijn Hans erg dankbaar voor zijn bijdragen aan de Ekklesia in de afgelopen jaren. Wijsheid, filosofie, die blijven hem fascineren. We wensen Hans veel ruimte toe om te studeren. Wie weet samen met anderen in de Ekklesia. 
Beste Thea,

Bewonder je combi van praktische vindingrijkheid en theoretische interesse. Praktisch moet je zijn als docent en onderwijsadviseur. Maar theoretische belangstelling, in jouw geval het cultuurhistorische perspectief, heeft aan je onderzoek en je proefschrift extra diepgang gegeven.

Taalpsychologie is onderdeel geweest van je psychologie-opleiding in Nijmegen. Die kant van je onderzoek werd belicht in je verdediging vanmiddag. Je sprak over de taal van de figured worlds, waarvan docenten gebruik maken om elkaar feedback te geven. Je sprak over het gebruik van metaforen om verschillende ik-posities te integreren. Ik vond het een interessante kant aan je onderzoek dat bij het ontwikkelen van een professionele identiteit kennelijk ook het ontwikkelen van een taal behoort waarmee docenten een identiteit onder woorden brengen en waarmee ze met elkaar spreken over onderwijszaken. 
Elk promotietraject heeft hoogte- en dieptepunten. Na de startfase volgde voor jou een moeilijke fase die ook gepaard ging met gezondheidsproblemen. Je hebt doorgezet en met elkaar konden we als promotieteam de moed erin houden. Maar het was vooral jij die volhield. Grote bewondering. Op een zeker moment kwam de omslag toen de eerste papers geacceepteerd werden. Vanaf dat moment ging het steeds voorspoediger in je project en werden de bijeenkomsten op het Roeterseiland steeds vrolijker. 

Vanmiddag werd gezinspeeld op de ruime aandacht die je besteedde aan de docenten als individu en als groep en geringe aandacht in je proefschrift voor de omgeving van de medische faculteit waar je docenten werken. Daar hebben we het vaak over gehad in het promotieteam. Over het uitschakelen van je eigen observaties en opvattingen en over de noodzaak om te blijven denken vanuit het perspectief van je docenten. Dat is een goede keuze geweest en stelde je in staat om tot uitdrukking te brengen welke manieren docenten vonden om de soms weinig onderwijsgezinde mentaliteit in de directe omgeving van de docenten tegemoet te treden. 

Je proefschrift is een positief en hoopgevend verhaal geworden. Dank daarvoor. Met hetzelfde positieve gevoel kijk ik naar je toekomst als praktische onderwijsadviseur en theoretisch geïnteresseerde onderzoeker.
!!1. Waar zullen we beginnen
Corona is overal, geen neutraal terrein. Wat is er aan de hand, hebben we iets verkeerds gedaan, is God boos? Stoïcijnen: het is het lot, schik je erin. Epicuristen: je kunt er niets aan veranderen, maak je leven zo aangenaam mogelijk. Platonisten: we zijn voorbestemd voor een andere wereld. Christenen: de dood is niet het ergste dat je kan overkomen. Wat kunnen we doen? Vrijwilig de zorg helpen. Zoals de eerste christenen deden als de pest heerste. Zoals Jezus betaalde met zijn leven om ons te redden. Veel van ons vanzelfsprekende sociale gedrag stoelt op christelijke vernieuwing. God die zich bekommert om armen, zieken, verschoppelingen en slaven. 

!!!Een christelijk antwoord?
De coronacrisis met zijn verwoestende gevolgen laat zien hoe rot het politieke en sociale gebinte al langere tijd is. Is het de eindtijd, gaan we naar de hemel (Plato)? Of moeten we de gelegenheid benutten en onze vrienden over Jezus vertellen? Of zeggen we met Amos dat er geen onheil geschiedt zonder toedoen van God? We gaan beginnen in het OT.

!!2. Het Oude Testament
Ook onze politieke daden hebben gevolgen. De Babylonische ballingschap als straf op de zonde van Israël. Daarom wenden we ons tot God en vragen om vergeving (Klaagliederen, zie ook Daniël  9). Er is een directe oorzaak-gevolg relatie tussen verkeerd gedrag en tegenspoed. Zie ook de Psalmen. Handel eerlijk en het komt wel goed. Maar Psalm 73: de rechtvaardige heeft het slecht, de schurken hebben het goed. Pas in Gods heiligdom zien we een glimp van een groter, genezend standpunt. Psalm 44 ontkent de oorzaak-gevolg relatie. 
Boek Job: God roept je op om je te bekeren. //Maar dit is niet het punt.// Het zijn Jobs vrienden die stellen dat het om de zonde gaat. Job vindt dat God onrechtvaardig is als hij zo handelt. De lezers weten dat het om een andere strijd gaat. Weg met de gemakzuchtige vroomheid. Het boek Job heeft niet echt een "antwoord". Dat is een deel van de boodschap van Job: het raadsel blijft onoplosbaar. Job vraagt om een scheidsrechter tussen hem en God. Jezus? Het OT heeft twee lagen: (1) Het verhaal van God-en-Israel; God roept Israël als partner bij het redden van de mensheid. Na zonde en oordeel volgt genezing, redding, herstel en nieuwe schepping. (2) Het diepere verhaal van de goede schepping en de duistere macht die vanaf het begin heeft gepoogd Gods goede werk te vernietigen. In nare tijden moeten we het aan God overlaten en blijven geloven in zijn rechtvaardigheid. Jezus leefde dit verhaal.

!!3. Jezus en de evangeliën
Het NT: er gaat iets nieuws gebeuren, ''Nu''. Jezus waarschuwde dat het volk zich moest bekeren. Waarschuwde voor de op handen zijnde verwoesting van de tempel. Maar hij ging verder. Hij liet tekenen van de nieuwe schepping zien: water werd wijn, zieken werden genezen, hongerigen ontvingen voedsel, blinden konden zien, doden herleefden. Soms kijkt Jezus naar zonden in het verleden, als een oudtestamentische profeet, met de waarschuwing: Zondig niet meer! Soms kijkt hij vooruit, naar het nieuwe koninkrijk van God. De blinde man, heeft hij gezondigd? Jezus: nee, Gods werk moet door hem zichtbaar worden. Hij kijkt vooruit, //wat God eraan gaat doen.// Wat Hij, Jezus, eraan gaat doen, hij geneest de man. 

!!!Jezus zelf het ultieme 'teken'
Jezus staat op een omslagpunt. Hij vat de profetische traditie samen in een laatste waarschuwing: kom niet in opstand maar volg Gods weg van de vrede. Zie de intocht in Jeruzalem. Hij wijst vooruit naar de nieuwe wereld waarin Hijzelf het enige ware teken zal zijn. Laat oorlogen je niet verontrusten, die dingen moeten gebeuren, al is daarmee het einde nog niet gekomen. Jezus schuift de samenzweringstheorieën ter zijde. Blijf rustig en vertrouw op mij. Zie het Onze Vader: vergeef ons onze schulden, Uw koninkrijk kome. Dat bidden we //nu//, //elke dag//. We zijn berouwvol en we verwachten het koninkrijk. Maar we verzaken ook onze plicht. Vandaar de bede "Leid ons niet in beproeving, maar red ons uit de greep van het kwaad." Jezus als de laatste en de grootste van de profeten (Hebreeën 1:2). 
Hoe passen we de Bijbel toe op de gebeurtenissen van deze tijd? We moeten Jezus centraal stellen en vanuit Hem naar het overige kijken. Als Hij niet de Heer van het geheel is, is Hij in het geheel niet de Heer. Jezus herdefinieerde de oude beloften over God die koning wordt, over God die terugkeert om alles recht te zetten. Jezus openbaarde een andere betekenis van goddelijke soevereiniteit. Soevereiniteit is: melaatsen genezen en een berouwvolle vrouw vergeven. Soevereiniteit is: deelnemen aan maaltijden met verkeerde figuren. Soevereiniteit is: de intocht in Jeruzalem. Soevereiniteit is: de kruisdood ondergaan. Soevereiniteit is: na drie dagen weer onder de vrienden zijn. Dat zijn de ultieme tekenen. Zo spreekt God door de Zoon. Die gebeurtenissen vormen nu //de// oproep tot inkeer en //de// aanwijzing tot wat God doet in de wereld. Denk aan de gelijkenis van de pachters van de wijngaard (Mat 21:33-46). Na Jezus volgen geen waarschuwende tekenen meer. <mgeel>Met de verwerping van Jezus verspeelt Gods volk zijn laatste kans om de vernietiging van natie en tempel te voorkomen.</mgeel> Dat geldt ook voor de kerk. De oproep tot inkeer en de aankondiging van Gods koninkrijk komen niet meer door oorlogen, maar alleen via Jezus, via het verhaal van Jezus, via het volk van Jezus, via het vreemde werk van Jezus. Jezus regeert nu al, sinds zijn wederopstanding (Romeinen 1:4). Zijn regering eindigt als hij alle vijanden heeft onderworpen, inclusief de dood (15:25-26). <mgroen>Hoe ziet die regering er uit? Het antwoord op deze vraag kleurt onze poging tot begrijpen van de huidige gebeurtenissen</mgroen>. //Macht// betekent bij Jezus: dienen en je leven geven. Het verhaal van de opwekking van Lazarus. Jezus, die heeft gebeden, die weet wat Hij gaat doen, //huilt bij het graf van zijn vriend//. De verschrikking van de dood is overweldigend, in het bijzonder voor de Heer van het leven. Jezus in Getsemane is doodsbang. Zo worden in de Bijbel de begrippen macht en koninkrijk geherdefinieerd. Waarom liet Jezus de dood van Lazarus gebeuren? Waarom laat Jezus corona gebeuren? Jezus beschuldigt niemand maar kijkt vooruit om te zien wat er moet gebeuren. En de weg naar dat doel voert door tranen heen. 

<mrood>We moeten weer samenvoegen wat nooit losgemaakt had mogen worden: voorzienigheid en verzoening. Jezus als de ware Heer van de wereld. </mrood>

!!4. Het Nieuwe Testament
Het NT verwijst voortdurend terug naar het Uittocht verhaal. Het laatste avondmaal hoort bij Pesach en bij de komende gebeurtenissen. Kenmerkend voor Pesach: niemand heeft ooit gezegd dat Israël's slavernij het gevolg was van hun zonde. Jakob en zijn zonen denken bij de hongersnood niet: wat hebben wij fout gedaan, maar: hoe lossen we dit op. In Egypte is graan, daar gaan we heen. Dat patroon zouden we ook kunnen toepassen op onze huidige problemen. De eerste christengemeente in Antiochië wordt geconfronteerd met een hongersnood. Men zegt niet: wie is er schuldig? Maar: //wat kunnen we doen om te helpen//. <mrood>Eén van de grondbeginselen van het Koninkrijk Gods. God werkt door middel van mensen die Hem trouw zijn</mrood>. Dat hoort bij het gemaakt zijn 'als Gods evenbeeld'. Zie ook Romeinen 8:28. De Geest bewerkt dat de leden van de gemeente hun verantwoordelijkheid nemen als Gods ogen en oren, zijn handen en voeten, om te doen wat er in de wereld nodig is. Wat Jezus was geweest voor Israël, moesten zijn volgelingen zijn voor de wereld. 

De Bergrede beschrijft de mensen door wie God zijn koninkrijk op aarde vestigt, de nederigen, treurenden, zachtmoedigen, wie hongeren en dorsten naar gerechtigheid, de vredestichters. Zulke mensen zijn effectiever dan welke bliksemflits of donderslag ook. 

Het boek Openbaring lijkt een andere kant uit te wijzen. Plagen als tekenen, als voorspelling van de verwoesting van de grote stad Babylon? of Rome? Openbaring is geen voorspelling maar de openbaring van Jezus zelf. Openbaring onthult de waarheid over Jezus zelf, de overwinning van het lam. Ook zijn volgelingen zullen lijden. Ze gaan op in de identiteit van Jezus. Zo ook Paulus op verschillende plaatsen in zijn brieven. 

!!!Het zuchten van de schepping
Romeinen 8. Vol van geloof, hoop en liefde. Het hoofdstuk beschrijft een huis waar we allemaal wel in willen wonen. In het midden van het hoofdstuk staat een vreemde passage. //De Geest zelf verzekert onze geest dat wij Gods kinderen zijn. En nu we zijn kinderen zijn, zijn we ook zijn erfgenamen, erfgenamen van God. Samen met de Messias zijn wij erfgenamen: wij moeten delen in zijn lijden om met hem te kunnen delen in Gods luister (Rom 8:16-17)//. Door het lijden heen naar de luister. De erfenis is niet de hemel maar de totaal vernieuwde schepping, de hemel op aarde, de lang verwachte regering van verloste mensen over Gods schepping (psalm 8). <mgeel>Hoe wil God zijn wereld regeren?</mgeel> God wil zijn wereld door middel van mensen regeren. Allen in wie de Geest woont zullen beelddragers zijn. <mrood>Bij grote rampen worden de volgelingen van Jezus geroepen om mensen van gebed te zijn op de plaats waar de wereld pijn lijdt.</mrood> Eerst het zuchten van de wereld, vervolgens het zuchten van de kerk en ten slotte het zuchten van de Geest, in de kerk die in de wereld is. Wij zuchten mee met de zuchtende schepping. Wij bidden. Maar wij weten niet hoe we behoren te bidden. Dit is het moment bij uitstek waarop we opgenomen worden in het innerlijke leven van de drie-enige God. We ontdekken dat God zelf ook zucht, zucht zonder woorden. De God die we zien in Jezus is de God die huilde bij het graf van zijn vriend. <mgroen>Dat is onze roeping: in gebed gaan, misschien een woordeloos gebed, op het moment dat de wereld pijn lijdt.</mgroen> Zie Psalm 44. God weet geen passende woorden te spreken in de ellende. Wat moeten we met de zin (Rom 8:28): En wij weten dat voor wie God liefhebben, (...) alle dingen meewerken ten goede. Vormen "alle dingen" het onderwerp van de zin? Nee, waarschijnlijker is dat God het onderwerp van de zin vormt. Dan wordt het: God werkt alle dingen ten goede met en door middel van hen die hem liefhebben. Geen stoïcijnse berusting dus! Wij zijn geroepen om hard te werken, omdat wij weten dat God in ons werkt. Dat is onze roeping in deze tijd.

!!5. Hoe gaan we nu verder?

!!!Waarom moeten we klagen?
Begin met klagen als het essentiële christelijke antwoord op deze pandemie. Zie de Psalmen. Erken dat we niet over gemakkelijke antwoorden beschikken. Verdriet is immers een onderdeel van de liefde. 

T.S. Eliot - Four Quartets - East Coker

"""
I said to my soul, be still, and let the dark come upon you
Which shall be the darkness of God. As, in a theatre,
The lights are extinguished, for the scene to be changed
With a hollow rumble of wings, with a movement of darkness on darkness,
And we know that the hills and the trees, the distant panorama
And the bold imposing facade are all being rolled away—
Or as, when an underground train, in the tube, stops too long between stations
And the conversation rises and slowly fades into silence
And you see behind every face the mental emptiness deepen
Leaving only the growing terror of nothing to think about;
Or when, under ether, the mind is conscious but conscious of nothing—
I said to my soul, be still, and wait without hope
For hope would be hope for the wrong thing; wait without love,
For love would be love of the wrong thing; there is yet faith
But the faith and the love and the hope are all in the waiting.
Wait without thought, for you are not ready for thought:
So the darkness shall be the light, and the stillness the dancing.
Whisper of running streams, and winter lightning.
The wild thyme unseen and the wild strawberry,
The laughter in the garden, echoed ecstasy
Not lost, but requiring, pointing to the agony
Of death and birth.
 You say I am repeating
Something I have said before. I shall say it again.
Shall I say it again? In order to arrive there,
To arrive where you are, to get from where you are not,
 You must go by a way wherein there is no ecstasy.
In order to arrive at what you do not know
 You must go by a way which is the way of ignorance.
"""

Er is een tijd om je terug te trekken, te vasten. Een tijd om niet overhaast te oordelen. Delen in het zuchten van de Geest. 

!!!Hoe spreken wij over God?
Alleen in Jezus zelf zien en weten we wat het betekent als we zeggen dat God 'de macht' heeft over de wereld. Hij begreep het hele verhaal van Israël dat zelf al het middelpunt van het reddingsplan van de Schepper voor zijn wereld  vormde. In Jezus' kruisdood werd Gods koninkrijk opgericht. Veel dingen doen God verdriet, ze choqueren hem. Al in Gen 6 staat dat de verdorvenheid van de mensen God bedroefde in zijn hart. Het kwaad is een indringer in Gods schepping. Iedere poging te analyseren wat  het kwaad is veronderstelt dat we ons een geordend universum kunnen voorstellen waarin het kwaad een eigen toelaatbare plaats inneemt. Er zit geen goddelijke bedoeling achter het kwaad. <mrood>God delegeert het besturen van veel aspecten van zijn wereld feitelijk aan mensen.</mrood> Maar hij houdt mensen verantwoordelijk. We moeten dus onderzoek doen naar wat de virusuitbraak heeft veroorzaakt en moet daar rekenschap over worden afgelegd. Hoe leven we met dit probleem en hoe komen we er doorheen?

!!!Hoe leven we nu?
De kerk begint met tranen (Maria Magdalena), gesloten deuren (de apostelen bijeen) en twijfel (Thomas). Dat hebben we nu ook. Lockdown. Twijfel: is er nog ruimte voor geloof, voor hoop? Zoals Jezus er was voor Israël, zo is de kerk er voor de wereld. Jezus liet de tekenen van God zien: genezing in een wereld van ziekte, leven voor de doden. Jezus gaf zijn volgelingen de opdracht hetzelfde te doen. De eerste christenen boden zorg als ze te maken kregen met een besmettelijke ziekte. De christenen waren voor de wereld wat Jezus voor Israël was geweest. Het waren de christenen die onderwijs toegankelijk maakten buiten de kringen van de elite. Luther spoorde predikanten en pastores aan om tijdens de pest op hun post te blijven. Mooi citaat uit een brief, zou zo van dr. Rieux kunnen zijn! Onze klaagzang moet tot nieuw handelen leiden. In tijden van bezuiniging op de zorg moet de kerk protest laten horen en opstaan om te helpen. <mrood>We moeten als kerk een ethisch hoogstaand standpunt innemen, zo roepen we de wereld ter verantwoording in de kracht van de Geest.</mrood> Moeten we kerkdiensten blijven houden? Nee! Waar is God in de pandemie? Daarbuiten, aan de frontlijn, lijdend en stervend om genezing en hoop te brengen. <mrood>Maar kerken verwijzen nog steeds naar een essentiële dimensie van ons leven die ons moderne Westen heeft gepoogd te verdringen.</mrood> Het teken van Jezus moet aan de toekijkende wereld gegeven blijven worden. 

Dit is een tijd van ballingschap. Hoe kan ik de vreugde van de eucharistie ervaren als ik voor een computerscherm zit?

!!! Hoe komen we tot herstel?
Hoe keren we terug naar het nieuwe normaal, wat dat ook moge worden? Gaan we zorgpersoneel meer betalen? Gaan we minder vliegen? Wordt het een botsing tussen Asklepios en Mammon? [[Psalm 72]] stelt duidelijke prioriteiten. Dit heeft de kerk altijd geloofd, geleerd een in de praktijk gebracht. Na Psalm 72 volgt Psalm 73 met de klacht dat de rijken weer aan het langste eind trekken. Laten we visioen en werkelijkheid naast elkaar blijven houden en blijven zuchten.
"""
1.5 kg tomaten
3 knoflooktenen
3 takjes rozemarijn
Scheutje balsamico azijn
scheutje olijfolie
Beetje crème fraîche of room
Zout en peper uit de molen

Oven voorverwarmen op 200°. Tomaten wassen, kroontjes verwijderen. Rozemarijnnaalden van de takken. Knoflook grof hakken. Alles in metalen braadslee. Zout en peper, azijn en olijfolie (flink). Half uur in de oven. Pureren met roerzeef. Proef op zout en peper. Klodder crème fraîche, scheutje room of olijfolie in elke kom.
\define removeBtnActions()
<$action-listops $tiddler="$:/config/sq/floating-toolbar/button-list" $field="list" $subfilter="-[<currentTiddler>]"/>
\end

<div><$button class="tc-btn-invisible tc-btn-mini" actions=<<removeBtnActions>>> {{$:/core/images/close-button}} </$button>  <$link to=<<currentTiddler>>> {{!!caption}} <$transclude tiddler={{!!icon}}/></$link></div>
<$details summary="Open" open="no">
{{$:/core/ui/SideBar/Open}}
</$details><$details summary="Recent" open="no">
{{$:/core/ui/SideBar/Recent}}
</$details>
<$details summary="Quick" open="no">
<div style="width: 20em;">
<<arrownote>>
</div>
</$details>
<$details summary="Tools" open="no">
{{$:/core/ui/SideBar/Tools}}
</$details>
<$details summary="More" open="no">
<div class="tc-more-sidebar">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical tc-sidebar-tabs-more" explicitState="$:/state/tab/moresidebar-1850697562"/>
</div>
</$details>
<br>

<$list filter="[tag[Torfs: De kerk is fantastisch]sort[tocnr]]"/>


!Autocomplete problems

*If you downloaded Stroll between 5-21-2020 and 6-3-2020, your autocomplete probably isn't working. I fixed the problem, and you can drag [[this link|$:/config/EditorTypeMappings/text/vnd.tiddlywiki]] into your file to fix it. I accidentally forgot to tag this tiddler as ~$:/giffmex/stroll and ~$:/giffmex/blinks when I retagged the Stroll tiddlers on 5-21. Sorry! But it is fixed now.
*For autocomplete with Markdown, see the section on Markdown below.

!iOS

''I use iOS and want to disable the link autocomplete!''

<span class="indent1">

Unfortunately the autocomplete plugin (called the edit-comptext plugin) does not work in iOS and other contexts where one can't use the down arrow key.

To disable it, delete the following tiddler:  [[$:/config/EditorTypeMappings/text/vnd.tiddlywiki]] . This will return it to its default setting.

</span>

!Markdown

''I have the markdown plugin, but autocompletion for linking doesn't work in my Markdown tiddlers!''

<span class="indent1">

The autocompletion of links with double brackets `[[link]]` is controlled by the comptext plugin. Users of Markdown have noticed that they can't use the autocomplete in their Markdown tiddlers. To make autocompletion compatible with formatting in Markdown tiddlers, create a tiddler with the title `$:/config/EditorTypeMappings/text/x-markdown` and put this in the text field: `comptext`

Then, to enable the `[[]]` format for a link, open the following shadow tiddler: $:/config/markdown/renderWikiTextPragma and replace the text with: `\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock prettylink`

</span>


!~TiddlyMap

We ''do not'' recommend using ~TiddlyMap. We have found too many incompatibilities. I will not help anyone else who comes to me with problems related to it. That said, here are solutions to two issues:

''I get an error when doubleclicking a node while in fullscreen mode in ~TiddlyMap!''

You will need to stop using fullscreen mode, which, for now, is incompatible for some reason with Stroll. But there is an easy workaround:

# Install the link-to-tabs plugin from https://wikilabs.github.io/editions/link-to-tabs/ and save and refresh.
# Click the link icon over the Map tab (visible on clicking that tab). This will open ~TiddlyMap as a tiddler, and doubleclicking a node will open the tidder //in the story river//. 

''I installed ~TiddlyMap and now the columns are all messed up in two column mode!''

<span class="indent1">

Here is a hack to help you switch back and forth between wide and narrow sidebars: In the tiddler  ''~$:/plugins/felixhayashi/tiddlymap/hook/editor'' of your file, on a new line right after the first line (`\define width() calc(100% - 15px)`), insert the following:

```
\define lingo-base() $:/language/ThemeTweaks/

<$select tiddler="$:/themes/tiddlywiki/vanilla/options/sidebarlayout"><option value="fixed-fluid"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value="fluid-fixed"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select>
```

Now your 'Map' tab will have a dropdown at the top to change the columns/sidebar relationship between 'fluid-fixed' and 'fixed-fluid'.

</span>
<link href='https://fonts.googleapis.com/css?family=Playfair Display' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Sofia' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Alex Brush' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Akronim' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Annie Use Your Telescope' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Zilla Slab' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Consolas' rel='stylesheet'>

<style>
.st2 {font-family: 'Playfair Display';font-size: 42px;}
.st3 {font-family: 'Sofia';font-size: 42px;}
.st4 {font-family: 'Alex Brush';font-size: 42px;}
.st5 {font-family: 'Akronim';font-size: 42px;}
.st6 {font-family: 'Annie Use Your Telescope';font-size: 42px;}
.st7 {font-family:'Zilla Slab'; font-size: 42px;}
.st8 {font-family:'Inconsolata';font-size: 42px}
.st9 {font-family:'Consolas'; font-size: 42px}
</style>

<h1 class="st2">'Playfair Display'  1234567890 ABC abc</h1>
<h1 class="st3">'Sofia'  1234567890 ABC abc</h1>
<h1 class="st4">'Alex Brush'  1234567890 ABC abc</h1>
<h1 class="st5">'Akronim'  1234567890 ABC abc</h1>
<h1 class="st6">Sofia  1234567890 ABC abc</h1>
<h1 class="st7">'Zilla Slab' 1234567890 abc</h1>
<h1 class="st8">Incosolata 1234567890 abc</h1>
<h1 class="st9">Consolas 1234567890 abc</h1>
Sometimes you want to see notes side by side:

*To review one and write in another
*To compare and contrast two ideas
*To have a reference sheet or list of snippets open while you are writing

In Roam you would do this by adding a page to the sidebar. In Scroll you do it by opening two columns of tiddlers.

<span class="bluebox">

''Activities:''

#Hide the sidebar using the <<icon {{$:/core/images/chevron-right}} "">> icon at the top of the sidebar.

#Hold down the Shift button and click on these two links, [[Dave Gifford]]. It should appear in a separate column to the right.
#Do the same (shift-click) for the tiddler [[Muffin 1]].

</span>

Now you can view or edit tiddlers in either column, side-by-side!

Note: If you close tidders and only one tiddler is left, Stroll will revert back to one column.

!Diverting tiddlers between columns

<span class="bluebox">

''Activity:''

#Now click the <<icon {{$:/_sq/Stories/icons/divert-left.svg}} "">> and <<icon {{$:/_sq/Stories/icons/divert-right.svg}} "">> icons at the top of the tiddler to 'divert' the [[Muffin 1]] tiddler back and forth between the two columns.

</span>

!'Folding' (compressing) tiddlers

<span class="bluebox">

#Click the <<icon {{$:/core/images/fold-button}} "">> in any tiddler multiple times to compress or 'fold' the contents of the tiddler. Folding tiddlers makes it faster to scroll up and down the columns. Click the button again to 'unfold' the tiddler.

</span>

!Switching between one- and two-column mode

<span class="bluebox">

''Activity:''

#Open the sidebar back up. You will see a <<icon {{$:/_sq/Stories/icons/bars.svg}} "">> button in the sidebar. It is only visible when both columns are open. Click the button to return to one column mode. Click it again to open the two column mode again. 

</span>

!Adjusting the relative width (ratio) of the two columns

In the gear tab in the sidebar, you will find a slider to adjust the ratio of the two story columns. 

<span class="bluebox">

''Activity:''

#With tiddlers visible in both columns, slide the slider to see how it works.

</span>

https://tiddlywiki.com/static/Macro%2520Definitions%2520in%2520WikiText.html
To upgrade your Stroll file to the most recent version of TiddlyWiki, see https://tiddlywiki.com/static/Upgrading.html for details. 

After upgrading, come to the present tiddler (https://giffmex.org/stroll/stroll.html#Updating%20Stroll) and drag this tag pill: <<tag $:/giffmex/stroll>> into your file and save changes. This should update the tiddlers and add any new ones.
Tiddlers have two sides to them: a viewing mode and an editing mode.

!Viewing mode

*The buttons at the top right of the tiddler are called the 'viewtoolbar'.
**<<icon {{$:/core/images/edit-button}} "">> takes you to editing mode
**<<icon {{$:/core/images/close-button}} "">> closes the tiddler. It is now hidden but you can search for it in the searchbar or the tabs.
**<<icon {{$:/core/images/down-arrow}} "">> opens a menu of other buttons.
**You will find out about the other buttons in another step.

!Editing mode

*In editing mode you can change the tiddler title, add tags, add text, and make other advanced changes.
*<<icon {{$:/core/images/chevron-down}} "">> opens a dropdown we will explain in the 'Advanced stuff' tab
*<<icon {{$:/core/images/delete-button}} "">> deletes the tiddler
*<<icon {{$:/core/images/cancel-button}} "">> cancels changes made to the tiddler and returns to viewing mode
*<<icon {{$:/core/images/done-button}} "">> saves changes and returns to viewing mode

<span class="bluebox">

''Activity:''

Click the <<icon {{$:/core/images/edit-button}} "">> icon in the top right corner of the Welcome to Stroll tiddler to go into editing mode and see what it looks like. Then click either the <<icon {{$:/core/images/cancel-button}} "">> button or the <<icon {{$:/core/images/done-button}} "">> button and return to viewing mode.

</span>


<<ximg "/Teksten/20210416 Registratiekaart coronavaccinatie.jpg">>
| <$checkbox field='a' checked=1></$checkbox>|[[woensdag 22 september 2021]]|
| <$checkbox field='b' checked=1></$checkbox>|[[donderdag 23 september 2021]]|
| <$checkbox field='c' checked=1></$checkbox>|[[vrijdag 24 september 2021]]|
| <$checkbox field='d' checked=1></$checkbox>|[[zaterdag 25 september 2021]]|
| <$checkbox field='e' checked=1></$checkbox>|[[zondag 26 september 2021]]|
https://www.scriptiebank.be/sites/default/files/Masterproef%20-%20Marie%20Moonen.pdf
Mag je vreemdelingen met een verblijfsstatus na een strafrechtelijke veroordeling nog uitzetten, ook al verblijven ze al lang in Nederland? Het EVRM zegt ja, de auteur zegt nee.

Mooie aanbeveling, prima dossier.

Maatschappelijke relevantie 4
Vakrelevantie 4
Leesbaarheid 5
Diversiteit 4
"""
Inhoud verwijderd:

<$reveal type="nomatch" state=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-tags-wrapper"><$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/></div>
</$reveal>

Daardoor worden de tags niet meer in de standaard view mode weergegeven. Wel in de edit mode.

Ook veranderd in het list-veld van $:/tags/ViewTemplate
Daar staat nu alleen nog: $:/core/ui/ViewTemplate/title
Oorspronkelijk stond er:
$:/core/ui/ViewTemplate/title $:/core/ui/ViewTemplate/unfold $:/core/ui/ViewTemplate/classic $:/core/ui/ViewTemplate/body

Ook nog de inhoud verwijderd van $:/core/ui/ViewTemplate/subtitle:

\whitespace trim
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle">
<$link to={{!!modifier}} />
<$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div>
</$reveal>
https://classic.nl/rachmaninov-meest-vernieuwende-componist
In Zuid-Afrika, waar de Grondwet sinds 1993 expliciet verwijst naar menselijke waardigheid als grondslag, als waarde en als individueel recht, wordt menselijke waardigheid bij de uitleg van diverse grondrechten betrokken. Dit alles roept de vraag op wat nu precies het verschil is tussen regels en beginselen en wat hun onderlinge relatie is.
Wat moeten we doen:

| <$checkbox field='a' checked=1></$checkbox>|Rekeningen opzoeken van: hotel Venetië, hotel Argelato|
||<$checkbox field='b' checked=1></$checkbox>  Bruna|
||<$checkbox field='c' checked=1></$checkbox>  Venetië|
||Even nadenken. We hebben dat allemaal via internet gedaan. Is er een bevestiging via de mail?|
| <$checkbox field='d' checked=1></$checkbox>|Anne vragen of er nog andere kosten zijn|
| <$checkbox field='e' checked=1></$checkbox>|Website opzoeken|
| <$checkbox field='f' checked=1></$checkbox>|Rekeningen indienen|
Vestdijk over creativiteit
door S. Dresden
Aan het eind van een lang gesprek waarin verscheidene onderwerpen worden aangeroerd zijn Vestdijk en diens ondervrager het erover eens dat het geheim van het schrijverschap is opengelaten(1). Alleen daarom al zouden de enkele opmerkingen die ik wil maken aanmatigend te noemen zijn, en zulks te meer wanneer men bedenkt hoe ontzaglijk uitgebreid enerzijds de belangrijke literatuur over creativiteit is - om over de modieuze woekering maar geheel te zwijgen - en zich anderzijds het enorme oeuvre van Vestdijk voor ogen stelt waarin gedichten, romans, essays en studies over de meest uiteenlopende onderwerpen een bont geheel vormen. De gebruikelijke verontschuldigingen zijn dus geheel op hun plaats en het zal niemand verbazen dat ik mij, uitgaand van voorbeelden die her en der gekozen zijn, beperk tot een betrekkelijk korte reeks van beschouwingen die veel achterwege laten en zeker niet de pretentie van afronding in zich dragen, maar als mogelijkheden misschien bestaansrecht bezitten.

Daartoe biedt Vestdijk zelf een uitstekende gelegenheid, ook al lijkt die ver gezocht en van geen belang voor het eigenlijke onderwerp. De eerste woorden van een essay over historische contingentie luiden als volgt: ‘In het algemeen houdt de historicus zich te veel met feiten bezig, te weinig met mogelijkheden. Het experiment zit hem niet in het bloed, - het gedachtenexperiment -...’(2) Of deze opmerking nu waarheid behelst dan wel verworpen moet worden, doet in het geheel niet ter zake. Feit is dat Vestdijk voor mogelijkheden opteert, daarmee wellicht willens en wetens te kort doet aan de wetenschappelijkheid der geschiedwetenschap maar deze ook voert in de richting van verhalend proza, van romankunst zo men wil, waar zij sinds onheuglijke tijden niet ver van af stond. Voor een romancier is dat alleszins begrijpelijk en aanvaardbaar, vooral wanneer hij een dergelijke opvatting met zo groot meesterschap realiseert als

Over dit hoofdstuk/artikel
AUTEURS

S. Dresden

over Simon Vestdijk


(1)
Nol Gregoor, In gesprek met Simon Vestdijk (Amsterdam 1967), p. 143..
(2)
Essays in duodecimo (Amsterdam 1952), p. 23.
[p. 114]
Vestdijk in verschillende historische romans heeft gedaan. Maar er is, dunkt me, een ander aspect te belichten dat nauw met creativiteit samenhangt. Het gaat dan niet om vrije fantasie die een auteur binnen het historische raamwerk kan uitleven, maar om mogelijkheden als zodanig. Deze zijn karakteristiek voor het scheppingsproces zelf. Zo houdt Vestdijk het dan ook voor onbetwistbaar dat dit proces een voortdurende confrontatie met talloze mogelijkheden is(3) en wordt het scheppen gezien als een spelen met mogelijkheden waarvan het uieindelijke werkstuk slechts één der realisaties zal zijn. Ook zonder in te gaan op de boeiende problematiek die het mogelijke inhoudt, zal duidelijk zijn dat een mogelijkheid niet bestaat op de wijze die een feit kenmerkt, dat zij geen werkelijkheid is en dus eigenlijk niet is. Zij zweeft tussen zijn en niet-zijn in en daaraan geeft de kunstenaar die in het rijk der mogelijkheden verkeert de beste en misschien wel de enig ‘mogelijke’ uitdrukking. Door hiervan uit te gaan komen romans als De onmogelijke moord (betekenisvolle titel!), De filosoof en de sluipmoordenaar, de drie delen van de Symfonie van Victor Slingeland en verscheidene andere in het licht te staan dat hun bij een creativiteitsonderzoek toekomt. Bovendien is gemakkelijk in te zien waarom in zo veel romans (De schandalen bij voorbeeld) de intrige berust op zogenaamd wanbegrip van één of meer personnages, op achterdocht of op een zoeken naar redenen voor een bepaald gedrag, naar oorzaken, kortom naar mogelijkheden die bestaanbaar moeten worden geacht maar moeilijk te achterhalen zijn en in het werk dat men leest altijd een verbaal bestaan zullen behouden. Zij blijven onzeker, zoals de scheppende auteur zelf in het ongewisse blijft ja zelfs als persoon verdwijnt of een zwevend bestaan leidt en afwezig is. Hij is een knooppunt van mogelijkheden en daardoor zelf tot mogelijkheid geworden, een mogelijkheid die alles wat in hem omgaat uiteraard voor mogelijk houdt en het daarbij zou willen laten. In dat opzicht zijn een verhaal als De verdwenen horlogemaker uit Stomme getuigen of een romancier als naamloos romanpersonnage dan ook karakteristiek voor het feit dat Vestdijk juist de mogelijkheid ziet als

(3)
Gregoor, op. cit., p. 142. Vgl. Albert Verwey en de Idee (Rijswijk z.j.), p. 209: ‘... die eigenaardige conceptie van een oneindig aantal mogelijkheden, - het onbedrieglijkst kenmerk van den waren dichter.’ Verder o.a. verschillende passages uit De onmogelijke moord en Muiterij tegen het etmaal, II ('s Gravenhage 1947), pp. 115 en 252. Vestdijks nadruk op ‘probeersels’ e.d. staat natuurlijk in verband met zijn vroege en duurzame bewondering voor Valéry.
[p. 115]
oorsprong voor mogelijkheden van romans en essentieel voor het maken van kunstwerken.

Nu zal niemand aarzelen mij op een tegenstrijdigheid te betrappen. Hoe kan men immers feit, mogelijkheid en essentieel in één zin bij elkaar brengen? Deze termen sluiten elkaar uit en zijn ongetwijfeld van een verschillende orde. Ik moet het wel aanvaarden en voor lief nemen, maar zou er toch ook op willen wijzen dat voor de scheppende kunstenaar zoals Vestdijk die ziet en zelf is, mogelijkheden zijn als feiten, maar dan als feiten die een ander bestaan kennen en in wezen geen wezen bezitten. Omgekeerd is alles wat men conventioneel onder feiten en werkelijkheid of leven verstaat voor hem niet geheel en al reëel te noemen.

De ontpersoonlijking waarmee een leven temidden van mogelijkheden gepaard gaat heeft tot onvermijdelijk gevolg dat het gewone leven en de dagelijkse werkelijkheid een geheel andere functie krijgen en in vele opzichten van elk belang ontbloot raken. Over Vestdijks leven als persoon, over zijn remmingen en verlegenheid, over zijn welbewust isolement enz. enz. staan nogal wat biografische gegevens ter beschikking. Ik houd mij evenwel aan uitspraken die de schrijver zelf bekend heeft gemaakt of die uit zijn romans zonder moeite af te leiden zijn. Mij is namelijk nooit duidelijk geworden (zoals in traditionele literaire biografiek altijd gebeurt) in welke mate en op welke wijze de mens het werk ‘verklaart’. Zou de schrijver niet even goed kind van zijn werk kunnen zijn? Is er niet aan te denken dat zijn leven en zijn werk uit eenzelfde bron voortvloeien? In dat geval wordt het ene geenszins door het andere verklaard in de zin die eist dat men van oorzaak naar gevolg gaat. Hoe het ook zij, in het oeuvre van Vestdijk liggen meer dan voldoende uitgangspunten om uit te doen komen, dat de werkelijkheid die wij allen in het dagelijks leven kennen en beleven problematisch wordt en hij zelf in bepaalde opzichten onpersoonlijk. Welke dat zijn wil ik hier in verband met creativiteit aan de orde stellen. Aangezien het onjuist zou zijn te menen dat met een term als ontpersoonlijking veel laat staan alles gezegd is dient men voor elk geval afzonderlijk wel te preciseren. In het epos bijvoorbeeld wordt de dichter veelal geïnspireerd door de Muze en treedt hij dus op enigerlei wijze - bij verschillende auteurs geschiedt dat altijd weer anders - als persoon terug. Laat ik nu een al te grote sprong wagen en zonder overgang tot Zola komen. In zekere zin is hij ook een epicus te noemen, maar aan invloed der Muzen valt desondanks niet meer te denken. Hij is onpersoonlijk of zou dat

[p. 116]
althans wensen te zijn in zo verre hij voor objectief wetenschappelijk registrator van leven en werkelijkheid wil doorgaan, een schrijver dus die weergeeft wat is en daarbij op voor ieder controleerbare manier te werk gaat. Dat is weer heel wat anders dan de onpersoonlijkheid die door T.S. Eliot en anderen gepostuleerd werd: nu dient het eigen werk als het ware ingepast te worden in een universum van literatuur waar het natuurlijkerwijs thuis hoort, waardoor het bepaald wordt en dat het op zijn beurt mede bepaalt. En ten slotte is er niet aan te ontkomen een lange rij van romanciers te noemen die sinds het eind van de XIXde eeuw een desagregatie der persoonlijkheid in hun werk beschrijven. Proust is daarvan het meest glorierijke voorbeeld, bij hem en de vertegenwoordigers van de ‘nouveau roman’ zal ik het laten. Ook zo zal men de indruk gekregen hebben dat een wel zeer disparate hoeveelheid auteurs bij elkaar gebracht is. Dat zou dan onmiddellijk ook een bewijs leveren voor de noodzaak van specificatie: de vraag is nu waar zich de plaats van Vestdijk bevindt. Met Muzen heeft hij ondanks Mnemosyne in de bergen weinig van doen, met versplintering der persoonlijkheid slechts in geringe mate, daarentegen is hij wel degelijk overtuigd van een literaire wereld waarin hij zich voegt. Zijn talrijke essays over barok en verschillende auteurs, het gemak ook waarmee hij invloeden onderging en verwerkte, zijn duidelijke en grondige belangstelling voor de techniek van het métier, zij wijzen alle in de richting van een persoon die zich ontpersoonlijkt. Maar nog het dichtst komt Vestdijk bij realisten en naturalisten in de buurt. Dat zal niemand verbazen: hem is van zijn eerste werk tot het laatste obsceniteit, voorliefde voor het lagere in de mens, overdadige detaillering en wat dies meer zij regelmatig verweten. Niet alleen heeft hij daaronder geleden, hij beschouwde het ook als gebrekkig begrip voor wat hij deed. Het is dan ook, om het ronduit te zeggen, totaal fout! Bij enig nadenken blijkt namelijk, dat in zijn werken weliswaar enkele naturalistische procédé's of wat daarvoor door moet gaan aangetroffen worden, maar het wezenlijke uitgangspunt ervan juist ontbreekt. Het gaat hem, zoals gezegd, in het geheel niet om dè realiteit (die trouwens sinds het eind van de XIXde eeuw hoogst problematisch is geworden), maar juist om een derealisering, om zìjn werkelijkheid zo men wil. En die werkelijkheid is alleen maar werkelijk en werkzaam in zìjn werk. Dat werk ten slotte is ontsprongen aan een auteur die op zijn beurt iets spookachtigs krijgt en alleen op overigens nog altijd ontoereikende wijze als knooppunt van mogelijkheden te beschrijven is.

[p. 117]
Twee aspecten van wat ik hier onder spookachtig mag verstaan wil ik belichten, waarbij ik buiten beschouwing zal laten hoe een mens die niet wil zijn maar als brandpunt van al het mogelijke wil worden altijd bevreemdend en angstwekkend en tegelijk fascinerend zal aandoen. Zou ik hierop ingaan, dan word ik bijna onvermijdelijk naar biografisch materiaal teruggevoerd, ook al zou een vergelijking met een romanfiguur als Ulrich uit Musil's Der Mann ohne Eigenschaften voor de hand liggen. Bij deze opmerking laat ik het, voor Vestdijks creativiteit wil ik op andere zaken wijzen. Het wil mij voorkomen, dat zijn grote drang en vermogen tot identificatie direct samenhangt met zijn opvattingen betreffende de auteur als verzamelpunt van mogelijkheden. Op deze identificatie is verschillende malen gewezen(4), zelf heeft Vestdijk er trouwens ook meermalen aandacht aan besteed: ‘Identificatie: het is inderdaad, mits naar affiniteit en wezensgelijkheid nagestreefd, de bron van alle poëzie en van alle kunst.’ Of hij spreekt in een interview over ‘intuïtie en vereenzelvingsvermogen’ die voor zijn werk belangrijk zijn, en ten slotte vindt men in een ander vraaggesprek ook nog het volgende: ‘Wie ik zelf ben? In de eerste plaats alle ik-figuren in m'n romans. En (duidelijk geamuseerd) dat zijn er nogal wat.’(5) Het feit der identificatie is met deze woorden in alle duidelijkheid gesteld, hoe zij te werk gaat wordt evenwel in het midden gelaten. Dat zal ik voorlopig ook doen en dus genoegen nemen met de zekerheid dat de bron der creativiteit in dit onomstotelijk gegeven ligt, dat ontelbare mogelijkheden opent. Werkelijk ontelbaar? Vestdijk laat niet na over affiniteit enz. te spreken. Er moet dus gedacht worden aan een zekere beperking, aan een vrijheid die haar grenzen kent en niet alles zal willen. Daar staat dan toch weer tegenover dat zij wat intensiteit betreft dikwijls meer doet en verder gaat dan velen voor geoorloofd houden. Ik geef een voorbeeld dat niet betrokken is op romanfiguren die hij (hoe dan ook) zelf maakt, die dus ook op een speciale wijze in hem leven, maar denk nu allereerst aan vereenzelviging met bewonderde voorgangers. Op het ogenblik dat Meneer Visser's hellevaart in forum begint te verschijnen schrijft Du Perron aan Ter Braak: ‘... het is pijnlijk zooals hij bij Joyce geleend heeft... Je moet Vestdijk toch eens vragen... volgens welke opvatting hij erin slaagt zulke absolute

(4)
Vgl. in het bijzonder Martin Hartkamp, Identifikatie en isolement, in Maatstaf, XIX, 4/5, aug.-sept. 1971, p. 216 sq.
(5)
Muiterij, II, p. 131; Bibeb, De mens een ramp voor de wereld (Amsterdam 1969), p. 23; Bibeb, Bibeb en Vips (Amsterdam 1965), p. 10.
[p. 118]
pastiches onder eigen naam uit te geven’ en een paar weken later komt hij er nogmaals op terug: ‘Ik zou het niet begrijpen als hij niet inzag dat zooiets niet gaat!(6) Wat hier aan de orde is komt neer op een verschillende opvatting ten aanzien van creativiteit en originaliteit. Vestdijk imiteert en is dus niet origineel. Aanvaardt men dit uitgangspunt - zoals tegenwoordig en sinds tientallen jaren vrij algemeen wordt gedaan -, dan is er ook niets tegen in te brengen. Toch is door het gebruik van het woord pastiches eerder een probleem gesteld dan opgelost. Wat moet men bij voorbeeld beginnen met het onweerlegbare feit dat juist grote auteurs aanvankelijk dikwijls niet veel anders doen dan pasticheren? Goed, zal men opmerken, zij moeten hun oorspronkelijkheid in de loop van de jaren en van het werken veroveren. Ik zal het niet ontkennen, zelfs dan blijft het geval van degenen die er om verscheidene redenen weliswaar mee doorgaan. Mij lijkt het niet onwaarschijnlijk dat er ook nog andere oorzaken in het spel kunnen zijn. Inderdaad betreft het een soort spel waarin de beginnende schrijver zich oefent en zijn individuele creativiteit als het ware in bestaande banen leidt. Maar op die manier treedt ook een vorm van vereenzelviging op die pastiches op zekere wijze spookachtig maakt. Meestal is een onervaren lezer daarvoor ongevoelig, omdat hij de zaak niet door heeft of wel omdat de pasticheur via overdrijving, ironie en soortgelijke middelen laat zien dat het een niet serieus te nemen spelletje betreft. Zo wordt echter te kort gedaan niet alleen aan verscheidene pastiches en copieën (om de schilderkunst er een ogenblik bij te betrekken) die nauwelijks als zodanig te herkennen zijn, maar bovendien en vooral aan het wezen ervan. De meesterwerkjes die de pastiches van Proust vormen zijn een uitstekend voorbeeld: hij stelde naar zijn zeggen een innerlijke metronoom in op stijl toon en rhythme van een auteur (met wie hij zich verbonden voelde, voor wie hij affiniteit bezat), deed hem dus na en kwam zo tot een volwaardige herschepping die weliswaar een zekere vorm van ironie behield maar toch verdacht veel leek op het voorbeeld. Het resultaat bevat, als ik voor mij zelf mag spreken, ook iets griezeligs en de al dan niet bewust pasticherende auteur wordt tot een spookschrijver, in bepaalde zin tot een ghost-writer(7). Als

(6)
Menno ter Braak/E. du Perron, Briefwisseling, II (Amsterdam 1964), pp. 431 en 459. Voor Vestdijks pasticherende verering van Slauerhoff, vgl. Gestalten tegenover mij (Den Haag 1961), pp. 23 en 43.
(7)
Vgl. de critische editie die Jean Milly van Les pastiches de Proust (Paris 1970) heeft gegeven. Het verschijnsel pastiche is geenszins modern en levert juist waar het oudere literatuur betreft problemen op t.a.v. authenticiteit e.d. Het Vijfde Boek van Rabelais' werk is een berucht en nog steeds niet definitief opgelost voorbeeld daarvan.
[p. 119]
schrijver is hij niet zich zelf, toch vindt hij zich terug in de gedaante van een ander auteur. Hij gaat zo te werk uit bewondering en dikwijls om zich te oefenen, maar altijd omdat hij niet anders kan of wil. Dat nu lijkt mij de situatie van Vestdijk: hij heeft zijn leven lang een inderdaad griezelig vermogen, een karakteristieke mogelijkheid, behouden om zich in anderen te ontdekken. Daarbij komt dan nog iets van geheel andere aard. Vestdijk is, naar mijn mening, op andere wijze gevoelig voor literaire traditie en het erfgoed der literatuur dan Du Perron. Deze had tijdens zijn eerste Parijse jaren en later in contacten met Paul van Ostayen welbewust voor moderniteit gekozen. Daarenboven houdt hij zich bij zijn zeer uitgebreide lectuur uit verschillende periodes altijd aan een sterke en hoogst persoonlijke inzet. Voor hem is critiek en creativiteit niet denkbaar zonder krachtige en oorspronkelijke persoonlijkheid. Voor Vestdijk geldt dat wellicht in mindere mate, in ieder geval liggen de zaken anders ten opzichte van elkaar. Moderniteit ontkent hij in het geheel niet, persoonlijke indrukken evenmin, maar zij worden in verband gebracht met iets dat hem van jongsaf dierbaar was: het construeren van min of meer abstracte bouwsels en systemen (bijv. over Rilke als barokkunstenaar) die ordening brachten in de verwarrende hoeveelheid van literairhistorische feiten(8). Dit gaat samen het vermogen zijn persoon in anderen te doen opgaan en een (tijdelijke) eenheid met hen te creëren, zodat hij zowel van hen als van zich zelf is. Hij wordt, in critiek en in scheppend werk, tot een persoon die gefuseerd is met anderen en niet meer in de gebruikelijke zin van het woord als individu beschouwd kan worden.

Het is zo niet spookachtig dan toch bevreemdend. Die bevreemding wordt er niet minder op wanneer men een tweede aspect van ontpersoonlijking bekijkt. Tot vervelend wordens toe is Vestdijk achtervolgd met de titel van het werk dat Ter Braak aan hem gewijd heeft. Hij is er eens en voor altijd een duivelskunstenaar mee geworden(9). Des te meer moet het verbazing wekken dat er bij mijn weten vrijwel nooit belangstelling heeft bestaan voor een consequentie die toch voor het grijpen ligt zou men zeggen. Een duivelskunstenaar is een bezeten

(8)
Vgl. over die typologieën: Gestalten, p. 122.
(9)
Dat het hem zelf ook verveelde, blijkt uit Max Nord e.a., Over S. Vestdijk (Amsterdam z.j.), p. 5.
[p. 120]
kunstenaar, een mens die niet meer zich zelf is. Daarbij zou ik het kunnen laten want het is algemeen bekend hoezeer Vestdijk in zeer verschillende werken de aandacht vestigt op neurose en gebrekkige adaptatie aan het gewone leven, hoe groot zijn belangstelling is voor ‘de zieke mens in de romanliteratuur’ (in de studie die deze titel draagt komen overigens geesteszieken nauwelijks ter sprake), hoe dikwijls min of meer demonische figuren in de romans optreden en hoe regelmatig ook in muziek vormen van demonie ontdekt worden(10). Men zou kunnen volhouden dat de kunstenaar volgens Vestdijk altijd een bezetene is te noemen, een figuur die door buitenmenselijke krachten beheerst wordt. Daarmede volgt hij, zoals een ieder bekend, romantische opvattingen, ook al zal men er goed aan doen te bedenken dat de Romantiek op haar beurt talloze voorgangers moet erkennen. Het betreft dus oeroude denkbeelden die Vestdijk herneemt en waaraan hij, moet ik zeggen, weinig nieuws toevoegt. Wel blijft het van belang in te zien dat deze zogeheten realist, zo min als de andere trouwens, op dit punt die benaming geenszins kan velen, wat trouwens alleen de willekeur der gebruikelijke etiketten bewijst en verder ongeveer niets. Hier dus weinig origineels bij Vestdijk, maar dat weinige is niet onbelangrijk, doordringt zijn gehele werk en maakt dus wel degelijk zijn creatieve originaliteit uit. Ik zal mij er niet aan wagen Vestdijks godsdienstige of atheïstische of mystieke beschouwingen binnen dit verband te bespreken, en volsta met erop te wijzen dat demonische bezetenheid voor hem niet los staat van sacrale elementen, sterker nog: dat zij elkaar dikwijls insluiten en omvatten. Of men nu El Greco neemt in Het vijfde zegel of essays leest over de zo hogelijk bewonderde Mahler, een woord als sacraal-demonisch zal niet ontbreken of onwillekeurig in de geest van de lezer opkomen. Laat het dus voldoende mogen zijn, dat Vestdijk ernaar streeft niet alleen bestaande en aanvaarde opposities te ontkennen maar ze in elkaar te persen, zodat het religieuze ook ongodsdienstig, het schone lelijk (en vooral het lelijke mooi), het chaotische harmonieus of het buitensporige gewoon zal kunnen heten.

Wordt enerzijds werkelijkheid gederealiseerd en bij gevolg tot een verzameling van mogelijkheden en treedt anderzijds een vorm van ontpersoonlijking op, dan kan het vrijwel niet anders of er zal zich ook angst voordoen, angst ten aanzien van alles en niets. Het zou trouwens foutief zijn al te veel waarde te hechten aan de formulering

(10)
Vgl. Keurtroepen van Euterpe (Den Haag 1957), pp. 24, 38 sq., 110.
[p. 121]
die ik hier kies en die noodzakelijkerwijs ontoereikend moet worden geacht. Er is immers in deze complexe psychische situatie geen sprake van enerzijds en anderzijds, zo min als aan het ene dat gevolg is van het andere kan worden gedacht of aan verscheidene elementen van creativiteit die op zich zelf, los van de andere, in volle zuiverheid te onderzoeken zijn. Waar mogelijkheid en depersonalisering gevonden worden, zal ook angst zijn; waar angst in wezenlijke vorm heerst, is ook enz. enz. Aanvaardt men dit uitgangspunt, dan valt het niet te verwonderen dat Vestdijk te allen tijde aandacht besteedt, of beter gezegd: van nature gevoelig is en als het ware een zintuig bezit voor de functie en daadkracht van angst in literatuur en leven. Wanneer hij mededeelt in 1948 het plan opgevat te hebben een dissertatie te schrijven die later als studie verschijnen zal, Het wezen van de angst, kan men eventueel denken aan invloed van Sartre die op dat ogenblik de grote mode is en aan voorafgaande existentiefilosofie. Daarmede heeft Vestdijk zich inderdaad uitvoerig beziggehouden. Maar het is ook een feit dat hij veel eerder en naar het zich laat aanzien onafhankelijk van enige beïnvloeding over angst bij Kafka schrijft, dat ook Poe en Dostojewski in dat licht bezien worden en er ten slotte in vele ook vroege romans soortgelijke verschijnselen aan de orde komen. Of men nu om een enkel voorbeeld te geven het begin van St. Sebastiaan neemt of een aantal plaatsen uit Het vijfde zegel, Terug tot Ina Damman of passages uit Ivoren wachters, het zal geen enkele moeite kosten woorden als angst, leegte, afgrond en dergelijke regelmatig tegen te komen. En misschien kan men zich de moeite besparen door genoegen te nemen met één opmerking van de romancier die in Open boek optreedt en vaststelt dat iedere scheppende kunstenaar leegte kent, want ‘scheppen is scheppen uit niets’.(11). Ik laat in het midden of de artistieke creativiteit in zo duidelijke en krasse overeenkomst met het goddelijk scheppen kan worden gebracht. Mocht dat niet het geval zijn, dan blijft als feit bestaan dat deze kunstenaar om een of andere reden het in dit werk toch beweert, en als vraag blijft over of Vestdijk zelf die mening is toegedaan.

 

Ook zonder in te gaan op een reeks problemen die zich voordoet wanneer uitspraken van Vestdijk in romans en verhalen of gedichten in de behandeling worden betrokken en ook zonder deze te verge-

(11)
(Amsterdam 1957), p. 27.
[p. 122]
lijken met en af te wegen tegen opmerkingen of betogen die in essays uit eigen naam worden gesteld, kan worden opgemerkt dat overal creativiteit als feit en/of als fundamenteel gegeven aanwezig is. Zo zeer is dat het geval dat ik mij ontslagen mag achten van de plicht hier het grote aantal kunstenaarsromans of verhalen over een roeping op te sommen: zij tonen in ieder geval, zonder aan te tonen en in strikte zin te bewijzen, wat Vestdijk op dit punt en in die situatie voor geldig hield. Wil men daarvan kennis nemen, dan wordt met name het scheppen uit het niets sterk gerelativeerd. Dat gebeurt ook al spoedig want in Lier en lancet staat te lezen: ‘Zelfbevrijding en zelfbevestiging: zoo mag men de twee aanzichten noemen van wat den zin uitmaakt van ieder kunstscheppen’ en wordt even verder gesproken over de persoon die tijdelijk alles verbreekt wat hem bindt om zo tot ‘omvorming’ te komen(12). Over zelfbevrijding in de meest radicale zin heb ik het een en ander te berde gebracht; zelfbevestiging zou nu aan de beurt zijn, maar dan niet zonder eerst op omvorming gewezen te hebben dat als ik het goed zie nooit van toepassing kan zijn op de creatio ex nihilo. In dit verband wijst de term op een zekere tegenbeweging ten opzichte van wat eerder aan de orde kwam, en het is verleidelijk deze dubbelbeweging aan te duiden met dionysisch en apollinisch. Ontpersoonlijking met inspiratie en derealisering vormen de dionysische kracht, zelfbevestiging is van apollinische aard. Samen maken zij de creativiteit van de kunstenaar uit. Het is zeer wel mogelijk, zou ik denken, Vestdijks opvatttingen en werken onder die gezichtshoek te beschouwen, ook al wil ik eraan toevoegen dat hij ondanks bekende ‘antieke’ romans en enkele verspreide zinnen opmerkelijk weinig aandacht heeft besteed aan een mythische oppositie die sinds Nietzsche bij Nederlandse tijdgenoten en vrienden als Du Perron en vooral Ter Braak vurig werd besproken(13). Ik zal dan ook een andere weg kiezen en proberen te achterhalen wat Vestdijk, na de relatie van creativiteit en werkelijkheid, denkt over de betekenis van het werk als resultaat van het scheppen.

Vast staat dat het werk een vorm van zelfbevestiging zal zijn, maar hoe gaat deze te werk? Hoe komt zij letterlijk tot een werk? Ik behoef maar te herinneren aan een titel als De glanzende kiemcel om duidelijk te maken welke richting Vestdijks opvattingen aangeven.

(12)
(Rotterdam 1939), p. 117.
(13)
Ik heb de indruk dat commentatoren er regelmatiger op wijzen dan Vestdijk zelf. Vgl. o.a. Hella S. Haase in Raster, II, 3, p. 266 sq.
[p. 123]
Regelmatig en op de meest onverwachte momenten bovendien keert dit woord of eicel of levend organisme of organische eenheid terug(14). Zo dikwijls dat het als ik het eerlijk mag zeggen steeds moeilijker wordt te begrijpen wat precies bedoeld is. Wanneer bij bepaalde composities de vorm een organische eenheid is maar elders ook de logische samenhang organisch van aard wordt genoemd, wanneer ten slotte een mooie melodie is als een levend organisme, dan is het moeilijk te weten waaraan men zich nu moet houden. Wordt dan ook nog over een kiemceltechniek gesproken, dan zal een zeker onbehagen alleen maar groeien(15). Hiermee is niet gezegd dat men er het best aan zal doen de opmerkingen van Vestdijk te laten voor wat zij zijn, daarvoor zijn zij zeker te belangrijk en te karakteristiek. En wel in twee opzichten: allereerst moet erkend worden dat Vestdijk zich naast deze opmerkingen ook op geheel andere zo niet tegengestelde wijze heeft uitgelaten. In het reeds genoemde gesprek met Gregoor wordt rijpen een vervelend woord genoemd. Alles goed en wel, maar men zal er toch niet aan ontkomen een zeker verband te zien met organisch groeien. Ook wordt door Vestdijk zelf enigszins geïrriteerd vastgesteld dat de kiemceltheorie te pas en te onpas wordt aangevoerd, dat het bovendien helemaal geen theorie maar een constatering betreft(16). Het is niet geheel onmogelijk dat zich een zekere tweeslachtigheid of dubbelzinnigheid in Vestdijks denken voordoet: het essayisme dat hij met natuurlijke voorkeur en meesterlijk vermogen bedrijft biedt hem daartoe alle gelegenheid en maakt het bijna noodzakelijk dat hij geen hechte theorie opstelt maar de zaken open en onbeslist laat om zo veel mogelijk kanten ervan tegelijk te doen uitkomen. Daarop ga ik na alles wat over mogelijkheden gezegd is niet verder in, wel zou ik in het voorbijgaan willen wijzen op het literairhistorisch belang van deze organistische ‘theorie’. Niet alleen zet Vestdijk hier voort wat sinds de Romantiek aan de orde van de dag is en handhaaft hij op zijn wijze de tegenstelling tussen organisch en mechanisch, hij kiest ook (wat aarzelend misschien en uiteraard zonder zich definitief uit te spreken) partij in een strijd die uiteindelijk tot de oprichting van Forum leidt. Het is bekend dat Binnendijk in zijn inleiding voor de bloemlezing Prisma nogal hevig

(14)
Vgl. vele passages in De glanzende kiemcel; Lier en lancet, p. 62; Muziekessays, 3 (Amsterdam 1983), pp. 93, 99, 106, 255; Muziekessays, 6 (Amsterdam 1984), p. 39.
(15)
Muziekessays, 6, p. 177.
(16)
Op. cit., p. 34; Muziekessays, 3, pp. 99 en 106.
[p. 124]
schermt met organisch en creatief, woorden die voor hem eigenlijk synoniemen zijn en begrippen die elkaar in ieder geval veronderstellen. Het verzet daartegen onder andere brengt Forum te weeg. Vestdijk heeft weliswaar aan de discussie geen deel genomen - hij stond op dat ogenblik nog buiten de literatuurwereld om zo te zeggen -, maar hij zal wat later toch tot Forum behoren voorzover daarover gesproken mag worden(17). Tot Forum, maar ook op dit punt niet van Forum: Vestdijk voelde toen reeds voor en is ook later niet afkerig geweest van een reeks gedachten waarvoor bij Ter Braak en anderen een taboe bestond. Evenmin als Du Perron of Greshoff wenste hij (in theorie althans) van doen te hebben met begrippen en opmerkingen die het mysterie der creativiteit nog onbegrijpelijker maakten dan het al was. Voor sleutelwoorden die volgens anderen van het grootste belang waren maar de toets van luciede bezinning niet konden doorstaan, hadden zij geen woord over. Het merkwaardige is nu dat Vestdijk weliswaar deze nadrukkelijk verworpen theorie overneemt en regelmatig naar voren brengt maar het ook en tegelijkertijd met Forum eens is.

Daardoor wordt hij alleen maar interessanter, en dat kan gemakkelijk worden aangetoond wanneer ik na de rol van werkelijkheid en van werk in creativiteit overga tot de betekenis van werken als zodanig. Ik doel dan niet in de eerste plaats, ook al is het fundamenteel, op dagindelingen regelmaat enz. enz.(18). Voor mij is het belangrijker te constateren dat werken plaats vindt bij Vestdijk nà het rijpingsproces. In dat geval zou men staande kunnen houden dat het werken, het schrijven, eigenlijk neerkomt op een overschrijven van wat gegroeid is en (innerlijk) een gegeven feit geworden. Dat zou de algemeen bekende maar ook altijd verbijsterende snelheid kunnen verklaren waarmee Vestdijk te werk ging, het zou tevens passen in de ‘pasticherende’ manier van doen die hem eigen was en ten slotte ook een bevredigende oorzaak inhouden van de eerder besproken tegenstelling tussen organisch en mechanisch. Dat zou inderdaad allemaal het geval kunnen zijn, ware het niet dat Vestdijk ook aandacht vraagt voor de nieuwsgierigheid waarmee hij zelf uitkijkt naar het verloop van het verhaal en in het algemeen altijd weer de nadruk legt op mogelijkheden die een auteur en de dichter met name ter

(17)
Vgl. in het bijzonder J.J. Oversteegen, Vorm of vent (Amsterdam 1969).
(18)
Vgl. Gregoor, op. cit., p. 10 sq.
[p. 125]
beschikking staan. Dan is toch, zou men zeggen, het rijpingsproces niet volledig voltooid vóór het schrijven of kan het in ieder geval tijdens en door het schrijven weer in beweging worden gezet. Een beslissende uitspraak hieromtrent kan ik bij Vestdijk niet vinden. Desondanks staat één ding vast: het is al te gemakkelijk en ook onjuist deze twee aspecten van creativiteit uit elkaar te halen, los van elkaar te beschouwen en hun zogenaamde onafhankelijkheid of zelfs tegenstrijdigheid te doen blijken door wederom aan een overigens niet te ontkennen vorm van essayisme te herinneren. Men kan dan genoegen nemen met enerzijds het erkennen binnen de creativiteit van de dionysische roes en het natuurlijke groeiproces en onderzijds de regelmaat en noodzaak constateren van het werken dat met ‘bloed, zweet en tranen’ gepaard gaat. Dat schijnt, zoals gezegd, een gemakkelijke en dus prettige oplossing te bieden van raadselachtige moeilijkheden. Naar mijn mening is men evenwel verder dan ooit verwijderd van een ware beschrijving. Wil ik daartoe geraken, dan is het onvermijdelijk terug te keren niet alleen tot Vestdijks essayistische inslag en het daarmee samenhangende enerzijds/anderzijds of de dubbelzinnigheid en tweeslachtigheid maar ook tot de samenpersing waarover al iets gezegd werd. In plaats van allerlei ‘elementen’ der creativiteit uit elkaar te halen en af te zonderen, moet nu de grootst mogelijke nadruk worden gelegd op het feit dat men daarin niet slagen zal en er zelfs zonder wezenlijke denaturering niet aan kan beginnen. Zeker, er zijn twee zijden te zien, het groeien en het werken bij voorbeeld, maar zij zijn als twee zijden van één en hetzelfde blad papier!(19)

Is dat het geval en een onontkoombaar uitgangspunt, dan zal men creativiteit, zoals Vestdijk die in essays behandelt en zoals zij zich in zijn verdere oeuvre voordoet, op geheel andere en naar mijn overweging ook op de enig juiste wijze moeten zien. Geen sprake is er meer van verschijnselen die in verschillende of zo men wil tegengestelde richting wijzen, geen scheiding kan worden gemaakt tussen organisch groeien en mechanisch werken. In plaats van diversiteit heeft men te maken met eenheid. Wil men toch zeggen: met eenheid van verscheidene tendenties, mij is het om het even als er dan maar onmiddellijk aan wordt toegevoegd dat het in creativiteit klaarblijkelijk gaat om een gespannen-zijn dat zich als stuwende kracht voor-

(19)
De vergelijking ontleen ik aan Saussure die haar in ander verband gebruikt.
[p. 126]
doet. Ik moet toegeven dat Vestdijk maar zelden over spanning spreekt, toch kan ook bij hem op indirecte uitlatingen en niet te miskennen feiten worden gewezen. Over de snelheid van werken sprak ik al, nu moet zijn lust tot ononderbroken werken daaraan worden toegevoegd. De totale en isolerende concentratie op datgene wat hij onder handen heeft moet wel duiden op een spanning die ten koste van alles behouden dient te blijven en zich alleen in het werk, dat eindpunt is van het werken, ontladen kan. Een heel voorlopig eindpunt, zoals een ieder bekend is: nauwelijks was een einde bereikt of de creativiteit herneemt haar spanning en dringt zich voort naar een ander werkstuk. Er heerst levenslang een krachtig rhythme en rhythme is onder andere ook een spanningsverschijnsel. Wat voor Vestdijk zelf geldt, is evenzeer waar voor iedere andere kunstenaar, en het is geen toeval dat hij daarbij enkele keren (zij het helaas al te kort) heeft stil gestaan. Ik denk dan aan een aantal opmerkingen en suggesties dat betrekking heeft op een eventuele curve der creativiteit die zich in het artistieke bestaan zou manifesteren. Kort gezegd komen zij neer op een feit dat ongetwijfeld banaal zal worden genoemd: met de jaren neemt de creativiteit af en wordt de spanning minder intens. Dat is inderdaad tientallen keren opgemerkt en wordt ook algemeen aanvaard. Of de constatering daarom ook juist is, blijft voor mij een vraag. In ieder geval houdt Vestdijk zich eraan, maar hij voegt er ook het nodige aan toe. Spreekt hij over de ‘ouderdoms-gedichten’ van Hölderlin of Gorter, dan gebeurt dat als gevolg van een leeservaring die alleen maar hoogst merkwaardig en in bepaalde opzichten ook weer griezelig te noemen is. In een essay dat de betekenisvolle titel Gorter's versteening draagt en waar ook Hölderlin zijdelings (zoals altijd!) ter sprake komt, maakt Vestdijk gewag van een evolutie die zich als involutie voordoet, als ‘een ontwikkeling naar beneden toe’. Het betreft geenszins een ‘talent in ontbinding’, maar ‘het laatste stadium van een ontwikkelingsproces, dat... met ijzeren consequentie, naar het anorganische, het doode en doodsche, het gruwelijk verstarde, toe gericht is.’(20) Ook wanneer niet wordt ingegaan op de eventuele betwistbaarheid van deze woorden en op de involutie, blijven zij van gewicht voor de opvatttingen van Vestdijk zelf. Hij ontkent niet dat er een ontwikkeling plaats vindt, maar

(20)
Muiterij, II, p. 9. Vgl. verder Keurtroepen van Euterpe, p. 31 en vooral Essays in duodecimo, p. 146 sq. Over ‘kristallen’ wordt uitvoerig gesproken in Albert Verwey en de Idee.
[p. 127]
zij voert ten dode. Betekent dit nu ook dat elke creatieve spanning ontbreken zal? Men zou er totaal fout aan doen te denken dat naar Vestdijks mening de genoemde dichters in de loop der jaren op hun dichterlijke routine en virtuositeit voortgaan en daarin verstrikt raken. Het wil mij toeschijnen dat er door hem vooral op iets anders gedoeld wordt. Aan het eind van Het vijfde zegel komt de vulcanisch en ondergrondse schilder tot een verhelderend inzicht. Dat vindt niet voor niets plaats terwijl hij naar een processie kijkt, ook al zal ik de religieuze betekenis daarvan niet aanroeren. In dit verband is het opmerkelijker dat El Greco zo intens getroffen wordt door de sjokkende ossen die de wagens voorttrekken. Het is hun onverbiddelijke, gelijkmatige, ogenschijnlijk altijd voort durende gang die hem fascineert en ten voorbeeld strekt. Een voorbeeld, zo men wil, van het ononderbroken, regelmatige en krachtige werken. Daarin moet het ondergrondse schilderen zich voortaan manifesteren. Dat wil zeggen: het is zeker niet opgeheven in de zin van verdwenen (met het gevolg dat ook spanning zou ontbreken) maar het wordt verheven en gezuiverd of althans doorlicht in een werken dat weet waarmee het zich bezighoudt. Dan is het ook zeer wel mogelijk dat deze creatieve eenheid moet leiden tot het dode en doodse. De gedachten zullen vrijwel onvermijdelijk uitgaan naar de meditaties van Goethe in Thomas Mann's Lotte in Weimar die betrekking hebben op de zuiverheid, de volmaaktheid en het doodse van een kristal. In zekere zin is elk werk resultaat èn (tijdelijke) dood der creativiteit. Mag men dit nog kunst noemen, vraagt Vestdijk zich dan ook af, ‘schoonheid’? en zijn antwoord is: ‘Ik weet het niet. Ik weet alleen, dat het onmenschelijk is en misschien grootsch.’ Het is deze opperste spanning, zou ik eraan willen toevoegen, die de eenheid schept waarin leven en dood zich onontwarbaar met elkaar verenigen, waarin groeien en werken niet te onderscheiden zijn en een term als Vestdijks kiemceltechniek zijn volle zin krijgt. Er heerst een kracht die zich in volle ontplooiing vernietigt, die om met Vestdijk te spreken anorganisch wordt en het verstarde tot doel heeft. Dat die kracht desondanks nog altijd herkenbaar blijft, maakt het gruwelijke maar ook het griezelige uit dat grote kunstwerken aankleeft.

 

Het zal niet veel opleveren wanneer deze stuwende kracht verder in het algemeen beschreven wordt. Vandaar dan ook dat men meestal genoegen heeft genomen met alle mogelijke vluchtwegen die soms heel diepe benamingen dragen maar vrijwel altijd alleen maar doen

[p. 128]
uitkomen hoe zeer het perspectief verschuift en het doel steeds aan de horizon opdoemt. Woorden als gave, mysterie, roeping enz. enz. betekenen in feite niets omdat zij alles wat verklaard en beschreven moet worden al bij voorbaat veronderstellen. Ik zal niet beweren, dat een onderzoek naar creativiteit ooit tot een definitief einde kan geraken. Eigenlijk ben ik ervan overtuigd dat het daarin zelfs niet màg slagen, maar ik zou dan ook willen nagaan en althans enigszins wensen te begrijpen waarop mijn zogeheten overtuiging gebaseerd is en waaraan argumenten te ontlenen zijn. Uitgangspunt zal dan behoren te zijn dat de specifieke creativiteit van dèze kunstenaar of van diè geleerde wordt onderzocht. Wanneer dat langdurig en uitgebreid is geschied valt misschien te denken aan enkele tentatieve opmerkingen over het scheppend vermogen in het algemeen. Op dit ogenblik zou ik niet daaraan denken, mij is het meer dan voldoende om misschien iets te kunnen achterhalen van de stuwende kracht die Vestdijk lijkt voort te drijven en van de gevolgen die deze kracht in zich draagt.

Als dat de bedoeling is, mag ik allereerst volstaan met een simpele vermelding van de overbekende ‘vorm of vent’-theorie die in de jaren '30 de literaire geesten zo zeer in beslag heeft genomen. Onderzoek daarnaar is nauwkeurig gedaan en het heeft geen zin vele vlot gebruikte begrippen als authenticiteit, zuiverheid, persoon(lijkheid), voornaamheid, honnêteté e.d. nogmaals te behandelen(21). Te minder omdat Vestdijk toen en ook later niet bepaald met volledige inzet aan de strijd heeft deelgenomen. Ten slotte zal hij de antithese persoon/talent wantrouwen en als een filosofisch schijnprobleem beschouwen(22). Dit hij zich zo min als iemand anders kan onttrekken aan gangbare terminologie en heersende theorieën, blijkt echter uit een opvatting die belangrijker is wanneer het om zijn vorm van creativiteit gaat. In de brieven aan Marsman die gevoegd zijn bij Heden ik, morgen gij is weliswaar sprake van de genoemde tegenstelling maar nu wordt deze niet los gezien van wat Vestdijk disharmonie noemt. Als ik het goed zie, wordt daarmede juist spanning bedoeld. Hoe de velerlei spanningen zich voordoen in het dagelijks leven (of in het geruzie rondom de Van der Hoogt-prijs), in hoeverre zij te

(21)
Ik verwijs nogmaals naar het fundamentele werk van Oversteegen.
(22)
Vgl. Gregoor, op. cit., p. 9: ‘... die antithese ... van talent en persoonlijkheid, waar trouwens niemand uitkwam. Omdat talent zonder persoonlijkheid eenvoudig niet de moeite waard was om over te spreken, en persoonlijkheid zonder talent niet, en dat je nooit een zuivere tegenstelling kreeg. Dat het hele probleem filosofisch een schijnprobleem was.’
[p. 129]
maken hebben met Vestdijks zogenoemde karakterloosheid die hem per definitie niet tot een sterke persoonlijkheid zou maken, of hoe hij zelf die relatie ziet, doet in het geheel niet ter zake. Enig gegeven is op dit ogenblik voor mij het vaststaande feit dat disharmonie en dus spanning tot basis van artistiek creëren wordt geproclameerd, en een synthese berustend op en voortkomend uit deze basis wordt nagestreefd. Blijft de vraag waaraan deze gespannen disharmonie, die tot werk en werken voert, bij Vestdijk, ontspringt.

Daaromtrent kan mijns inziens geen twijfel bestaan: men zal moeten denken aan wat ik gemakshalve het ‘Ina Damman-complex’ wil noemen. Bij elke nadere behandeling ervan zal duidelijk zijn, dat het mij niet in het minst te doen is om een gebeurtenis uit Vestdijks jeugd te achterhalen. Ik ga zo ver te beweren dat er voor mij, ook al zou er niets reëel gebeurd zijn, toch niets verandert aan en in het werk dat Vestdijk schrijven zal. Mij is het voldoende te weten wat Vestdijk in geschrifte altijd weer voortdreef en in vele opzichten voor hem een absolutum is blijven betekenen, zoals ook El Greco op het absolute gericht is. Een belangrijk facet van dit absolutum, dat dus niet alleen in de Anton Wachter-romans maar overal (zij het met verschillende intensiteit) aanwezig zal zijn, kan aangeduid worden met niet-bezitten. Van een titel als Terug tot Ina Damman is het eerste woord al direct karakteristiek. Er wordt over een verleden geschreven, over iets dat er in vele opzichten niet meer is en in de strikte zin van het woord niet bezeten kan worden. Elk individu is meer zijn verleden dan dat hij het in bezit heeft. Zo zal het terug-willen nauw samenhangen niet met een hernieuwd bezitten (dat er overigens ook niet eens geweest is), maar met een bepaalde vorm van zijn, die alleen ideëel bezit kan opleveren(23). Aan deze eigenaardige combinatie geven de laatste bladzijde van de roman en in het bijzonder de laatste woorden volledig uitdrukking. Anton Wachter heeft definitief van Ina afscheid genomen. Hij loopt naar huis terug en verlangt alleen naar het bruine ‘Note Book’, een soort dagboek (dat dus de behoefte aan beschrijven of literatuur, zo men wil, naast en in de plaats van beleven doet uitkomen). Achter hem - en dat is ook een beeld voor terugkeren - rijdt de trein en ligt het plein waar hij werkelijk geleefd heeft. En

(23)
Over de functie van verleden, van geschiedenis en tijd heeft Vestdijk zich herhaaldelijk, men zou bijna zeggen in elk werk, direct of indirect uitgelaten. Vgl. in het bijzonder Het eeuwige telaat. Voorzover ik kan nagaan, is aan dit essentiële onderwerp nauwelijks enige aandacht besteed.
[p. 130]
dan het einde: ‘... hoe onwankelbaar trouw hij blijven zou aan iets dat hij verloren had, - aan iets dat hij nooit had bezeten.’

Het einde dus van de eerste roman, ook al is deze afkomstig, als ik het zo mag zeggen, uit een veel groter manuscript, Kind tussen vier vrouwen, dat lange jaren onuitgegeven is gebleven en nog steeds niet in zijn ware gedaante publiek is gemaakt. Uiteraard bevat het ook in de huidige vorm veel van wat Ina Damman aan te horen geeft èn veel van alle volgende werken. Het einde waarover ik hier sprak is namelijk geen einde en geen begin, het is de eerste manifestatie van een altijd aanwezig en overal door dringend complex. Zou het toeval zijn dat in de eerste bladzijden van Kind tussen vier vrouwen sleutelwoorden als zweven, terugkomen, tijd, leegte, verlangen, angst meermalen voorkomen of een zinnetje als ‘ik ben in hem verdwenen. Ik, - of hìj nu?’ Woorden en ‘feiten’ die vergeleken moeten worden, om een grote sprong te maken, met het ontroerende einde van een veel latere roman als De koperen tuin: ‘het ongeneeslijke verdriet, dat nu mijn enige bezit was geworden, en dat ik niet eens meer zou willen missen...’ Niet zou willen en niet zou kunnen missen! Het begin van Sint Sebastiaan verhaalt van een kind dat gespeend werd: ‘Er gleed een mes tusschen honger en genot...’ en vervolgens tast ‘het protest om wat hem ontstolen was stil en geduldig naar uitdrukking.’ Zo wordt Anton Wachter een kind dat ‘iets goed te maken had, iets te herstellen.’ De ondertitel van deze roman is De geschiedenis van een talent en al wenst men dikwijls eraan te herinneren dat Vestdijk in de gehele Wachter-serie een nauwelijks verhulde autobiografie en dus zijn eigen kunstenaarschap beschrijft, er staat toch ook vast dat hij in later werk herhaaldelijk kunstenaars of bijna-kunstenaars tot onderwerp kiest. Hoe het ook zij, in alle gevallen is het niet te betwijfelen dat het werken van de schrijver voor Vestdijk altijd een herstellen betekent, een geduldig maar ook onverzettelijk herstel van wat hem ontnomen of althans is aangedaan. Vestdijk luistert naar een onafgebroken roep uit een ver verleden dat voortdurend nabij is, en zijn streven is gericht op een verlies dat ongedaan moet worden gemaakt. Zijn roeping, dat wil zeggen: zijn creativiteit, is niets anders dan de niet aflatende trouw en het aandachtige geduld waarmee hij dit roepen in zich opneemt en verwerkt. Wat verloren is gegaan en dus een niet-bezitten is geworden, kan op enigerlei wijze in woorden bestaan.

Het is in dit verband niet te vermijden over Vestdijks idealiserende creativiteit te spreken, ook al begrijp ik heel goed dat daarmede een

[p. 131]
wat verrassende suggestie is gedaan. De realist Vestdijk die obsceniteiten en ‘vieze beschrijvingen’ niet uit de weg gaat toch eigenlijk een idealist? Er is al iets over gezegd en ik voeg er nu aan toe dat Vestdijk zich er herhaaldelijk over beklaagd heeft fout begrepen te worden. Bovendien zal duidelijk zijn, dat ik bij idealiseren in het geheel niet denk aan verfraaien, verdoezelen of wat dies meer zij. Wat ik bedoel komt eerder neer op een filosofische attitude die zich wendt tot de Idee en direct of indirect met platonisme te maken heeft. Iedere lezer van Vestdijks oeuvre zal getroffen zijn door de regelmaat waarmee in verschillende periodes van zijn leven het platonisme aan de orde wordt gesteld. Er wordt over gesproken in de correspondentie met Theun de Vries, maar ook al eerder in Lier en lancet en uiteraard in Albert Verwey en de Idee of in een laat essay over Proust(24). Een geval als De ziener is in dit opzicht bijzonder interessant. Naar uit mededelingen van Vestdijk zelf blijkt, is hij uitgegaan van een ware geschiedenis over de liefde van een lerares en een leerling die (zoals heel preuts wordt opgemerkt) tot het uiterste was gegaan. Tijdns het schrijven merkt hij evenwel dat het een platonische liefde moet blijven, omdat iets anders niet bij de karakters past. Wat is er nu aan de hand? De naturalistische romancier die een soort documentaire reportage wenst te geven, verandert de feiten waarmee hij van doen heeft? Dat is zeker waar, maar aan de andere kant is Vestdijk er welhaast toe gedwongen een ware liefde altijd platoniserend te tekenen. Hij kan niet anders en wil niet anders. Het gaat zelfs zo ver, dat bij een heftige en sensuele liefde als in het eind van De schandalen te vinden is zich plotseling een ‘nogal ervaren kind’ ontpopt. Men mag het mijnentwege pervers of morbide noemen, de uitdrukking is, de woorden zijn niettemin van groot belang en verwijzen in wellicht verwrongen maar zeker heel goed herkenbare vorm naar het complex dat ik bedoel. Het ideaal zou zijn een kind te bezitten dat wel en niet kind is, dat onmogelijke mogelijkheden biedt en als geliefde de maagdelijkheid van het niet-bezitten en het onaantastbare behoudt(25).

(24)
Opmerkingen over Beethoven en de Idee (Keurtroepen, p. 53), over Hegel verschillende keren, en over platonische liefde of cicisbeïsme in Narcissus op vrijersvoeten (een uiterst belangrijke titel) zouden hierbij betrokken kunnen worden.
(25)
Ik waag het erop een misschien al te ver gezocht verband te vinden met Vestdijks literaire bewondering voor Emily Dickinson en Emily Brontë bijv.
[p. 132]
Het is dit complex dat Vestdijk voortdrijft en misschien is het daarom slechts in beperkte zin mogelijk over idealisme te spreken. Het dient namelijk tot of is de voortdrijvende creativiteit zelve waaraan de auteur onderworpen is, en daarvan is bij Plato geen of op geheel andere wijze sprake. Bij Vestdijk is het beginpunt en eindpunt tegelijk. In het meermalen genoemd gesprek zegt Gregoor enorm blij te zijn dat de geschiedenis van Ina Damman een werkelijkheids-achtergrond heeft(26). Zoals gezegd bekommer ik mij daar nauwelijks om. Sterker nog, ik zou een mogelijk antwoord van Vestdijk zelf uit een ander interview willen noemen. Hij zegt daar: ‘Het kan zijn dat ik als jongen Ina Damman heb uitgekozen om verliefd op te worden, omdat ik van te voren wist dat ze nooit van me zou houden.’(27) Er valt moeilijk een beter bewijs te geven voor het feit dat literatuur geen afbeelding der werkelijkheid is maar beide in zekere zin bepaald worden door een bron die overal doorheen stroomt en naar zich zelf terugkeert. Juist daarom moet waarschijnlijk het probleem der identificatie dat voor Vestdijk zo karakteristiek is genuanceerd worden. Veelal wordt daarbij namelijk uitsluitend gedacht aan het overigens onweerlegbare feit dat Vestdijk zich als het ware verliest in de anderen. Mij lijkt het juister en ook van meer gewicht dat hij er vooral naar streeft de anderen in zich te doen opgaan. Alleen daardoor is te begrijpen dat Ina Damman bijvoorbeeld voor altijd in hem leeft, naar hij mededeelt, en met hem ten grave zal gaan(28). Daarin ligt de eigenlijke betekenis van zijn idealisme en van een complex dat in zich zelf ronddraait. Er heerst dus op zijn minst een dubbele beweging binnen de identificatie, waarbij ik voor mijn deel aan de centripetale kracht een grotere waarde toeken dan aan de middelpuntvliedende.

Dat lijkt mij te meer noodzakelijk omdat met de nadruk die ik hier leg op het centrale complex dat Vestdijks creativiteit is een foutieve indruk kan zijn gewekt. De uitdrukkingswijze schijnt af te gaan op een soort ruimtelijkheid waaraan in psychische aangelegenheden in het algemeen en zeker bij Vestdijk in het geheel niet te denken valt. Het Ina Damman-complex is ruimtelijk noch tijdelijk te bepalen, het ‘beweegt’ zich in mythische ruimte en mythische tijd, dat wil zeggen: in een ruimte waar geen ginds en geen hier is, en in een tijd die

(26)
Op. cit., p. 138.
(27)
Bibeb, De mens een ramp voor de wereld, p. 21.
(28)
Gregoor, op. cit., p. 60-61.
[p. 133]
geen verschil kent tussen heden, verleden of toekomst. Het middelpunt is overal, de omtrek nergens, zou men bijna willen zeggen. In ieder geval is het niet voor niets dat Vestdijk over zich zelf als een soort Orpheus denkt die de doden tot leven wekt, en aan de verre onbereikbare geliefde als een Beatrice die hij in zich draagt(29). Creativiteit wordt in dat geval het geduldig spieden naar mogelijkheden om het voorbije te herstellen, het is bij de jonge Anton en de volwassen Vestdijk, die samen Wachter-Vestdijk zouden moeten heten, een wakend wachten dat verlangend uitziet naar de realisering van wat zich als onmogelijk lijkt voor te doen.

Het doel van die opmerkelijke zwevende spanning waarin de persoon wordt tot een knooppunt van mogelijkheden is gelegen in een werkstuk dat zich als einde en resultaat der creativiteit aanbiedt. Maar tegelijkertijd weet de auteur dat dit einde voorlopig en onvolledig moet zijn. Als gebeurtenis is het een literaire fixatie van wat in wezen een gebeuren is en zich ook als gebeuren zal blijven voortzetten. Voorlopig is elk werkstuk om twee redenen. Er blijft altijd een niet te bevredigen drang en een onbevredigd gevoel dat het gebeuren gebrekkig is uitgedrukt en uit de aard der zaak niet alles gezegd kon worden. Daarenboven is het hulpmiddel dat woorden bieden ontoereikend: ‘Woorden zijn de meest gewetenloze bedriegers die er bestaan, - maar bedriegers waar wij op aangewezen zijn, en die wij steeds weer ons vertrouwen schenken.’(30) Wantrouwen, vertrouwen, vertrouwen tegen beter weten in, het geeft samen weer wat spel of dialectiek bij Vestdijk te betekenen heeft. Er wordt bovendien mee duidelijk gemaakt dat creativiteit daarvan afhankelijk is en na ieder werk zal moeten doorgaan met werken. In die zin moet van Vestdijks oeuvre dat zo gevarieerd en uitgebreid is en met zo onwaarschijnlijke snelheid werd volvoerd, toch ook gezegd worden (evenals van alle andere verschijningsvormen van creativiteit) dat het onvoltooid blijft. Onvoltooid omdat creativiteit zich niet laat beëindigen (om over voltooien maar niet te spreken), en ook het allerstugste bezeten werken en de grootste inzet er niet in zullen slagen de leegte der

(29)
Brieven uit de oorlogsjaren aan Theun de Vries, 's Gravenhage 1968 (= Achter het boek, VI, Aflev. 1 en 2, 1967), p. 117.
(30)
Essays in duodecimo, p. 17. Het zou de moeite waard zijn op de romantische elementen in deze opvatting uitvoerig in te gaan. Het zou een weerlegging kunnen inhouden van het foutieve begrip waaronder Vestdijk geleden heeft en een bevestiging van het feit dat hij zich voor 90% voor romanticus hield (Gregoor, op. cit., p. 18).
[p. 134]
talloze mogelijkheden definitief te vullen. Het schijnt weliswaar alsof woorden daartoe in staat zijn, maar dan betreft het altijd een imaginair ‘leven’ dat het angstig verkeren binnen mogelijkheden slechts kortstondig kan doen vergeten. In die zin zijn woorden inderdaad bedriegers, maar daarom alleen ook vormen zij een soort fundament van waaruit een altijd weer herhaalde gooi naar realisatie kan worden gedaan. Het scheppend vermogen van de kunstenaar is ook een onvermogen, een basis die er niet is, die als niets is maar hem tot veel in staat stelt.


VORIGE VOLGENDE
Drijft de kwaliteit van basisscholen de prijs van huizen op? Een natuurlijk experiment in Amsterdam waar het beleid in 2015 veranderde. In sommige huishoudens ervoeren belangrijke veranderingen in de kwaliteit van toegankelijke scholen terwijl dat voor andere huishoudens niet gold. Een experimentele en een controlegroep. Rekenwerk leidt tot de conclusie dat een verhoging van de kwaliteit van de basisscholen (gemeten met CITO scores) leidt tot een verhoging van 2.3% van de prijs van de huizen. 

Het lijkt mij dat er erg veel aannamen moeten worden gedaan om dit verhaal kloppend te krijgen. Dat er sprake is van voortgaande segregatie (gentrificatie) in de wijken in Amsterdam is een ding dat zeker is. 

Maatschappelijk belang 3
Wetenschappelijk belang 3
Leesbaarheid 3
Diversiteit 4
Totaal 13
<$list filter="[is[current]tag[#dagtaak]]">
<br>Status:
<$select field="status"><$list filter="[tag[#status]]"><option>{{!!title}}</option></$list></$select><br><br>
Inhoud:<$edit field="wat" tag="textarea" class="tw-edit-texteditor myTextEdit"/>
<br>
<$action-setfield $tiddler=Dummy text="yes"/>
Datum:<$edit field="datum" tag="textarea" class="tw-edit-texteditor myDatumEdit"/>
<$transclude tiddler="$:/core/ui/EditTemplate/tags">
</$list>

<style>
.my-extended-memory-field {
   width: 100%;
}
</style>
"""
Ui in stukjes
Wortel idem
Stuk knolselderij 
Twee goudreinetten in stukje

Ui fruiten,  wortel en knol erbij,  laagste  pit,  peper. 
In koekepan spekjes uitbakken. 
Appel,  spekjes,  capucijners in de braadpan erbij
Laurierblaadje
sudo pacman -S vlc qt4
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix="""<<ximg width:400px "/Foto's/"""
	suffix="""">>"""
/>
"""Goede Vrijdag, kwart voor 7 op het vliegveld van Edinburgh. Walkman laat Mattheus horen. ‘t Was een niet erg leerzame maar wel gezellige congresweek in Edinburgh. Nederlandse delegatie bevatte een aantal bekenden en nieuwe gezichten. Leo Schoonderwoerd van de Commissie Nieuwe Media maakte een aanzienlijk gereserveerdere indruk dan een jaar geleden. Ik bespeur toch in het algemeen wel enige weerstand bij de hoge heren in Zoetermeer. ‘t Lijkt erop dat men in de eerste plaats zaken met Twente wil doen. Misschien is het een kwestie van verbeelding. Contacten met buitenlanders hebben niet veel nieuws opgeleverd. Wel een Engelsman gesproken die graag meer wel weten over het project in Botswana. Ervoor zorgen dat Eveline Kok of iemand anders hem kan opvangen. Gelukkig kan Marco Murray naar New Orleans komen. Met z’n drieën moeten we er iets aardigs van kunnen maken.
Gisteravond een ouderwets avondje in de kroeg doorgebracht. Een zekere Kees van Hout van de Erasmus Universiteit bracht veel leven in de brouwerij door zijn geflirt met Oosterse filosofie. Het idee om een weekend met de PWN-groep te organiseren. Zou geloof ik nuttig zijn. Anderzijds een benauwende gedachte.
We staan nog even te wachten op vertrek in de Boeing 737 op weg naar Faro. Daar met een huurauto naar Jabugo, waar we een appartement hebben gehuurd. Hopelijk lekker rustig weekje met misschien ook nog aangename temperaturen. De afgelopen week was heftig met het overlijden van Toine Berbers en het aneurysma van Marjolijn. Toine is uiteindelijk aan de gevolgen van longkanker overleden. Levend tot het laatste moment. Hij heeft zelfs zijn longarts nog bedankt voor de goede zorgen. Anne was gisteren bij de afscheidsbijeenkomst in de Rode Hoed. Een zorgzame man, altijd positief. Ook wel een beetje roekeloos soms, zwemmen naar een eiland met zijn twee zoons. Wat Marjolijn betreft, gisteren lichte verbetering. Meer zelf ademen, ogen vijf minuten open, reactie op vragen. Maar de prognose is nog zeer ongewis. Drie infarcten, bij de hersenstam, het cerebellum en de brug. Wat is er nog over van haar persoon, geheugen erin hersenfuncties? Met die vraag worstelen Richard en de kinderen. Marjolijn ligt op de intensive care van het Radboud in Nijmegen. Gelukkig is Sara weer veilig terug uit Costa Rica, samen met Karlijn. We hoopten dat ze een beetje op verhaal zou komen na de scheiding van Lennart, de verhuizing, de nieuwe van in het Slotervaart. Dat is helaas niet gelukt. Ze blijft nu een week op de Frans en trekt dan bij Karlijn in. Gelukkig is Toon op de achtergrond aanwezig.
"""Portret van Joop den Uyl in het Handelsblad. Citaat van Verweij: “Wie waarlijk leeft, heeft in zijn hart een onvernietigbare veer, een stille kracht, die elke weerstand tart”. Den Uyls onweerstaanbare overredingskracht wordt alom als karakteristiek naar voren gebracht. Hij hield van polemiseren. Ging de woordenstrijd nooit uit de weg. Zorgde steeds dat hij de laatste economische cijfers ter beschikking had. Zijn idealen waren bekend. De gewone man wist zich door hem beschermd. Toch schoot hij in het persoonlijke vlak als manager nogal eens tekort. Ook kenmerkend: zijn redevoeringen tot het laatste moment bijschaven. Ik herinner me nog het laatste televisiedebat met Lubbers. In de momenten die aan het begin vooraf gingen zat Lubbers al aan de ronde tafel te wachten met een of twee velletjes papier voor zich. Den Uyl zat aan een zijtafeltje nog te worstelen met een grote berg paperassen. Een ontroerend gezicht. Ik geloof dat het voor een politicus, een mens, goed is wanneer hij met welomschreven idealen voor de dag komt. De kunst is dan om je geloofwaardigheid te bewaren, wanneer je vuile handen moet maken. Zie de wijze waarop Lubbers onder zijn belofte 
"""Goede voornemens: meer lezen thuis, ook over de bron waaruit wij willen drinken; meer schrijven. Werk 1 uur isolatie per dag, 1 pagina schrijven per dag. Zou dat lukken. Met vroeg opstaan zou ik ook wel door willen gaan. Las dat Bernard van Leer z’n hele leven elke ochtend om 5 uur opstond. Dat geeft je toch dagelijks een beslissende voorsprong! Deze kerstvakantie: veel hoogtepunten: kerstnachtdienst mét de kinderen! Wandelingen in Diepenveen en Egmond. Besef: ik kies voor levensinstelling die nog slecht te omschrijven is. Zekerheid: ik kan het aan. Ook teleurstellingen: oudejaar in Giethoorn ging beter maar leverde toch weinig echte communicatie op. 1992 was een rampjaar, niet voor ons. 1993?
"""
Gisteravond bij Wim en Annet Oud en Nieuw gevierd. Wat waren mijn goede voornemens voor dit jaar? Eigenlijk geen echte voornemens. Wel: de computer alleen voor reken- en schrijfwerk gebruiken, en meer psalmen lezen. Vorig jaar hadden we een nieuwjaarsborrel bij M&M. Dit jaar niet! Misschien proberen ergens in de komende twee maanden een maaltijd te organiseren.
"""
Dit is met recht de eerste dag van de rest van mijn leven. De vrijheid van Egmond!! Wat heerlijk dat de halve en het naarste deel van de achter de rug is! 

Vanavond gezellig met z'n allen gegeten ter ere van Cathriens verjaardag. Morgen in het vliegtuig een goed verslag van de afgelopen dagen. 
<<pdf "/Dagboek/20060901 KW1.pdf">>
<<pdfembed "https://u.pcloud.link/publink/show?code=XZzdfCXZjlbPTEmSAO5y9q88alxhC8cv9QQy">>
Twee mooie uitspraken in de krant. Leonardo da Vinci: ongeduld is de moeder van de stompzinnigheid. Over Da Vinci: hij was misschien geniaal, maar hij was geen theoreticus. Hij verzamelde voorbeelden en bekommerde zich niet om het verband ertussen. Lijkt dit op Sacks en Luria? Zie Dijksterhuis: de mechanisering van het wereldbeeld. Nog een mooie van Rutherford: all science is either physics or stamp collecting. Mooier kan het niet! Als je er tenminste vanuit gaat dat &psi; per se geen fysica is. Dan liever postzegels verzamelen. 

Dag verprutst. Gebrek aan planning, aan wilskracht, aan strengheid en aan hardheid. Ik moet echt leren om harder te worden tegen mezelf en de omgeving. Alleen wanneer ik vanuit een zekere hardheid opereer ervaar ik enige zekerheid. Geldt ook voor relatie met kinderen. Slapheid brengt gebrek aan respect (= liefde) voort. Ledigheid is het oorkussen van de duivel. Waarom maak ik me dit soort inzichten niet eigen?? Waarom steeds weer struikelen en ieder en jezelf tot last zijn??
Sara 1 jaar! Een vrolijke dag, met Sara als vrolijk feestvarken, genietend van de aandacht, de slingers, de lekkernijen, de cadeaus. Ook Cathrien in haar nieuwe matrozenjurk uit Freiburg was in een feeststemming. Sara wordt ineens enorm beweeglijk, kroop vanmiddag op eigen kracht helemaal van de keuken naar de speelkamer waar ze vervolgens met veel enthousiasme alles overhoop begon te halen. Ze lijkt ook heel goed in geluiden nabootsen, probeert steeds woorden na te zeggen. "Happen" is een geliefkoosd woordje van haar, en ook een geluid dat op "Dank U" lijkt als ze iets geeft. Het klinkt allemaal heel melodieus. Ze vindt het ook heel leuk als je in bad een liedje voor haar zingt. 

Hoe was het een jaar geleden? Gerry de hele dag hier geweest om op Cathrien te passen. Anne in verslechterende toestand, Saartje een schatje. Toch overheerst in je herinnering de vreugde over de komst van Sara. Pas later de lange weg van Anne. Hoe zal het straks zijn als nr. 3 komt. Gerry zegt dat het een jongen wordt. 
8:05 uur. Acht stralende a.s. moeders met a.s. vaders op bezoek: een concentratie van feitelijk en toekomstige energie. De laatste avond van de zwangerschapscursus, compleet met dia's van diverse bevallingen, was een succes. Twee dingen vielen mij op: (1) Er waren in het gezelschap geen mannen die structureel hun werktijd gingen terugschroeven. Iedereen (incl. ikzelf) gebruikte daarvoor het onmisbaarheidsargument. Alleen Theo (ontwerper van industriële producten) stelde dat voor hem het huishouden en het werk niet twee volstrekt gescheiden bezigheden zijn. In beide situaties kun je iets van jezelf investeren. Het rendement (wat je ervan leert etc.) van de ene situatie is ook nuttig in de andere situatie. (2) Niemand verdiept zich al intensief in de situatie na de bevalling. Iedereen heeft zoiets van  (een veelgebruikte uitdrukking tijdens de cursus): laten we eerst maar eens heelhuids door de bevallig zelf zien te komen, de rest is van later zorg. De energieke en serieuze cursusleidster Joke Spaan vreesde bij het weggaan dat ze onvoldoende gehamerd op het belang van tijdige maatregelen. Overigens was het een leuke belevenis om tijdens de cursus (zes avonden) te ontdekken welke persoonlijkheden er achter de diverse gezichten schuil gingen en hoe ieder dacht over en zich voorbereidde op de grote gebeurtenis. De reünie is vastgesteld in september. Je hebt nog geen idee hoe iedereen het dan zal maken. Hopelijk kunnen we een beetje contact blijven houden met Theo en Anne, een sympathiek stel.
!!! Zevende vakantiedag

Vandaag een relatief lange wandeling (op papier twee uur) gemaakt bij Amandola. Om 9:30 vertrokken. Eerst steil omhoog, later wat rustiger naar 600 meter. We passeerden een aandoenlijk kerkhof voor huisdieren,  Il Parco di Snoopy. Prachtig uitzicht op de Sibillijnse Bergen.

|<<ximg width:200px "/Foto's/2021 Italië/0910 Rondje Amandola.jpg">>|<<ximg width: 300px "/Foto's/2021 Italië/0910 Parco di Snoopy 1.jpg">>|<<ximg width: 300px "/Foto's/2021 Italië/0910 Parco di Snoopy 2.jpg">>|
|borderless|k

Rustig doorgelopen, op tijd gestopt.

|<<ximg width: 600px "/Foto's/2021 Italië/0910 Wandeling bij Amandola 1.JPG">>|<<ximg width: 250px "/Foto's/2021 Italië/0910 Wandeling bij Amandola 2.JPG">>|
|borderless|k

|<<ximg width: 350px "/Foto's/2021 Italië/0910 Wandeling bij Amandola 3.JPG">>|<<ximg width: 600px "/Foto's/2021 Italië/0910 Wandeling bij Amandola 4.JPG">>|
|borderless|k

Uiteindelijk om half twee weer terug, gelukkig wachtte er een ijsco. Als zelfgeconstrueerd traject voldeed de wandeling, zij het dat hij iets te lang was. Sommige groene stukken bleken erg bossig, waardoor je geen uitzicht had.

<<ximg width:400px "/Foto's/2021 Italië/0910 IJsco voor Anne in Amandola.JPG">>
Op weg naar huis. Straks op het verjaardagspartijtje van Bartie Thijs de Valse Romantique van Debussy spelen. Brrrr. Waarom heb ik dat toegezegd? Gisteravond de film After Life gezien. Mensen proberen het mooiste moment uit hun leven te herbeleven alvorens naar de hemel te gaan. Wat blijkt: terugblikkend ben je eigenlijk echt gelukkig bij het vooruitzicht van iets leuks. Heb ik nu iets leuks in het vooruitzicht? Ja: pianospelen bij Bartie, ouderavond van Saars klas, nieuwe baan op de VU (nou ja, zo goed als...), weekend, met momenten van rust. Hopelijk gaat het allemaal een beetje lukken.
09:50 Op weg naar Nottingham in het vliegtuig. We staan in een wachtrij. Net vertekt er weer een vliegtuig. Nu nog één en dan mogen wij. O, er schuift nog een KLM vliegtuig tussen. Dit gaat toch anders dan in de VS waar de vliegtuigen veel sneller achter elkaar opstijgen. Nu staan we beiden voor de landingsbaan te wachten. Wie mag eerst?
Gebeurtenissen in de familie. Sinterklaas was heel gezellig. We hebben eerst gegourmet met Ger. Daarna de pakjes. Cathrien had een cd als surprise gemaakt met Arie Antiche, gezongen door Anne Carien Beishuizen met Jos Beishuizen aan de piano. Ik kreeg van Anne een tijdmachine, die tijd maakt. Als dat eens zou bestaan.
Verjaardag van Anne zondag gevierd met Pa en Ma, die met de trein kwamen vanwege de gladheid en de sneeuw (in het oosten, niet hier). Gezellig gegeten, waarbij Cathrien en ik hebben gekookt.
09:59 Daar gaan we!
10:21 Inmiddels naderen we de Engelse kust. Het is vrij helder, je kunt de schepen op de Noordzee en en de monding van rivieren zien. We gaan al weer landen
Vandaag met Cathrien naar de oogarts geweest. Gelukkig ziet alles er gezond uit. Afwijkingen lijken erg mee te vallen. Nog een test en als daar niets uitkomt, dan hoeft er voorlopig geen bril te komen. 

Berend heeft de bof. Cathrien vroeg: Waarom boft Berend? Cathrien en Sara zijn zeer gelukkig met hun Barbie-poppen die ze van Gerrie kregen.

Gisteren een moeilijk gesprek met  Anne over geldzaken. Ik reageerde boos op haar teleurstelling over de salarisverhoging die ik in Leiden krijg, toch 300,= bruto per maand. Zij vindt dat mijn boosheid uit onzekerheid voortvloeit. Ze wil niet dat ik mijn onzekerheid op haar afreageer. Ze praat zelf over geld omdat het haar ergert dat ze maandelijks niet meent uit te komen. Mijn reactie: je moet toch elkaar je onzekerheden kunnen laten zien? Als dat al niet meer kan ... Maar misschien moet ik me er zelf ook niet zo op blindstaren. Een beetje meer Nieuw Flinks! Dingen in je hoofd zetten en daarnaar wat meer proberen te leven, en verder een beetje lak hebben aan wat de rest wil. OK, OK, proberen. Je omgeving heeft ook recht op enige flinksheid. 

Vanmiddag op de VU:  zes dingen in m'n kop gezet, en er vijf van uitgevoerd. Nu de zesde: een declaratie maken!
Ben op het ogenblik ontzettend bang dat ik de dingen niet op tijd af krijg en niet goed doe. Veel angst. Verder denk ik heel negatief over mezelf. Ik doe de verkeerde dingen en die de dingen niet goed. Veel te veel tijd besteed aan de computer. Met als gevolg dat ik heel onaardig ben voor Anne, alles wat zij zegt als kritiek ervaar, in mijn schulp kruip. Zeer vervelend allemaal. En helemaal niet nieuw maar een herhaling van zetten, alleen wat scherper en negatiever. Dit moet anders!
Laat ik proberen om mezelf weer eens opnieuw uit te vinden.
"Zoals het een vermaak is voor de dwaas schanddaden te bedrijven, zo is het met de wijsheid voor de man van verstand" (Spr. 10:23). Leven in vreugde en vrolijkheid, dat lukt als je de tijd hebt (neemt) om je te bezinnen op wat je doet, planning, reflectie.  Zodra de werkdruk toeneemt, of het gekrakeel van de kinderen overschrijdt een zekere luidheidsgrens, dan voel je dat het plezier in het werk verdwijnt, het wordt zwoegen. En hiervan zegt Spr.: "De zegen des Heren, die maakt rijk, zwoegen voegt er niets aan toe" (Spr. 10:22). [Ik lees het boek Spreuken op het ogenblik, om contact te houden met de Bijbel. Het lukt telkens weer om er door geïnspireerd te worden].

Sinds ik 's avonds thee drink heb ik veel minder last van hoofdpijn. Toch goed om het koffiedrinken verder terug te dringen.

Sara is gisterochtend voor het eerst naar de peuterspeelzaal gegaan. Hoewel ze van te voren zei dat ze "heus wel bang" was is het goed gegaan. Cathrien heeft even bij haar gespeeld. Deze week is bij Richard en Marjolijn Charlotte geboren. Sara had het bij het aantrekken van de pyjama over haar nieuwe "nichtponnetje". Deze week voor eerst Bob Boelens gezien. Hij heeft een fijn gevormd kopje. Gaat hij op Marga lijken? Proberen om er vandaag weer een dag van vrolijkheid en vermaak (zie boven) van te maken.
Even een leuke foto.

<<ximg "/Foto's/20210311 Ada puzzel.jpg">>
Het is nu 08:20. Op slinkende batterijen nog even een levensteken. Het wereldnieuws blijft hetzelfde. De toestand in Tsjetsjenië begint op die van Joegoslavië te lijken. In Nederland enige commotie over het koloniale verleden. H.M. gaat op 18 augustus naar Indonesië, een dag na wat de Indonesiërs zelf als hun Onafhankelijkheidsdag vieren, 17 augustus 1945. Dat is dus 50 jaar geleden. N.a.v. het bezoek van Poncke Princen, een Nederlander die tijdens de politionele acties deserteerde en voor de Indonesiërs ging werken, is de vraag opgeworpen of we ons handelen in die tijd niet moeten herwaarderen. Batterijen zijn bijna op. Woensdag een stevige migraine-aanval. Vandaag hopelijk weer normaal. Proberen er een goed georganiseerde dag van te maken. Morgen naar Egmond?
"""Vannacht begon Sara om 3 uur al te spoken. Ze heeft ons geruime tijd bezig gehouden. Vanochtend vrij laat ontbeten en na enkele huishoudelijke activiteiten om ½ 11 op de fiets. De bedoeling was een rondtochtje rond Vasse. We zagen een paddestoel met “Weerselo 8.4 km” erop en besloten te kijken hoever we zouden komen. We hebben het gehaald en waren om kwart voor een weer thuis. ‘t Vergde wel veel van Anne’s krachten en ook Sara was af en toe wat huilerig. Misschien zijn 2 fietstochtjes voor haar toch te vermoeiend. We maken er één per dag van. Cathrien was heel lief onderweg. Ze wilde echter niet gaan slapen. We kregen ruzie over de beste aanpak. Uiteindelijk ben ik met Cathrien een eindje gaan rijden. Ze viel vrijwel meteen in slaap. Teruggekomen hebben we bosbessen gezocht. Gevieren daarna naar O. voor boodschappen. Anne vindt dat ik me niet erg ontspan, op ‘t randje van overspannen, etc. Toch vind ik het tot nu toe heerlijk hier in ‘t bos. Wat is er mis?
Tweede verjaardag onder het coronaregime. Vanochtend Sara, alleen omdat Ada formeel in quarantaine is vanwege corona op de crèche. Vanmiddag Ger te eten, heerlijke zelfbouwmaaltijd van Choux. Succes.
"""Vandaag rondgezworven in S.F. Eerst naar de oude missiepost van waaruit de stad is gesticht. Bij Joe Schmidt bobons gekocht en ernaast geluncht met drie zeer sneden brood, soort wentelteefjes. Buiten begon de zon te schijnen. Naar het Golden Gate Park gelopen over de Buena Vista heuvel. Inderdaad een prachtig uitzicht over de stad. Heel veel “houten” huizen van twee verdiepingen. Veel groen, veel bomen. Het park is een overdaad aan bomen en planten. In een grote bloemenkas de prachtigste orchideeën. Dat zou vader gezien moeten hebben. In de bloemenkas een kaart S.F. gekocht waarop de buslijnen vermeld staan. Men is hier echt ingesteld op eigen vervoer (auto). De bussen rijden vrij infrequent. Het is soms lastig om de plaats van de bushalte te vinden. Eindelijk met bus 29 naar het Presidiopark. De zee! En de grote, hoge, majestueuze, rode Golden Gate brug. Wat een bouwwerk. Als ik hier nog eens kom wil ik erover. Met benen en bus naar het Alamoplein voor de Victoriaanse huizen. In de reisgids een pizzeria uitgezocht. Bleek een wat onguur tentje te zijn met duistere types. Gauw de pizza naar binnen gepropt en naar huis. Morgen weer echt naar huis. Hiep hiep hoera!
Op weg naar Budapest hebben wij de nacht doorgebracht in Straubing, een stadje aan de Donau diep in Beieren. Het is zulk aangenaam weer dat we gisteravond buiten konden eten op het grote marktplein. Geheel in stijl van de plaatselijke bevolking dronken we er grote glazen bier bij. Een kleine rondwandeling na afloop bracht ons bij een reusachtige feesthal waar een hoempabandje ettelijke honderden bezoekers een jolige avond bezorgde. Twee zigeunervrouwen bij de ingang wilden ons voor enkele marken de hand lezen. Achteraf spijt dat ik het niet heb toegestaan. 'k Had het leuk met de walkman kunnen opnemen en en passant kunnen vragen of de kleine een jongen of een meisje zal worden! Enfin, het is ook leuk dat het een verrassing blijft.

We hebben vandaag nog zo'n 500 km voor de boeg. Goed te doen maar enkele stukken tweebaans en de grensovergang Oostenrijk/Hongarije maken het onzeker hoe lang de reis zal duren. In ieder geval moeten we op tijd zijn bij Hedy om samen met haar de sleutels van onze driepersoons kamer in Budapest in ontvangst te kunnen nemen. Een spannende dag dus.
!!! Veertiende vakantiedag

Laatste dag. Ochtend: rondwandeling, boodschappen in Castelleone di Suaso. Middag: borrel bij ~MangiaMarche, kindervoorstelling, NL ouders kamperen met kinderen.

Het is alweer de laatste dag in Loretello, morgenvroeg vertrekken we naar Venetië. We doen 's ochtends boodschappen in Castelleone di Suaso, waar zich nog een archelogische vindplaats van een Romeinse nederzetting bevindt. In de krant lezen we dat op 15 oktober in alle overheidsgebouwen en bedrijven de Green Pass getoond moeten worden. Het lijkt hier geen grote beroering te wekken. 

<<ximg width:400px "/Foto's/2021 Italië/0917 Green Pass.jpg">>

We blijven deze dag bij het huisje. Beetje inpakken, een laatste plons in de tobbe. Aan het eind van de middag nog een glaasje bij ~MangiaMarche in Loretello. Daar blijkt alles in gereedheid te worden gebracht voor een glaasje na afloop van een kindervoorstelling. Er zijn ook Nederlandse ouders die verderop op een camping staan. Leuk om hun verhalen even te horen. De avondzon schijnt nog een keer prachtig over de heuvels.

|<<ximg width:400px "/Foto's/2021 Italië/0917 Borreltijd in Loretello.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0917 Avondzon bij Loretello.jpg">>|
|borderless|k

Eenmaal teruggekomen bij ons huisje zien we nog een keer een prachtige avondlucht boven Loretello. We hebben het heel goed gehad hier. Genoten van het uitzicht en de natuur, de wandelingen en het bezoek aan Urbino.

<<ximg width:600px "/Foto's/2021 Italië/0917 Avondlucht boven Loretello.jpg">>
Gisteren een ontroerend weerzien met Cathrien, ze zag er heel goed uit, heeft zich enorm geweerd tijdens de periode in Mozambique. Een prachtig getuigschrift van Anne. Kijken of ik haar daarvoor nog even kan bedanken. Dit dagboek is eigenlijk vooral een klaagzang over mijzelf. Misschien daarmee eens radicaal ophouden. Ik ga in ieder geval proberen om tijdens het kerstreces wel regelmatig in het dagboek te schrijven maar het niet over mezelf te hebben. We gaan zo dadelijk ontbijten. Berend en Sara hebben vandaag tentamen. Sara was gisteravond tijdens de donderdagavondmaaltijd, waarbij ook Santje, Renate (logeert hier) en Karlijn aanwezig waren, al vrij onaanspreekbaar. Berend woont weer hier nu Cathrien terug is en weer op de Oude Schans gaat wonen.
Tweede dag in Noord. Vandaag voor de laatste keer de ICO introcursus gegeven. Gezoek in de dozen. Modem opgeblazen. Flinke hartkloppingen na bad voor het slapen gaan. Hopelijk gaat dat nog een keer over. 
Eerste avond in R. Vanochtend om &frac12;10 vertrokken. In Breda even gestopt. Om &frac12;2 waren we hier. Stralend weer. Berend in de bedstee gelegd. Cathrien en Sara wilden allebei wel op zolder slapen. Sara's bed zo opgesteld dat ze er niet uit kan rollen. Uiteindelijk hebben ze geen van beiden geslapen. Anne is toen met ze naar Basting gegaan waar ze werden onthaald op koekjes en een krentebol. Berend en ik bleven thuis. De fam. Basting bleek ons nog te kennen. Heel attent. Daarna heb ik in Cadzand een box gehuurd en hebben we samen fietsen gehaald bij vd Wegen. Vanavond pannekoeken gegeten (vrijdagavond) en de kinderen vroeg in bed gestopt. Ze sliepen allemaal vlug in, Sara al na 10 minuten. Ieder lijkt zich al redelijk thuis te voelen hier. Het huis en de tuin zijn onveranderd ideaal. 

Proberen om de vakantieziekte te voorkomen. Een beetje de vaart erin zien te houden, vanavond was al een heerlijke leesavond. Wat gaan we morgen doen: inkopen doen voor drie dagen warm eten, fietsen, Knokke.   
Kleine Berend is nu 7 dagen oud. Hij doet het heel goed: drinkt goed aan de borst, plast en poept op zijn tijd. Morgen gaan we hem wegen, eens kijken hoe ver hij van zijn geboortegewicht van 3460 gram afzit. Hij slaapt steeds regelmatiger maar houdt ons 's nachts nog wel regelmatig bezig. Gek dat je hem eigenlijk nog niet goed kent, of althans dat gevoel hebt. Oliver Sacks schrijft n.a.v. een man met Korsakow en een totale amnesie: "Om onszelf te zijn, moeten we onszelf hebben - oude levensgeschiedenissen bezitten, zonodig opnieuw bezitten. We moeten onszelf, het innerlijke drama, ons verhaal "bij elkaar zoeken". Een mens heeft zo'n continu verlopend innerlijk verhaal nodig om zijn identiteit, zijn zelf te handhaven". Dit klinkt erg overtuigend, maar ook in strijd met wat ik naar voren wilde brengen in mijn "preek": je moet iemand anders, en ook jezelf niet op je verleden vastpinnen. Je moet de last van je verleden van je af kunnen gooien. Misschien moet ik meneer Sacks hierover eens schrijven!? Dit n.a.v. de "onbekende" Berend.
"""''Sara''
Sara’s verhaaltje over de nieuwe vulpen:
1. Ik vind het leuk om met mijn nieuwe vulpen te schrijfen.
2. Maar het is wel moeilijk.
3. En je moet wel goed zitten.
4. En neit zo onder uitgezakt.
5. Maar met rekkenen gaan we nog met potlood.
6. Dat vind ik niet zo leuk.
7. We doen een hele boel met de vulpen.
Sara is op het momen aan het warmlopen voor de tafeloverhoring. Vier leerlingen per dag, die de tafels van 2 tot en met 5 zo snel mogelijk achter elkaar opzeggen. Meester Pieter neemt de tijd op.
Verjaardag van Meindert. Corona beheerst nog steeds volledig het publieke debat. Lichtpuntje: beurzen weer in de plus. Maar in Brabant vrezen ze voor capaciteitsproblemen op de IC's. Heel spannend of weer dat binnen de perken weten te houden.

Ik ben opeens weer opgeknapt, zojuist 37.0 gemeten. Anne nog 37.4 een gemeen hoestje. Voelt zich wel kwieker. Maar toch nog zorgelijk. Eerste week zit er zo dadelijk op. Dan is het erop of eronder. 
"""
In Rockanje. We zitten te borrelen met Cathrien en Jochem. Mercia is gaan slapen. Sara en Toon, en Berend en Sietske zijn in de auto onderweg en hopen om 20:30 te arriveren. Vanmiddag met Mercia in de borstzak en wandelingetje in het bos richting de duinen gemaakt. Ze viel al snel in slaap. Was toch weer erg leuk. Proberen om van het weekend te genieten. Lezen, praten, buiten zijn. Vertrouwen hebben dat het goed zal komen. 

Woensdagavond de collega's van Anne te eten. Anne had zelf met Marie-Sophie alles gekookt en voorbereid. Berend, Margriet en ik deden de bediening. Liep allemaal op rolletjes, geanimeerde stemming. Voor Anne weer een stap richting losmaken. 
"""Met z’n tweeën zonder de kinderen! Voor het eerst sinds Cathriens geboorte. Het knaagt wel een beetje aan mij. Het idee dat Sara en Cathrien nu in Deventer in bed liggen en wij hier. Ze zullen het ongetwijfeld naar hun zin hebben. Alles is vandaag volgens plan verlopen. Vanochtend tot half 1 genoten van het schitterende weer. Daarna opruimen en inpakken. Om half 3 Gerry en Siep weggebracht (zij gingen met de trein naar Deventer). Wij om 10 over 3 vertrokken, tot de nok toe gevuld. Het was smoorheet in de auto. Zwetend kwamen we om 4 uur in Deventer. Cathrien om half 8 door Gerry in bed gestopt. Sara bleef ook na de fles vrolijk in de weer toen ik haar in bed stopte.

Moeder is geboren en getogen in Zutphen, waar ze opgroeide in een bakkersgezin aan de Spittaalstraat. Ze was de enige dochter te midden van vier broers, die haar ongetwijfeld al vroeg geleerd hebben om voor zichzelf op te komen. Ze vertelde dat ze als meisje in de winter graag ‘s ochtends vroeg voor de met takkenbossen gestookte oven zat en zich voorstelde dat Daniël daar met zijn vrienden in het vuur liep. Moeder hield van snoepen en werd daarbij wel eens betrapt door haar broers. Ze vertelde dat oom Toon dan riep: “Moe, ze hêv wat!”, waarna ze het snoepgoed uit haar handen liet glijden en het kletterend op de stenen vloer hoorde vallen. Er werd in huize ten Broeke zuinig geleefd. Men at oud brood, want het verse brood was voor de klanten. Deze gewoonte heeft moeder ook in ons gezin voortgezet. Ze gooide zelden of nooit etenswaren weg. Ooit introduceerde Mieke bij ons thuis de kaasfondue. Tijdens de voorbereidingen hing er ‘s middags in huis al een doordringende kaaslucht. Nog voor we het eerste stuk brood in de fondue gedoopt hadden verklaarde vader dat hij de voorkeur gaf aan kaas en wijn apart. Uiteindelijk genoot iedereen van Mieke’s dappere poging om de Beizen een beetje in de vaart der volkeren op te stoten. Maar er bleef een flinke kaaskorst in de pan achter. Moeder vond het zonde om die weg te gooien. De korst werd eerst aan de hond voorgezet. Toen die na drie dagen vasten nog steeds geen hap had genomen werd de korst uiteindelijk in het bos voor de eekhoorntjes neergelegd. Daar heeft hij de rest van de winter gelegen. Zuinigheid heeft moeder dus thuis geleerd. In september 2000, toen moeder net in De Dillenburg was komen wonen, zagen we op tafel een nieuwe leesbril liggen. Anne vond hem er erg modieus uitzien. Maar het bleek de leesbril te zijn die oma ten Broeke nog voor 2,50 aan de deur had gekocht! Moeder vertelde dat opa (haar vader) soms erg opvliegend kon zijn. Als bijvoorbeeld een bakplaat met koekjes te lang in de oven had gestaan en de koekjes zwart geblakerd waren, dan kon hij de bakplaat door de bakkerij smijten. Als dan oma ook nog zo iets zei als: "Menneke, hoe hê je dat noe?", dan was hij helemaal woest. Na zo’n incident kon hij er geruime tijd het zwijgen toe doen, een gewoonte die erfelijk blijkt te zijn. Moeder was niet opvliegend, wel bij tijd en wijle zwijgzaam, maar ze was zeker vasthoudend. 

Vader en moeder trouwden in 1934, moeder was toen 23. In een tijdsbestek van 10 jaar werden 5 kinderen geboren, met tussendoor en daarna nog enkele miskramen. De zesde sloot de rij toen moeder 39 jaar was, in 1950. In haar arbeidzame levensfase staan Sneek en Soestdijk centraal. Sneek vanwege het internaat dat vader en moeder in de oorlogsjaren in huis begonnen, eerst op de Troelstrakade en later op de Singel. Ze boden gedurende de werkdagen onderdak en verzorging aan 32 minder begaafde kinderen die bij vader op de B.L.O.-school zaten. Het was een turbulente tijd met veel praktische problemen, die op de een of andere manier telkens weer werden opgelost. Er moest hard gewerkt worden, de kinderen vroegen heel veel zorg en aandacht. Met sommige kinderen bleef het contact bestaan, zoals met Baukje die met ons meeverhuisde naar Noordwijk en Soestdijk en moeder’s hulp in het huishoudelijk werk werd. En zoals met Sibbel de Vries die ons nog steeds bij hoogtijdagen haar hartelijke brieven stuurt, die door het springerige handschrift en het ontbreken van leestekens en hoofdletters elk jaar moeilijker te ontcijferen worden. Op een foto van ons gezin die met Kerstmis 1942 is gemaakt zien we vader met Jan Willem op schoot, dan Janny staande met de poppenwagen, die dromerig weg kijkt. Rechts staat Meindert, maar in het midden van de foto kijkt fier en energiek met vaste blik in de camera Moeder met Thole op schoot. Ze kon hard werken en had plezier in het werk. De huisdokter moest haar wel eens waarschuwen om niet te veel hooi op de vork te nemen. Op Tweede Pinksterdag 1943 overleed oma ten Broeke op 67-jarige leeftijd. Moeder was toen zelf 32 jaar. 

In Soestdijk nam moeder in de keuken van het instituut de zorg voor alle kinderen en personeelsleden op zich, samen met mevrouw Jansen. Het Van Arkel Instituut maakte op mij als kind de indruk van een grote familie. Op verjaardagen van vader en moeder zat de gymnastiekzaal vol vrienden, familie en collega’s. Vader was actief als ouderling in de kerk. Op zondag kregen we vaak een gastpredikant te eten. De oudere broers en Janny ontwikkelden een uitgebreide kring van vrienden die regelmatig over de vloer kwamen, net als de neven en nichten van oom Wim en tante Janny. Vader en moeder waren altijd erg geïnteresseerd in ieders wel en wee. 
Moeder was meegaand en vasthoudend tegelijk. Toen een tuinman werd gezocht solliciteerde niet alleen meneer Jansen, maar ook mevrouw Jansen die graag een betrekking wilde als hulp in keuken. Moeder vertelde dat ze het echtpaar ontving en kennelijk een positieve indruk kreeg. De sollicitanten drongen aan op een beslissing maar vader was afwezig. Moeder legde uit dat ze absoluut geen beslissing kon nemen. Dan zou vader met de vuist op tafel slaan en vragen wie hier de baas in huis is. Maar, besloot ze haar verhaal, ‘t is allemaal doorgegaan. Vader vertelde later dat hij Moeder bij elke belangrijke beslissing in zijn werk om raad vroeg.

In 1958 verhuisden we naar Ermelo en kwam moeders leven (ze was toen 47) in rustiger vaarwater. Ik herinner me uit die tijd moeder als iemand die ‘s middags met de thee klaar zat. Ze had op Groot Emaus een belangrijke sociale functie. Zo kookte ze steevast een pan soep als er een nieuw personeelslid met zijn of haar gezin aan de slag ging en een nieuwe woning betrok. Nu nog lees ik in de condoleancebrieven dat mensen zich de soep of bonenschotels herinneren, waarmee Moeder ze had verwelkomd of geholpen bij ziekte. 

Elkaar en jezelf respecteren en ruimte geven, dat was een houding die ze ons voorhield en waarin ze zelf erg ver ging. Vader vroeg op dit punt veel van haar. Maar mede door Moeders geduld en ook door de ruimte die ze voor zichzelf creëerde hebben ze na Vaders pensionering in een nieuwe levensfase opnieuw en inniger van elkaar leren houden. 

In haar laatste levensfase werd Moeder eigenlijk steeds liever en warmer. Ze bleef tot op het laatst wezenlijk geïnteresseerd in ons en in de mensen om haar heen. Daarin was ze echt een voorbeeld. Ze kwam in 2000 in de Dillenburg en besloot meteen om wel ‘s ochtends aan de koffie deel te nemen, maar zich verder van gemeenschappelijke activiteiten afzijdig te houden. Ze had haar vaste dagindeling met de radio, de t.v., de boeken, het kalenderblaadje, de puzzel, de brieven aan Jan Willem en Titia. Ze ging al jaren niet meer op zondag naar de kerk, maar volgde de diensten van alle denominaties op radio en t.v. Ik vroeg moeder vorig jaar een keer: “Wat betekent het geloof voor U?” Haar antwoord was kort en onomwonden: “Alles! Alles, van het opstaan tot het naar bed gaan. Voor elke stap, iedere hap, daar dank ik voor. Iedere avond dank ik dat ik weer niet gevallen ben. Alles, ik zeg alles. Daar ben ik mee opgegroeid. Leid ons allen in spreken en denken en handelen, dat bad mijn vader altijd. En vader bad altijd: Geef dat de kinderen en kleinkinderen met U te rade gaan. Dat bad hij altijd, tot het laatste toe. En dat bid ik nu zachtjes voor mezelf. Alles staat en valt met het geloof. Maar ik weet daarom niet of het helpt. Want ongelukken gebeuren. Laatst, met die brand in Volendam, zei ik tegen mevrouw Luijendijk: Misschien heeft God hierom wel heel erg verdriet. Want de satan is toch nog op het ogenblik ook nog machtig. Het zal een keer overwonnen worden, maar zover is het nog niet.” Elke dag noemde ze al onze namen in haar gebed, ook die van vrienden van wie ze wist dat ze in moeilijke omstandigheden verkeerden. Ze bleef zich interesseren voor haar kinderen, kleinkinderen en achterkleinkinderen. Ze keek bijvoorbeeld naar Sesamstraat of het Jeugdjournaal als ze wist dat onze kinderen er op dat moment ook naar keken. 

Ze genoot van de familiefeesten rond haar verjaardag of bij andere gelegenheden, waar we als kinderen, kleinkinderen en achterkleinkinderen bij elkaar kwamen. Als je op zeker moment voorzichtig aan haar voorstelde om voorbereidingen voor een nieuwe feestelijke bijeenkomst te treffen, dan begon ze meestal met “Ik had het zo gedacht… “ en dan legde ze een compleet draaiboek op tafel. Ook toen ze er zelf niet meer steeds bij kon zijn, wilde ze na afloop precies weten hoe het gegaan was. “Jullie hebben vast weer veel gelachen”, zei ze dan. Ze heeft ons op het hart gebonden om bij elkaar te blijven komen. 

Over de laatste dagen heeft Meindert al het een en ander verteld. Ik voeg daar nog een paar indrukken aan toe. Steeds vaker waren haar gedachten elders maar dan opeens ook weer heel helder aanwezig. Ze sprak nog maar weinig, we leerden haar “ja”, “nee” en “neu” in vele toonaarden kennen. Vaak zei ze “het is goed, het is goed”. Ook herhaalde ze de namen van de kinderen. Toen Anne en ik afgelopen zondag bij haar waren en we Janny en Jan hadden afgelost begon moeder op zeker moment de naam van Janny te noemen: “Janny-Janny-Janny-Janny”. Het leek of ze er een liedje van maakte: “Janny-Janny-Janny-Janny”. Ook Jan’s naam noemde ze, maar meer in vorm van een gedicht waar Jan Hanlo zich niet voor geschaamd zou hebben: “Jan-Jan-Jan-Jankant-Jankant-Jankantgoed-Jankantgoed”. Janny en Jan hebben zoveel voor moeder betekend. Zo’n 28 jaar hebben ze zowel Jan’s ouders als onze ouders met zorg omringd, de laatste 15 jaar alleen moeder. 

Maar moeders krachten namen steeds verder af. Eindelijk, op maandagavond om half elf, betraden onze neven Ton Klein en Jan Willem Klein, de zoons van Jan en Janny, moeders kamer. Een psycholoog en een politie-agent, beter reisgezelschap kun je je niet wensen. Zo heeft moeder ze vast en zeker begroet. Eindelijk eindelijk, moet ze gedacht hebben, daar zijn ze, de engelen die mij begeleiden naar ‘s Heren Huis, in paradisum. En met Ton en Jan Willem aan weerszijden van haar heeft ze na een half uur met een gerust hart afscheid genomen.

Ik eindig met moeders lievelingspsalm, in een nieuwe vertaling van Huub Oosterhuis. Deze psalm heb ik de laatste dagen een aantal keren aan moeder voorgelezen.

"""
Was jij mijn herder, niets zou mij ontbreken.

Breng mij naar bloeiende weiden
doe mij liggen aan vlietend water
dat mijn ziel op adem komt
dat ik de rechte sporen weer kan gaan
achter jou aan

Jij mijn herder? Niets zal mij ontbreken.

Moet ik de afgrond in, de doodsvallei,
ik zal niet bang zijn- ben jij naast mij
ik zal niet doodgaan van angst.

Jij hebt de tafel al gedekt- mijn spotters
weten niet wat ze zien.
dat jij mijn voeten wast, ze zalft met balsem
mij inschenkt, drink maar, zeg je

niets zal mij ontbreken.

Laat het zo blijven, dit geluk
deze genade, al mijn levensdagen.

Dat tot in lengte van jaren
ik wonen zal bij jou in huis.
Moe, moe, moe, moe. 't Schijnt dat Wagenaar slecht overweg kan met eters: wat komen die mensen __doen__? Vanavond Marcel Spaai (patiënt van Anne) en Bert de Jong (vriend) te eten gehad. Een vriendenpaar van iets stereotyper soort dan Martien Diemer en Herman Holtmaat. Volgens AC blijft Marcel een beetje in de schaduw van Bert (musicus, meer interessante verhalen te vertellen).

Deze week niet echt naar tevredenheid gewerkt. Toch teveel de Macintosh bekeken. Ondanks stricte plannen. Moet mezelf meer aan vooraf gestelde planning houden. Veel meer bevrediging achteraf. Moeilijk, moeilijk. Raak snel "verslaafd" aan computer, tv kijken, koekjes eten bij de koffie. Op zichzelf onschuldige dingen. Toch ondermijn je daarmee je "zelfgevoel", tevredenheid over je eigen gedrag. Moet anders. Zal eeuwig probleem blijven. "Do not surrender", riep Jesse Jackson deze week met zoveel overtuiging dat velen onder zijn gehoor de tranen in de ogen kregen.  
Op Patmos. Flinke tocht van 20 mijl hiernaartoe die vanochtend in alle rust begon op Agathonisi, Goed Eiland. Vanochtend eerst gezwommen en gedoucht bij Georgiou. Daarna naar het kerkje omhoog gelopen, weer terug via het mooie kerkje in het dorp, een kop koffie en om 11 uur weg. Eerste stuk weinig wind. Opeens stak de wind op, Kees nam het roer over. We gingen met een flinke vaart, wel 7 knopen. Ging heel goed. Rond half 4 waren we hier. Patmos blijkt heel toeristisch, grote cruise boten leggen hier aan. Dorp Skala vol toeristen winkeltjes. We liggen heel stil voor de wal, Kees is aan het koken, zeer relaxed. 
<<ximg "Pensionado/Geheugen/Dagboek/20051223 Dagboek.png">>
Cathrien krijgt nog niet helemaal de slag van de voeding te pakken. Een zgn. lactatiedeskundige heeft haar van haar zelfvertrouwen beroofd. Mercia lijkt niet erg goed te groeien. Anne heeft vanmiddag geholpen, de boel opgeruimd en Cathrien een beetje gekalmeerd en gerustgesteld. Hopelijk gaat het nu beter. 
Lichtelijk wanhopig met de reis naar Ethiopie in het vooruitzicht. Nog veel te doen. Niet gelukkig  met de ontwikkelingen op de VU: vertraging met AZIRE, gezeur rond taalbeleid, zoveel dat niet af is. Nou ja, het hart is ok, dat is toch wel heel goed nieuws. Een het artikel voor het jaarboek van Pascal is in goede aarde gevallen. Nu maar even braaf de klusjes afronden. 
!!! Tweede vakantiedag
Dag met verrassingen. 's Ochtends omhoog gelopen richting kasteel. We liepen een beetje mis en kwamen terecht in een schilderachtig dorpje, Perledo. Prachtig kerkje met achthoekig interieur. Van daaruit toch naar het kasteel gelopen over beschaduwd pad langs groentetuinen. Kasteel, twee muren en een toren, was prachtig gerestaureerd. Aan de ene kant een noordelijke vegetatie met kastanjebomen. Aan de andere kant een mediterrane vegetatie met olijfbomen. Invloed van het meer. 

's Middags na de siësta met de boot naar Bellagio. Winkel van Anne wel teruggevonden maar helaas hing er niets van haar gading. Toen we weer terug waren gekomen met de boot even bij Laura en haar 87-jarige moeder langs geweest in de villa. Leuk om haar weer te zien, ze zag er een stuk beter uit dan toen ze nog het hotel bestierde. 

's Avonds lekker gegeten bij Albergo Milano. 

Goed bestede tweede vakantiedag. 
"""“Bewust leven”, zoals de AIDS-lijder IJsbrand Galama vanavond voor de tv meedeelde, “dat doe ik nu meer dan vroeger. Geen tijd verlummelen”. 100% waar. Het kost wel veel zelfbeheersing, of zelfbewustzijn? In ieder geval uitgaan van de zinvolheid van je eigen bestaan. Waarom houdt de gereformeerde traditie daar niet van? Werken gereformeerden alleen maar hard uit schuldgevoel? Of uit angst voor het oordeel van God? Wat is eigenlijk zelfbewustzijn? Galama wees op de dingen die hij tot stand had gebracht, op de betekenis die hij voor zijn vrienden had. Dat is inderdaad een goede definitie. Dingen maken, iets betekenen voor je naasten. Kon ik Harry maar iets van deze dingen overbrengen. Hij is zo in zichzelf gekeerd. Wat ik hem aan het verstand zou willen brengen is dat hij nu eens afstand van zichzelf zou moeten nemen. Uit zichzelf treden. Zoals hij nu is lijkt hij betrekkelijk ongenietbaar. Het is des te verbazingwekkender dat niet Nel maar hijzelf de stap naar een scheiding heeft gezet. Hij realiseert zich volstrekt niet wat voor een uitzichtloze toekomst hem te wachten staat, zeker als hij blijft zoals hij nu is.

Morgen naar moeder. Cathrien voor het eerst in Ermelo sinds vader is overleden. Harry is daar ook.
Berend is 6 ons gegroeid en zit na 4 weken boven 8 pond. Een mooie score! Hij voelt lekker stevig aan en kan al heel goed lachen. Hij slaapt over 't algmeen prima. 

't Kost me veel moeite om van de computer(s) af te blijven. Zoveel nieuwe en onbekende zaken te onderzoeken. Hypercard biedt fascinerende mogelijkheden. Ben zeer content met de resultaten tot nu toe. M.n. de ontwikkelomgeving voor overhead sheets + database voor referenties werken prima. Zie nog veel mogelijkheden: deelverzameling uit adressenbestand halen. Tentamenvragen handig opslaan voor gebruik op college en om tentamens aan te maken. Moet proberen de zaak te temporiseren omdat veel werk blijft liggen. De computer trekt! Moeilijk om je prioriteiten vast te houden. Ga er vanaf nu weer hard aan werken. Eerste prioriteit: prioriteiten respecteren (dus niet stiekem de computer bovenaan zetten). Tweede: college Inleiding Psychologie. O nee, tweede: "aan jezelf werken". Of hoe dat verder heten mag. Kost me veel moeite om tactisch met Cathrien om te springen. Geduld, geduld! Je niet in de hoek laten drijven!
"""
<<ximg "Pensionado/Geheugen/Dagboek/20090424 In Memoriam Martin Bril.png">>

Poëzie is een daad  
 
Poëzie is een daad 
van bevestiging. Ik bevestig 
dat ik leef, dat ik niet alleen leef. 
 
Poëzie is een toekomst, denken 
aan de volgende week, aan een ander land, 
aan jou als je oud bent. 
 
Poëzie is mijn adem, beweegt 
mijn voeten, aarzelend soms, 
over de aarde die daarom vraagt. 
 
Voltaire had pokken, maar 
genas zichzelf door o.a. te drinken 
120 liter limonade: dat is poëzie. 
Of neem de branding. Stukgeslagen 
op de rotsen is zij niet werkelijk verslagen, 
maar herneemt zich en is daarin poëzie. 
 
Elk woord dat wordt geschreven 
is een aanslag op de ouderdom. 
Tenslotte wint de dood, jazeker, 
 
maar de dood is slechts de stilte in de zaal 
nadat het laatste woord geklonken heeft. 
De dood is een ontroering.  
 
Uit: Het huis waarin ik woonde. 
© Amsterdam, 1955.  
""" - ANWB
- brief
Bericht dat voor de erven van het ECHO-project nog 30.000 in petto is. Van Dirk de Jong! Dat was het goede nieuws (voor Emiel Felix). Slechte nieuws: vernietigend commentaar van Koops op ons review artikel. Ik ben van zoiets altijd (te) zeer uit het veld geslagen. Beschouw argumenten als "is stijl van Koops", "speelt niet op de man", "eerder gelijksoortige aanvaringen gehad (SVO aanvraag grafische ondersteuning: heeft Koops iets tegen computers?)", toch als rationalisaties. Kempens opmerkingen volgen.
Nog 14 dagen: er moet nog zoveel gebeuren. Kom op, doorgaan.
Anne gaat goed vooruit en is veel opgewekter.
!!! Eenentwintigste vakantiedag

Vandaag echt een laatste vakantiedag. Vanochtend naar de stad gelopen om koffie te drinken, boodschappen te doen en nog twee kaarten te schrijven. Vicenza blijft een strenge Renaissance-stad, waar de geest van Palladio nog actief rondwaart. Vanmiddag bij de Limonaia gebleven, nog een keer genoten van het uitzicht en de milde temperatuur. Boek uitgelezen, een laatste knuffel aan Peggy gegeven en afscheid genomen van Livia en Gianni. Het was weer goed hier.
""" Het is nu 13:47 in Egmond.
Heerlijke wandeling gemaakt en twee dingen geleerd: 1. Waterstand zal vermoedelijk hoog blijven. Conclusie: Pomp moet verplaatst worden. 2. Ik zit echt verkeerd op het pad van de zelfminachting wegens het snoepen uit de suikerpot. Afgezien van de eventuele risico’s van suiker moet je jezelf en anderen onder alle omstandigheden mild en relativerend blijven benaderen. Anders word je een kleinburgerlijke zuurpruim. Dat neemt niet weg dat je jezelf en anderen niet tactisch zou kunnen benaderen. O.K. dit naar dagboek en weer aan de slag.
Nog steeds niks! We worden wat zenuwachtiger nu Bleeker vanochtend "gestript" heeft, de "vliezen" losgemaakt van de baarmoedermond. Nu is de kans weer wat groter dat de zaak spoedig op gang komt.  Anne voelt wel wat meer ongerichte activiteit maar nog geen duidelijke weeën. Maandag moet ze opgenomen worden. Nog niet duidelijk wat dan het beleid zal zijn. Eerst nog maar weer wachten en hopen dat het spontaan op gang komt. Gerry speelt vanavond en morgenavond nog toneel, dan is ze daar voorlopig vanaf, dat komt goed uit. Kon je nu maar in de toekomst kijken. Morgen, zondag, volgende week? Natuurlijk, ingreep? Jongen, meisje, gezond? Jan Petrie zei vanochtend tegen een studente die afstudeerde: Je lijkt iemand met vertrouwen in de toekomst. Dat straalde ze inderdaad uit. Jan deed die toespraakjes reuze goed. Hij is ook zo'n psycholoog die de aandacht voor het individu en de aandacht voor de wetenschap koppelt, net als Oliver Sacks. Knap!
Anne gisteren bij Schutte geweest. Baby op 24 weken (zwangerschap 28 weken). Zit nu al in stuit! Allebei moe, 10.30 uur. Nog even een stuk van Piet van Wieringen over ballet in //Psychologie// lezen onder de klanken van Jessye Norman - liederen van Strauss. Vandaag conferentie met de Freudenthalclub, incl. F. zelf, die overigens weinig zei. Aardige confrontatie tussen de opvatting van de F.-club dat ontwikkelen en onderzoek niet te scheiden zijn en het idee dat evaluatie van een ontwikkeld product iets anders is dan een product maken. 

Vandaag de prijs voor de beste docent binnen de faculteit van dit jaar gekregen: de Sandersbokaal. De student vermeldde dat hij door het college Inleiding &Psi; het boek //De Ondraagelijke Lichtheid van het Bestaan// van Kundera was gaan lezen. 

Sara is tegenwoordig echt enthousiast als je thuiskomt. Begint te lachen. Ze wordt gelukkig steeds actiever. Probeert op handen en voeten te kruipen. Scharrelt rond in het onderste keukenkastje tijdens het eten koken (twee keer gedaan deze week). Zal Anne moeten controleren zodat ze zich zoveel mogelijk rustig houdt. Valt niet mee, ze is niet echt een "dankbare patiënt", blijft regelen. 
<<ximg width:80% "/Dagboek/20070727 Dagboek.jpg">>
"""
Even 10 minuten in het dagboek schrijven. Hoewel dit apparaat nog steeds heel goed bevalt merk ik wel dat het typen met een toetsenbord veel sneller gaat en dat typletters veel minder ruimte innemen op een electronisch vel papier dan schrijfletters. Het is moeilijk nog een zinnige bestemming te geven aan de vrijdagavond als je zo moe bent als ik. Vandaag was een bijzondere dag omdat we tante Kinny begraven hebben in Renkum. De dienst vond plaats in de kerk waar zij samen met oom Ad heel veel goeds voor de kerk heeft gedaan. Ter nagedachtenis daaraan speelde ik bij het verlaten van de kerk een fuga van Bach. Was moeilijk maar ook heel fijn om te doen. Tante Kinny was zonder twijfel de aardigste tante van Anne. Via haar ben ik Ma van Remmen beter leren kennen en meer gaan waarderen. Ze had veel gevoel voor humor en was toch minder stellig in haar opvattingen dan Ma. Verder bleek vandaag uit de verhalen van Pauline, Els en de kleinkinderen dat ze met ieder van hen intensief meeleefde. Els vertelde dat haar moeder haar via de telefoon aan het eind van een drukke werkdag vak naar huis begeleidde.Een kleinzoon en een kleindochter vertelden dat oma hen brieven schreef. Door deze persoonlijke en ontroerende getuigenissen was de afscheidsdienst heel warm. 
"""Het boek vordert. Leen heeft gelukkig weinig commentaar bij mijn hoofdstuk. Hans komt pas maandagochtend! Met Kitty geluncht. Ze ziet er een stuk beter uit. Meldde dat ze aan de Bijbel begonnen was! Als je probeert onder woorden te brengen wat je zelf in de zaak aanspreekt blijf je gewoonlijk in gebrabbel steken. Vanavond met zijn allen naar Deventer afgereisd. Gelukkig was iedereen goed te pas. Behalve Guus (honeymoon) heb ik iedereen deze week goed gesproken. Ze hebben er allemaal weer zin in. Met Geert en Linda, Richard, Anne, Ton en Ina nog even een biertje gedronken bij wijze van bachelor’s party. Vooral met Ton gesproken over zijn toekomst. Hij heeft het in Thailand er naar zijn zin gehad. In zijn vak heb je in zo’n land veel meer vrijheid om zelfstandig een project uit te voeren dan bij ons in het drukke westen met alle regels en bepalingen. Ton kan misschien in het kader van zijn scriptie nog een klus opknappen bij Euroconsult, het bedrijf waar hij ook in Thailand heeft gewerkt. Luchtkartering en computers. Op die manier kan hij bij dat bedrijf misschien een voet tussen de deur houden. Te weinig met Geert en Linda gesproken.
Mijn geheugen met 4 MB uitgebreid. Levert nieuwe mogelijkheden op. Sneller werken.
Martien Diemer woensdagavond tijdens vergadering SSE: “Familiarity breeds contempt”. Een gruwelijk, maar serieus te nemen Engels spreekwoord. Vandaag een vrije dag. Niettemin nog even aan de slag om Lerner af te maken en de antwoordformulieren van de toets Samenhang Psychologie na te lopen. Rond 13 uur vertrekken naar Hoensbroek waar Anne haar cursus dan afheeft. Dan naar Mechelen voor een weekend in Hotel Brull. Vanochtend nog even snel een paar boodschappen. Nu eerst koffie en een stukje “tora”: Natalia Ginzburgs “De stemmen van de avond”.
<mh3>vrijdag 29 juli 1988</mh3>
Als je het gevoel hebt dat de tijd door je vingers glipt, dan is er iets niet in orde met je tijdsbesteding. In "de Toverberg" van Thomas Mann staat een mooie discussie over tijdsbeleving. In strijd met de common sense opvatting wordt verdedigd dat de tijd erg langzaam gaat als je veel te doen hebt en vlug als je je verveelt.

Vandaag een prima werkdag gehad. Hoewel de verborgen wonderen van de Macintosh nog steeds een reuze bekoring vormen heb ik er vandaag gelukkig weerstand aan kunnen bieden. Deze week al veel te veel tijd in gestoken. 

Nog zo'n 14 dagen voor de komst van de baby. 't Is weer reuze spannend. Gek dat je nu nog niets weet van wat hopelijk over korte tijd ons derde kind zal zijn.
Het houdt Cathrien wel bezig maar tot nu toe niet zo sterk als toen Sara eraan kwam. C. is natuurlijk zelf ook in verwachting. Gisteren deelde ze mee dat haar baby met Sinterklaas komt. Af en toe heeft ze het over de seizoenen. "Als het winter is ...". Sara is gelukkig helemaal op haar gemak op haar nieuwe kamertje op zolder. Morgen de w.c. verven, kastje voor Sara kopen, band om A.C. haar fiets en naar Sam en Marga.
"""
08:01
Nog twee ingrediënten: (3) constraints regelen. Bijv. per uur of andere tijdseenheid een beperkt aantal dingen doen, en geen andere! Bronnen van afleiding verwijderen. Muziek, internet. (4) relativeren, zeker het werk. Je hebt een baan, Je bent die baan niet!
Goed, de twee begrafenissen. Maandag de man van Julia Bobek. Alweer in dat beklemmende mausoleum Westgaarde. Met al die glimlachende hostessen die van een anders leed hun beroep hebben gemaakt. Geef mij dan maar de onverstoorbare en scheefgegroeide kraaien, die weten dat de begraven geen vreugde maar een plicht is. Toespraken van een zwager en van de baas van Jindrich Bobek. Niet om te onthouden. Wel ontroerend was het blues lied dat Helena (13) zong. Heel mooi en gevoelig. De familie hield zich sterk. Julia, Helena en Erik. Ouders van Maartje en Tom waren er. Ooit verhuisd naar Venlo of Roermond. Willen nu weer terug. Amsterdam knaagt aan je. Hm.

De begrafenis van Gerda Thijs was hartverscheurend. Eerst een dienst in het witte kerkje in Heiloo. Toen de crematie in Schagen. Wims toespraak was persoonlijk en ontroerend. Hij zong ook een liedje, een frans liedje, soort Brel. Heel breekbaar en ijl. Wij waren de enige vertegenwoordigers van de leesclub, samen met Inge. Elzemien was wel in de kerk maar verder niet. Gerda laat vier kinderen achter: twee meisjes van 21 en 19, twee jongens van 17 en 15. Hoe moet dat nu?
""" Even in Egmond omdat er een nieuwe geiser gemonteerd wordt. Veiligheid voor alles. Nog steeds de corona crisis, nog geen licht aan het eind van de tunnel. Ook nog een stuk van een voortand afgebroken, hoge waterstand waardoor het toilet niet gebruikt kan worden. Moeilijk om de stemming erin te houden en de aandacht gericht te houden. Maar net vijf bladzijden in een artikel gelezen om te beoordelen. Nu even buiten harken om weer een beetje warmer te worden. 
Bij het oppassen gisteren bleek Ada weer een beetje vooruitgang te hebben geboekt. Ze durft nu echt wel los te staan en zet af en toe een paar voorzichtige stappen. Liep ook even achter het karretje aan. Maar zodra je er iets van zegt stopt ze er meteen mee. In de bibliotheek ging ze vrolijk met de knuffels in de weer. Ze zegt ook echt bewust al een paar woorden: Hi, Els!, O (als iets valt), papa/mama.

<<ximg width:400px "/Foto's/20211202 In de oba.jpg">>

Toon en Sara kregen gister de sleutel van hun nieuwe huis, hoera! Els ging meteen aan de slag met het inpakken voor de verhuizing.

<<ximg width:400px "/Foto's/20211202 Els gaat verhuizen.jpg">>
"""
De jaarwisseling is rustig verlopen. Oost west, thuis best. Deze veertien dagen vakantie zijn snel voorbij gegaan. Veel hoogtepunten, enkele dieptepunten. De hoogtepunten: 
- De schaatstocht op Oudejaarsdag over de Nieuwkoopse plassen.
- De maken van de kerstkrant voor Tweede Kerstdag in Deventer
- Het bezoek van Joke en Saskia op Eerste Kerstdag
- Het bezoek van Harry gisteren
- Het maken van het werkblad voor de computer
- Het lezen van het boek De Geruchten van Hugo Claus
De dieptepunten:
- Mededeling van Elzemien dat ze moet worden geholpen aan een door huidkanker aangetast plekje op haar wang
- Mededeling van Elzemien dat Djoeke eind februari een kleine verwacht. Wim en Annet gaan de opvoeding op zich nemen. 
Ik neem een gedeelte uit de inaugurele rede van Nelson Mandela over (1994), ons toegestuurd door Annemarie, de patiënt van Anne met een dwarslaesie.
“Onze diepste angst is niet, dat we ontoereikend zijn. Onze diepste angst is dat we oneindig krachtig zijn. Het is ons licht, niet onze duisternis, waar we het allerbangst voor zijn. We vragen ons af: wie ben ik dat ik briljant, buitengewoon aantrekkelijk, getalenteerd en geweldig zou zijn?
Maar waarom eigenlijk niet? Je bent toch een kind van God? Dat je je kleiner voordoet dan je bent komt de wereld niet ten goede. Er is niets verheffends aan je kleiner voor te doen dan je bent opdat de mensen om je heen zich vooral niet onzeker gaan voelen.
Wij zijn geboren om de luister van God uit te dragen die in ons woont. Niet slechts in enkelen van ons, maar in ons allemaal. Als we ons licht laten schijnen, geven we anderen onbewust toestemming dat ook te doen. Als we bevrijd zijn van onze eigen angst, bevrijdt onze aanwezigheid automatisch anderen.”
Een heel goede afsluiting van de koude aprilmaand. De interviewvergadering voor het Comenius Leadership programma verliep vandaag heel goed. Vier kandidaten gesproken. De commissie was tevreden over het verloop van de interviews, vond zelfs dat we het in het vervolg altijd digitaal zouden kunnen doen. 

Om half 5 bij de cardioloog in de Karel du Jardinstraat. Echo laten maken van de aortaklep, daarnaast hartfilmpje en bloeddruk. Cardioloog was tevreden, geen veranderingen sinds vorige meting een jaar geleden. Meevaller! Had gedacht dat we er minder goed aan toe zouden zijn. We kunnen weer een jaar vooruit!
Het is een veeg teken dat het me niet lukt om de tijd vinden om af en toe wat op te schrijven. De laatste aantekening dateert vermoedelijk van 19 november. Er is een praktische reden. Sinds Anne weer werkt (6 dec.) moeten we drie ochtenden per week om 6.00 uur opstaan. Het lukt meestal niet om op tijd in bed te komen. Bovendien krijgt Berend nog een voeding om ½11. Meestal neem ik het flesgedeelte voor mijn rekening. Tijd om te schrijven blijft er dan eigenlijk niet meer over. Al met al mis ik daardoor de gelegenheid om intern orde op zaken te stellen.  Ga daar volgend jaar toch meer aan doen. "Aan jezelf werken", wat is dat eigenlijk? Als er niet zoiets bestaat als je "zelf", dan kun je er toch ook niet aan werken? Toch ervaar je het als heilzaam wanneer je je instelling, je houding, je blikrichting etc. weer "juist" hebt ingesteld, wanneer je niet uitsluitend "ad hoc", gedicteerd door de eisen van het moment, leeft, of geleefd wordt. Afstand nemen van je eigen functioneren, je "zelf" van een afstand bekijken en je afvragen: is dit het nou? Werk ik aan de dingen waaraan ik wil werken? Kies ik de juiste prioriteiten? Doe ik de dingen zo efficiënt mogelijk? Verspil ik geen tijd? Moeilijk. Deze week veel geleerd van passen op de kinderen. 
Vandaag hebben we de moeder van Veronique uitgevaren, in Baarle-Nassau. Ze was jarenlang de grote steun van de pastoor in de parochie, met alle bijzondere diensten en het koor. Ze had deze uitvaartmis al tien jaar geleden helemaal uitgeschreven. Eigenlijk wel heel ontroerend. Golf ook voor de persoonlijke woorden. Mooie bijeenkomst. 

Dat Baarle-Nassau is een heel vreemde plaats, vanwege de grillige grens met België, de ene kant van de straat is NL, de andere kant is B. Anne heeft nog een paar schoenen gekocht. 

Nog even een paar leuke foto's van Els en Ada gisteren tijdens het oppassen gemaakt.

|<<ximg width:% "/Foto's/1627678769015.jpg">>|<<ximg width:% "/Foto's/1627678769030.jpg">>|
|<<ximg width:% "/Foto's/1627678769038.jpg">>|<<ximg width:% "/Foto's/1627678769044.jpg">>|
!!! Negende vakantiedag
Vandaag een heuse regendag. Vanochtend eerst naar de thermen. Bijzonder om in een groot verwarmd zwembad te zwemmen terwijl het buiten regent. 

Tussen de middag hoorden we dichtbij de toren een wielewaal zingen. Anne zag een gele vogel wegvliegen, dat moet hem geweest zijn.

<<ximg "/Foto's/wielewaal.jpg">>

Vanmiddag naar Radicofani, hier dichtbij. Bijzonder mooi stadje, twee Della Robia's. 

Vanavond gegeten bij Daniela. 
"""Dit lijkt heel geschikt. Gisteravond een mooie film bij Huub gezien: Brief Encounter van David Lean (Engeland, rond 1947). Mooie rollen van Celia Johnson en Trevor Howard. Man en vrouw ontmoeten elkaar in een stationsrestauratie. Vrouw bezoekt het stadje elke donderdag voor boodschappen, bibliotheek en bioscoop. Man idem: is arts en assisteert bij operaties in het ziekenhuis. Bij tweede ontmoeting gaat het gesprek over iets medisch: verschillen soorten stof die in je lichaam voor ontstekingen kunnen zorgen. Maar in feite zie de twee liefde voor elkaar opvatten. Ze zijn beiden getrouwd met kinderen. Ze begrijpen dat ze een punt achter hun relatie moeten zetten. Uiteindelijk vertrekt hij met gezin als arts naar Johannesburg. Inge verbaasde zich over het verhaal. Verliefd worden en er dan weer mee stoppen, dat is toch niet van deze tijd. Je zegt toch niet bij de tweede ontmoeting: “Ik hou van je”. Dat is toch veel te zwaar. Eerder: “Ik vind je wel aardig”. Huub en ik stelden dat het verhaal ook nu nog op dezelfde manier zou kunnen plaatsvinden.
Vandaag een sociale activiteit proberen: afspraak maken met Emiel en Eric en Ton. Een keer een donderdag in november. Verder met Frank afspreken in verband met bestuur L&L. Plannen!
<<ximg width:400px "/Dagboek/Bonhoeffer.jpeg">>
"""8.22: aan het werk<br>23.30: het zit er weer op voor de maand juli. Razendsnel voorbijgeschoten. Toestand aan het eind beter dan aan het begin. Schiet met de karweitjes voor de vakantie goed op. Morgen overdag proberen 3 uur te werken, morgenavond 3, etc. Morgen: NTP. Zondag: Fokkema en de vakgroep. Deze week geprobeerd te leven bij de gedachte (een beetje à la Anton Dreesmann): Ik ben op mijn best als ik een flink aantal zaken tegelijk moet afhandelen. Dus: de urgente zaken naast elkaar en niet achter elkaar. Uur dit, uur dat. Houdt de zaak levendig. Verder geen gezeur over de deadlines. Lijkt ook een beetje op wat Reve zegt: je moet elke dag schrijven ook al is het maar een regel. Systeem bevalt goed. Heb heel veel gedaan deze week, naar mijn idee veel meer dan anders. Genoeg hierover.

Sara is weer lekker gaan slapen. Hopelijk slaapt ze vannacht weer door. Vanmiddag zat ze in het wipstoeltje een hele tijd naar haar handje te kijken. Speentje in bed is wat mij betreft van de baan. 

Cadeautjes Cathrien:
- nieuw warmwaterbord
- puzzels
- schoolbord
- vingerverf
- schilderij kunstuitleen
- opbergbakken speelgoed
- mutsje
- iets aan de muur
- iets in de wieg om op te hangen
- liedjes AMG Schmidt
- houten speelgoed
- boekjes
Van veel zaken raak ik gedeprimeerd. Een belangrijke oorzaak van somberheid is een beroerde fysieke conditie. Van het bijkomende gevoel van onvermogen raak ik in de put. Gevolg: passiviteit waardoor dat gevoel alleen maar wordt versterkt. Belangrijk om dat bij jezelf te signaleren. Wat niet helpt: passief blijven of anderen of jezelf erover beklagen. Dat maakt het alleen maar erger. Dus probeer naar buiten en naar jezelf een toon van milde opgewektheid vast te houden. Wat vervolgens helpt: handelen, tegen beter weten in. Bedenken wat je gaat doen, en dat vervolgens ook gaan doen. Wat ook helpt: tegenvallende tussenresultaten is signaal opvatten dat het uiteindelijk niet goed komt. Maar juist als aansporing om rustig je weg te vervolgen. 
Met het Dettinger Te Deum door de koptelefoon in de trein naar Leiden. De zon schijnt, het is ongewoon zacht weer (12 - 20 graden). Links van mij kiest een Boeing 747 met een brede zwaai het luchtruim. Gisteravond op bezoek bij een overspannen maar zich snel herstellende collega. Ze vertelde dat ze, na een week slapeloosheid (een uur slaap per nacht), in een acute situatie belandde waarbij ze geen selectieve aandacht meer kon opbrengen. Ze zag, hoorde, las, alles wat zich aandiende. Moest zich voor alle prikkels afsluiten. Lijstjes maken van eerst aankleden, dan tanden poetsen, etc. Een paar herkenningspunten zaten zeker in dit verhaal: het teveel openstaan voor allerlei prikkels herken ik zeker, evenals de noodzaak om lijstjes te maken. Ik bedacht vanochtend: ik ga in het vervolg ‘s avonds een lijstje maken voor de volgende dag, zodat je geruster gaat slapen en de volgende ochtend doelgericht meteen aan de slag kunt. Nog wel steeds in het schrift. Wekelijks een nieuw kaartje voor lopende zaken. De weekplanning in de computer blijft. Nu 10 blz. de Crescenzo en een begin aan Familielexicon van Natalia Ginzburg.
Ik zit nu in mijn eigen "isoleercel", tafel in de hoek van de kamer met niets erop. Bordje "Niet Storen" op de deur. Kijken of dit net zo goed werkt als werken in de bibliotheek. Gisteravond indringend gesprek met Annette Klinkhamer. Ze vertelde van een jeugd met geestelijke en lichamelijk intimidatie door ouders met KZ-syndroom (Jappenkamp). Toen ze in verwachting raakte van haar zoon hoorde ze een "stem" in zichzelf: "Je wilt mij het licht doorgeven, maar waar is je eigen licht?". Diepgaande analyse, lagen afgepeld.  Uiteindelijk een lichtervaring op een nacht. Sindsdien gevoel van twee werelden, de wereld en de binnenwereld.
Je voelt je door zo'n verhaal aangetrokken maar ook afgeschrikt. Kaarsvlamervaring? Ik zinspeelde op Bagwhan. Dat bleek haar niet aan te spreken. Uiteindelijk is haar verhaal de consequentie (een consequentie?) van mijn waardering voor Kouwer. Ze vroeg: wat zit er in de kern als je alle lagen hebt afgepeld? Ik: niets, ruimte. Zij: alles, God.
Vannacht een onaangename droom met een een woedende Neel Plug. Gelukkig geen werkelijkheid. Het vroege opstaan is deze hele week gelukt! De avonden kunnen nog stukken beter. Door moeheid ontstaat toegeeflijkheid. Juist als je moe bent streng worden voor jezelf. Buiten ligt een laagje sneeuw van 5 cm. De kinderen zullen wel uitgelaten zijn. S.G. Geelhoed van Economische zaken: Economische problemen! Veel werklozen, lager wordend BNP per hoofd van de bevolking. Dus: staatsschuld verlagen (dat snap ik niet).
"""
Even een foto van Mercia, gemaakt op Tweede Kerstdag. 

<<ximg "/Foto's/201612 Mercia op Tweede Kerstdag, eerste uitstapje.png">>
Even wat tijd voor mezelf inlassen. We gaan het weekend met z'n allen naar Markelo. Ik zie er een beetje tegenop, hoop dat het gezellig wordt. Moeten ook over het geld praten, wordt nog een klus. Vrij veel beren op de weg op dit moment.

Afgelopen woensdag op Mercia een Franca gepast. Mercia was ziek, snotterig een koortsig. Veel voorgelezen en naar Sesamstraat gekeken. Mercia spreekt zo goed dat je vergeet dat ze nog maar net drie jaar oud is. Constructies met "denk ik" en "echt wel". Ze wilde regelmatig Franca en knuffel geven maar dat mocht niet vanwege de bacillen. Franca was bijzonder goed te pas. Draaide zich vlot om, dronk goed en ging zonder morren slapen. Verder heel gezellig kletsen en spelen in de box. Veel aandacht voor anderen, vooral Cathrien en Jochem natuurlijk maar ook veel aandacht voor Mercia. Vaak met een half lachje, in afwachting van wat Mercia nu weer voor lolligs zou gaan doen.

Sara kreeg een heel gunstige beoordeling van haar promotoren. Wisten we natuurlijk allang dat ze de dingen die ze doet heel goed doet. Maar toch fijn om het ook weer eens op papier te zien.
"""Plezierig eind van de week: bureau opgeruimd, tentamen inleiding Ψ klaar, principeakkoord met SoL, symposiumvoorstel voor AERA geaccepteerd! Briefje aan Peter Weston en Nicole Gandilhon geschreven. Volgende week Tobin en Marco uit Mexico. Nog niet af: column voor Didactief, UNESCO, verslag cognitieve sectie. Volgende week verder.

Na sympathieke brief van Sipke gisteren nu een hartelijke brief van Tjeerd en Kathleen. Ga ze zo meteen terugschrijven. Kitty leek vanmiddag in goeden doen. Hoewel we niet al te veel konden praten maakte ze een opgewekte en ontspannen indruk. Studie gaat goed. Losvast contact met Dirk.

Nog wat geleerd deze week? Bevestiging van de stelling dat je je identiteit niet moet zoeken in jezelf maar in de relaties met anderen in je omgeving. In positieve zin door brief van Sipke en brief van Tjeerd. In negatieve zin door Harry’s halsstarrigheid en tragische inzichzelfgekeerdheid. Dit is een soort waarheid die eigenlijk ingelijst boven het bed zou moeten hangen. Toch heb je hiermee de strijd niet eens en voorgoed gewonnen. Zo’n houvast gaat er niet van uit. De strijd moet elke dag opnieuw gestreden worden. Zo’n uurtje van ½10 ‘s avonds. Volhouden dus.
"""
04:56 Te vroeg wakker. 

Wat deprimeert mij. 
1. Het appartement en Noord in het algemeen. Dit huis zonder kamers en deuren, zonder beslotenheid en geborgenheid. Dit bedrijventerrein zonder vogels. 
2. Anne-Carien met haar eeuwige waarheden en haar collega Ton. 
3. De dingen die moeten gebeuren: de auto die moet worden leeggehaald en schoongemaakt. 
4. Het koor waar ik eigenlijk non-existent ben maar wel een sneer krijg als ik niet kom opdagen zonder duidelijke reden. 

Wat beurt mij op:
1. Mercia Henriette Anna, als ze lacht en mij lijkt te herkennen. Maar ook als ze nieuwsgierig aan het kijken is. Of geconcentreerd aan het spelen is. 
2. De kinderen met al hun ups en downs. Cathrien, Sara en Berend. 

Dit is wel een heel erg Harry verhaal. Vooral vanwege het enorme zelfbeklag. 

Wat ik niet wil. 
1. Mijzelf serieus nemen. Dat wil ik niet. 
2. Verstarren en stilstaan. 
3. Ongeduldig zijn. 
4. Mij ergeren. 
5. Alleen zijn. 
6. TV kijken. 

Wat ik wel wil. 
1. Werken. 
2. Roeien, planken en buikspieroefeningen doen. 
3. Lezen. 
4. Piano spelen. 
"""1.45 ‘s ochtends. Issue paper is klaar en al verstuurd. Didactief column klaar. Eigen onderzoek: exp1 klaar, nu nog exp2 en 3. Heb er een hard hoofd in. Morgen verder.
7.55: Record! Laatste loodjes. Gisteravond Astrid Limburg op bezoek. Op terugkomen. Nu begrijp ik waarom Engelsen altijd foto’s maken op congressen. Leuk voor in de afscheidsbundel als je met pensioen gaat. Van Fokkema hebben we weinig of niets. Ik ga in ‘t vervolg ook foto’s maken op congressen.

v floppy’s
v downloaden: beishuizen
v briefje Emiel
v Tennyson
v Geld Fran
11.55 Saar half slapend de fles gegeven. Rust, vakantie!! Vandaag niet echt goed gewerkt. Te veel geleuter. Nog een goed tip van Ko over discrepantiehypothese. Nu even moeilijk om de stemming erin te houden. Slapen!
!!! Zestiende vakantiedag
Vanochtend na het zwemmen en het ontbijt nog eenmaal cappuccino en cornetto voor Ger en Sara bij Garibaldi. Om half 12 in de auto op weg naar het vliegveld in Pisa. Vrij druk op de weg maar gelukkig helemaal geen oponthoud. Rond 14 uur Ger en Saar op het vliegtuig gezet en weer terug. Even een file onderweg maar uiteindelijk om half vijf weer bij ons huisje. Nog even lekker gezwommen en gelezen in Mau en Gerty. Eigenlijk is dit een ideale vakantie. Twee leuke locaties waar we weer naar terug zouden kunnen keren. Geen verhuisperikelen. 

's Avonds nog even een lekkere pizza en een ijsco. Hotel geboekt in Ihringen. Volle maan, krekels, de misthoorn vogels in de verte. Het was weer heerlijk. 
"""'s Ochtends om half 9, op weg naar Leiden. Vanmiddag consult Tellegen om na te gaan of er iets serieus aan de hand is met de tintelingen in de handen. Waarom werkt het op dit moment goed? Planning werkt met hoofdtaak per dagdeel, waaraan in ieder geval gewerkt moet worden. Probleem is nog wel dat er meestal teveel op het programma gezet wordt, waardoor je vaak het gevoel overhoudt niet ver genoeg gekomen te zijn. Iets over de kinderen.

𝗖𝗮𝘁𝗵𝗿𝗶𝗲𝗻
Bezig met toneelstukje, samen met Sofie en Romalita. Ik weet niet precies waarover het gaat. Cathrien doet het goed in groep 6. Aardrijkskunde, geschiedenis, Engels, huiswerk. Ze leest nog steeds heel erg veel, elke avond een kwartier tot een half uur voor het slapen gaan. Houdt er erg van om ‘s avonds even een half uurtje beneden te lezen, van half 9 tot 9 uur. We oefenen tegenwoordig ‘s avonds van 8 uur tot half 9, als Berend en Sara al in bed liggen.

𝗦𝗮𝗿𝗮
Sara maakt flinke vorderingen met de viool, speelt heel leuk de tweede viool in de vijf stukken van Sjostakowitsj. Klinkt prachtig! Het oefenen gaat helaas gepaard met veel Sturm und Drang, boosheid als het niet lukt. Ik verlies te vaak mijn geduld, waardoor de zaak uit de hand loopt. Even rustig met Berend praten helpt dan wel heel goed. Ik heb het idee dat Sara op de verkeerde manier aandacht vraagt, en dat in feite ook heel dwingend doet. Ze eist aandacht op, zonder rekening te houden met anderen. Gisteravond ging het spelen mis toen we de Prelude van S. voor Gerry wilden spelen. Achteraf verwijt ik mezelf dat ik te snel en te enthousiast de kinderen ertoe heb over gehaald om het stuk al ten gehore te brengen. Geduld, geduld! Dat geldt niet alleen op Sara, ook voor mij. Op school gaat het heel goed. ‘s Avonds voor het slapen gaan leest Sara twee bladzijden voor, op eigen verzoek. Meester Pieter heeft gezegd dat er thuis veel gelezen moet worden. Sara vat zoiets meteen letterlijk en serieus op.

𝗕𝗲𝗿𝗲𝗻𝗱
Over Berend is veel te vertellen. Hij leert lezen op school, dwingt zichzelf om enkele uren per dag in de schoolbank te zitten. Leert op straat schaatsen met skeelers, gaat binnenkort op schaatsles. Zit al in het groene groepje en zal hopelijk binnenkort afzwemmen. Altijd opgewekt en enthousiast. Steeds in de weer met zijn vriend Wytze Vlietstra. We hebben net een geslaagde verjaarspartij achter de rug (zie 29 september).
"""Eigenlijk is het al zaterdag 9 april 0.30 uur. Ik heb steeds de Nederlandse tijd ook op mijn horloge staan. In Den Nul is het nu ½8, de kinderen zijn vermoedelijk wakker. Ik lig juist in bed met nog even Jessye Norman aan. Een drukte van belang in Bourbon Street, volle cafés, veel dansmuziek, volle straten, een sfeer die doet denken aan het Leidseplein op een warme zomeravond. Het lied “Morgen” van Richard Strauss roept bij mij nog steeds sterke emoties op. Herinnering aan vader: “Morgen zal de zon weer schijnen en dan zullen we elkaar treffen. We zullen samen afdalen naar het strand en elkaar zwijgend aankijken”. Het klinkt als het paradijs. Paradijs: verschillende inspirerende presentaties gehoord over het onderwerp coöperatief leren, “cognitive apprenticeships”. Ook een heel geestig verhaal over Bruners blauwe driehoeken die via Sunburts software de klas weer ingaan. Vanmiddag sterk betoog richting realistisch rekenen. Freudenthal moest eens weten hoezeer hij hier gelijk krijgt. Dilemma: praten over de toekomst of over de problemen van alledag. Het beste: aan de hand van de data de toekomst laten spreken. Data + visioen. Visioen heeft iets met plusgevoel te maken. Vasthouden.

++
Klimmende zon. Licht dat ons laadt met licht. Liefde die liefde wekt, vuur dat ons loutert. Voer ons de dood voorbij. Stem die ons roept. Bron. Hart. Begin en einde. Onze vader.
Deze week, was het dinsdag of woensdag, de zon nog schitterend zien opgaan boven de vlakke horizon van de Haarlemmermeer. Vanmorgen niet meer! Bij Warmond nog een glimpje. Nu (9:29) schijnt hij mij volop in het gezicht, maar is het majestueuze er al van af.
Helemaal gevloerd door het “Pie Jesu” uit Andrew Lloyd Webbers Requiem: Pie Jesu, qui tollis peccata mundi, dona eis requiem. Dat hebben we vandaag zeker nodig, nu er in de disciplinecommissie over de zelfstudie gepraat wordt. Bedreiging van Theoretische Psychologie en Persoonlijkheidspsychologie. In het voorstel ontspringen wij de dans. Misschien wordt dat nog anders? Wij zijn tenslotte ook een van de kleintjes. Ons onderzoek werd slecht beoordeeld. Liefde die liefde wekt. Inderdaad. Wat aan Ed van Thijns boek zo boeiend is: je krijgt een beeld van de tijdsbesteding van een minister, die het als burgemeester heel goed heeft gedaan. Verder duikt Felix Rottenberg voortdurend in het verhaal op. De politiek, dat zou wel iets voor mij zijn.
Gisteren het bericht dat Cathrien zondag wordt ingeleid. Spannend! Bloeddruk loopt op zodat de kleine gehaald moet worden. Gebeurt allemaal in het LucasAndreas, tegenwoordig OLVG West. Hopelijk nemen de verloskundigen en artsen de juiste beslissingen. En blijft Cathrien er rustig onder. 

Met Janny gaat het slecht, de laatste van haar dagen zijn aangebroken. Saskia van Jan Willem en Titia kwam ineens aangevlogen, kennelijk gestuurd door JW en T. Was dinsdag hier, ze logeert bij Mieke. 

Heb nog steeds moeite om me hier thuis te voelen. Gaat wel geleidelijk iets beter. Al een week geen hartkloppingen meer. Ben een paar kilo afgevallen. Proberen er vandaag een genietdag van te maken. 
Gisteren en vandaag bezoek gebracht aan Karl Steffens in Bonn.

<<ximg "/Foto's/20170609 Bezoek aan Karl.jpg">>
09:19	Even verder met het verhaal.
Donderdagmiddag verder de uitvaart besproken. Daarna kwamen de mannen van de begrafenisonderneming om Ma in de kist te leggen. Beneden in de serre alles klaargemaakt. Naar Geert om daar te eten. 's Avonds naar huis.

Vrijdag 2 mei 's ochtends al een deel van het boekje gemaakt, teksten en liedjes gescand. 's Middags weer naar Geert om met pastor Hans Dijkman de avondwake te bespreken. Pastor Dijkman is een vrolijke man met een kruis om de nek, een late roeping met cara. Hij had zelf een tekst uit de Spreuken gekozen, de sterke vrouw. We hebben er nog uit Lucas aan toegevoegd: geen zorgen voor de dag van morgen. Na dit overleg naar De Wilp om bij Piet Zoomers pakken uit te zoeken. We waren een soort mafiafamilie die zich voor de begrafenis van La Mama netjes in de kleren wilde steken. Helaas was er voor Berend geen goede maat. Beer teleurgesteld. Hij wilde dolgraag een pak, voelde zich duidelijk bij de groten horen. Nadat we ons voor 2000 euro hadden uitgedost naar Richard waar we elkaar om 20 uur troffen. Het gesprek wilde niet goed op gang komen. Uiteindelijk met Richard en Marjolijn nog wel goed doorgepraat. Richard's opmerking dat verdriet en gedeprimeerdheid niet hetzelfde zijn werd Thijs beaamd. Anne en Richard probeerden hun reacties onder woorden te brengen. Richard: verdriet en dankbaarheid.

Zaterdag 3 mei 's ochtends in de Broederenkerk voor het eerst sinds jaren weer op een kerkorgel gespeeld. Voelde zeer goed. 's Middags weer naar huis. Gelukkig 's middags voor Berend in de stad een pak kunnen vinden. Bij een vermoedelijk joodse winkel op de Nieuwendijk. Verder gewerkt aan boekje. Alles naar Veronique gemaild die de zaak met Richard naar de drukker heeft gebracht. Anne had een mooie afbeelding van een relief met Maria van Della Robbia voor de voorkant uitgezocht.
<<ximg "Pensionado/Geheugen/Dagboek/20071109 Dagboek.png">>
;
"""
1. Installeer plugin: exchangecalendar-v3.8.0.xpi (staat op sd-kaartje)
2. Create new calendar met exchange protocol
3. Instellingen:
"""

:Server url: https://autodiscover.vu.nl/EWS/Exchange.asmx
:Primair e-mail adres: j.j.beishuizen@vu.nl/jbn780@vu.nl
:Gebruikersnaam: jbn780@vu.nl

Dit geeft soms problemen. Je kunt een paar keer check server doen zonder iets in te vullen. Dan twee keer jbn780@vu.nl invullen. Dan lijkt het opeens toch te werken.

Dit is de locatie: https://auto/e6fe72df-d821-4759-85c8-3e14805b80ed

4. Als bovenstaande problemen geeft, gebruik dan de volgende omweg:

:Installeer Davmail
:Stel Davmail als volgt in:
<<ximg "/Digitaal/20170522 settings davmail.png">>
:Maak in Thunderbird een agenda via Caldav. Geef als locatie: http://localhost:1080/users/j.j.beishuizen@vu.nl/calendar
;
user name: jbn780<br>
Server

:Ingoing
::Type: imap
::Name: outlook.office365.com
::Port: 993
::Security: SSL/TLS
::Authentication: Normal password (!)
:Outgoing
::Name: smtp.office365.com
::Port: 587
::Security: STARTTLS
::Authentication: Normal password
"""
1. In terminal: sudo apt-get install samba smbclient
2. Alt-F2: system-config-printer
3. Add new printer
4. Network Printer > Windows Printer via Samba
5. ricohprint.vu.nl/VU_Ricoh_Color_Printer of printers.vu.nl/VU_Ricoh_Color_Printer
Naam: vu/jbn780, passwd: 14Mei5O
6. Driver: Ricoh. Aficio MP C4502 model and the Ricoh Aficio MP C4502 PXL [en]
7. Printer opties:
Option tray: Lower Paper Trays
Large capacity Tray: Installed
Internal Tray 2: Installed
Internal Shift Tray: Not Installed
External Tray: Not Installed
Finisher: Finisher SR3090
8. Idem voor Zwart Wit Printer
NB: Authenticatie: vu/jbn780 en dan het VU-wachtwoord
"""Stop all the clocks, cut off the telephone,
Prevent the dog from barking with a juicy bone,
Silence the pianos and with muffled drum
Bring out the coffin, let the mourners come.

Let aeroplanes circle moaning overhead
Scribbling on the sky the message He is Dead.
Put crepe bows round the white necks of the public doves,
Let the traffic policemen wear black cotton gloves.

He was my North, my South, my East and West,
My working week and my Sunday rest,
My noon, my midnight, my talk, my song;
I thought that love would last forever: I was wrong.

The stars are not wanted now; put out every one,
Pack up the moon and dismantle the sun,
Pour away the ocean and sweep up the woods;
For nothing now can ever come to any good.

http://youtu.be/b_a-eXIoyYA
Volgens Immanuel Kant, in zijn Grundlegung zur Metaphysik der Sitten (1785), is datgene wat een prijs heeft – een ‘Wert’ – vervangbaar, maar datgene wat boven iedere goddelijke waarde is verheven niet. 

Dit verklaart ook waarom de mens volgens Kant een doel in zichzelf is en niet tot middel mag worden gedegradeerd.
Wat is menselijke waardigheid? Belangrijke vraag omdat we van Camus leren dat je je lot zou moeten omarmen en met waardigheid tegemoet treden. Het leven, je leven, maar ook je dood. Bijvoorbeeld als gevolg van een operatie aan je aortaklep. Die operatie zou je bewust en waardig tegemoet moeten treden. Maar ook je eigen zwakheden, je geringe zelfrespect, je neiging om jezelf te vernietigen. Zie briefwisseling:

<<pdf "/Teksten/20210423 Essay_wat_is_waardigheidcompleet.pdf">>
"""
Wat is de sabbat? Een herinnering aan de koninklijke waardigheid van elke mens; een afschaffing van het onderscheid tussen meester en slaaf, rijk en arm, succes en mislukking. Wie de sabbat viert, ervaart zijn uiteindelijke onafhankelijkheid van beschaving en maatschappij, van prestatie en mislukking. De sabbat is de belichaming van het geloof dat alle mensen gelijk zijn en dat gelijkheid van de mensen hun adeldom betekent. De grootste zonde van de mens is te vergeten dat hij een vorst is. De sabbat is een verzekering dat de geest groter is dan het heelal, dat voorbij het goede en het heilige is. Het heelal werd in zes dagen geschapen, maar het hoogtepunt van de schepping was de zevende dag. De dingen die gedurende de zes dagen in aanzijn kwamen, zijn goed, maar de zevende dag is heilig. De sabbat is heiligheid in de tijd.
Abraham Joshua Heschel in: ‘God zoekt de mens. Een filosofie van het jodendom’. De Haan 1986, oorspr. 1955, blz. 464.
<<ximg width:100% "/Foto's/Screenshot_20210507-135533.png">>
<<tabs "[[A stroll through Stroll]] [[The TiddlyWiki layout]] [[Using tiddlers]] [[Linking in Stroll, part 1]] [[Linking in Stroll, part 2]] [[Linking in Stroll, part 3]] [[New tiddler linked here]] [[Two columns]] [[Advanced stuff]] [[Troubleshooting]] [[Stroll vs Roam]] [[Recent updates to Stroll]] [[Download Stroll]] [[Updating Stroll]] [[Add Stroll to your TW]] [[Remove Stroll from your TW]] [[Get goodies]] [[Help / Acknowledgments]] [[Help us]]" "[[A stroll through Stroll]]" "$:/state/strollhometabs" "tc-vertical">>

"""
Gelezen op: http://www.streventijdschrift.be/artikels/01/DerkseMorus.htm, 10 april 2005, sterfdag van Dick Verweij

Wil Derkse

Thomas More: veelzijdig patroon van de Vriendschap

'He was the person of the greatest virtue these islands ever produced.'
Samuel Johnson

Op 31 oktober 2000 heeft Paus Johannes Paulus II Thomas More (1478-1534) tot patroonheilige van de staatslieden en politici geproclameerd. Sinds 1935 prijkte More al op de rooms-katholieke heiligenkalender, en sinds 1976 tevens op de anglicaanse. In de apostolische brief waarin de paus deze keuze motiveert, wordt goed gedocumenteerd Mores levensloop geschetst en komen zijn veelzijdige kwaliteiten ter sprake. Maar de hoofdreden om More tot patroon van de staatslieden en politici uit te roepen is natuurlijk zijn standvastige en gewetensvolle houding jegens Hendrik VIII inzake (uiteindelijk) de relatie tussen Kerk en staat, een houding die Thomas More met de dood moest bekopen. In dit artikel wil ik juist de vele andere facetten van Mores persoonlijkheid doen oplichten, en wel in het bijzonder zijn talent voor de vriendschap.
Het beeld dat velen van Thomas More hebben, is eenzijdig in een dubbele zin: als de auteur van één boek, Utopia, en als de tragische hoofdrolspeler in één staatsaangelegenheid, 'the King's Great Matter'. Deze twee eenzijdigheden worden soms nog samengebracht ook, zoals in een bericht dat verscheen in de gratis op de Nederlandse stations verspreide ochtendkrant Metro van dinsdag 11 januari 2000: 'De kleine cel waar Thomas More tot zijn onthoofding op 6 juli 1535 zou zijn vastgehouden is sinds gisteren open voor het publiek. [...] Het publiek kan de cel alleen met een gids bekijken. More schreef er Utopia in 1516.'
Dit bericht suggereert dat More minstens negentien jaar in de gevangenis zou hebben doorgebracht, en in het begin van deze lange donkere periode zijn toevlucht nam tot het ontwerp van een ideaal 'nergensland', waar de zaken wat beter geregeld waren dan in de kerk en maatschappij van zijn eigen dagen.
Tijdgenoten roemen juist Mores veelzijdigheid. We vinden dat mooi terug in zijn typering als 'a man for all seasons'. Deze typering is niet afkomstig van de auteur van het gelijknamige toneelstuk uit 1960, dat enkele jaren later zo onnavolgbaar verfilmd werd. Evenmin werd deze omschrijving door een biograaf na zijn dood aan More toegekend. Het was zijn tijdgenoot Robert Whittington die in 1520, dus vijftien jaar vóór Mores dood, in een brief aan een vriend schreef:

'More is een man met de geestigheid van een engel en van een uitzonderlijke geleerdheid; zijn gelijke ken ik niet. Want waar is iemand te vinden met zulk een zachtmoedigheid, bescheidenheid en beminnelijkheid? Al naar wat past bij de situatie is hij een man van sprankelende vrolijkheid en speelsheid, en dan weer vol diepe en delicate ernst: een man voor alle seizoenen.'
More had in 1520 nog meer dan een decennium van veelal onbezorgde en vruchtbare jaren voor zich. Hij ging op diplomatieke missie naar Brugge, hij hield de welkomstrede bij de ontvangst van Karel V, er kwam een uitgave van zijn Latijnse gedichten. Hij ontving het mooie tweeluikje dat Quinten Metsijs van zijn vrienden Pieter Gilles en Erasmus maakte. Hij verhuisde naar zijn nieuwe huis te Chelsea, waar Hans Holbein de Jongere geruime tijd te gast was en onder meer het gezin More schilderde. We kennen allemaal het latere mooie portret als Lord Chancellor, waarop More met een gespannen gezicht staat afgebeeld, met een dringend document in de hand - je zou bijna denken dat het om een spoedeisend faxbericht gaat. De portrettekeningen die thuis zijn gemaakt tonen een ontspannen, glimlachende More, nog zonder 'fax'.
Het is dus goed zich te realiseren dat het conflict met Henry VIII slechts de drie laatste van Mores zevenenvijftig merendeels gelukkige en geslaagde levensjaren heeft gekleurd.

Veelzijdigheid

More was veelzijdig getalenteerd: als jurist, als geleerd humanist, als vader, als Europeaan, als gelovige, als drager van publieke verantwoordelijkheid, als vriend. En elk van deze talenten heeft hij gecultiveerd.
Zijn vaderschap heeft hij heel serieus genomen. De opvoeding van zijn kinderen kreeg grote aandacht, onder meer door het aannemen van getalenteerde huisleraren - die werkelijk huisgenoten waren. Het moet een gezellige academie geweest zijn bij More thuis, zoals je in verschillende brieven van en over More kunt lezen. Zo noemde Erasmus Mores huishouding 'Plato's Academie op christelijke grondslag'. De meisjes in huis kregen een even grondige opleiding als de jongens - een zeldzaamheid in die tijd. Een bewuste keuze, zo weten we uit Mores briefwisseling. Allemaal werden ze grondig getraind in de beide klassieke talen, waarbij More (en ook zijn kinderen) het leuk vonden aan dubbele vertaalopdrachten te werken: bijvoorbeeld uit het Grieks naar het Engels, en dan weer terug, om zo te bezien of je een beetje in de buurt van het origineel uitkwam. Alle correspondentie van More met zijn kinderen was - tot hun volwassenheid - in het Latijn. Daarnaast kregen ze wiskunde, logica, filosofie, theologie, astronomie, geschiedenis - waar More ook zelf veel werk van maakte: hij schreef een History of Richard the Third (1513). Oppervlakkig was deze opvoeding geenszins: Margaret More (zijn favoriete dochter 'Meg') vertaalde (en publiceerde) Erasmus' Verhandeling over het Onze Vader van het Latijn in het Engels; geleerden roemden haar kennis van zaken bij het verbeteren van een corrupte Latijnse tekst. De sfeer in Mores huis trok mensen aan (je zou het zijn eigen mini-Utopia kunnen noemen) en werd gekenmerkt door mildheid, gastvrijheid, geleerdheid en geestige gezelligheid. Zijn schoonzoon Roper, die veertien jaar onder Mores dak woonde, schrijft dat hij het maar één keer meemaakte dat Thomas More uit zijn slof schoot - en dat was niet eens jegens Roper, die de Reformatie was aangedaan. Als je Mores correspondentie met zijn kinderen leest, ben je geroerd hoe attent hij was, zoals in zijn kleine en opbeurende briefjes als ze ziek zijn, en als hij wat langer weg is en ze hem missen.
Thomas More was een geleerde humanist. Hij sprak met specialisten als hun vakgenoot, publiceerde onder meer Latijnse epigrammen en een doorwrochte biografie van Pico della Mirandola. Wanneer hij toetreedt tot de Privy Council van Hendrik VIII vindt Erasmus dat een spijtige stap: 'Het enige wat mij troost nu je tot het hof gaat behoren, is dat je onder de beste der koningen zult dienen, maar helaas ben je nu verloren voor ons en de studie'. Dat laatste viel wel mee, want ook daarna publiceerde More indrukwekkend geleerde geschriften; dat van die 'beste der koningen' pakte trouwens ook al wat anders uit.
Thomas More droeg publieke verantwoordelijkheid. Als briljant en succesvol advocaat, met veel invloed op de latere jurisprudentie; als Under-Sheriff van Londen (nog ruim een eeuw na zijn dood werden er in de straten liedjes gezongen over die 'goede Sir Thomas'); als diplomaat en als lid van de Privy Council; als Lord Chancellor. In die laatste publieke functie - de hoogste onder de koning - werkte hij twintig jaar administratieve achterstand in één jaar weg, dus een effectief manager was hij ook al.
Thomas More nam zijn geloof serieus. Enige tijd dacht hij als jonge man erover als kartuizer te gaan leven, maar, aldus Erasmus, daarvoor waren zijn (erotische) passies te krachtig. Zijn verdere leven was dat van een 'leek' met een onmiskenbaar monastieke kant. In zijn enigszins van het klooster afgekeken dagorde was veel ruimte voor geestelijke lezing en gebed. De vrijdag was daar zelfs geheel aan gewijd. Hij nam zijn geloof inderdaad serieus, maar zonder de sombere en vreugdeloze zuurheid van de doorgeschoten asceet. Perfect was More natuurlijk niet. Ook hij behoorde tot de algemeen-menselijke categorie die C.S. Lewis eens omschreef met 'We are all God's patients, not yet cured'. Hij was bangelijk voor fysiek ongemak en had moeite zijn sterke passies in het gareel te houden. En hij had een beetje een 'opvoederdeformatie': ook jegens zijn twee vrouwen Jane en Alice hing hij soms wat al te veel de pedagoog uit. Misschien was het grootste talent van More wel dat voor de vriendschap. Talenten kunnen niet zonder cultivering. Mores talent om vrienden te maken ('a winner of souls') heeft hij zijn hele leven gecultiveerd. Erasmus was zijn 'beste' vriend ('Als het nageslacht mij zal kennen, dan als vriend van Erasmus') - maar in zijn laatste jaren was zijn dochter Margaret zijn 'intiemste' vriend.

Kleine fenomenologie van de vriendschap

Vriendschap is een interessant en ingewikkeld verschijnsel, waarover in de ideeëngeschiedenis veel is nagedacht. Ik volg hierover deels de analyses van Aristoteles, die in zijn Ethica Nicomachea twee mooie en genuanceerde hoofdstukken aan vriendschap en vrienden heeft gewijd - misschien wel het beste wat ooit over vriendschap geschreven is; voorts Montaigne, die in zijn Essais een prachtig opstel schreef over onder meer zijn eigen vriendschap met Étienne de La Boétie (geschreven na diens dood), en C.S. Lewis, die in zijn Four Loves de domeinen van affection, friendship, eros en charity van elkaar onderscheidt én met elkaar in verband brengt.
Vriendschap bestaat volgens Aristoteles in allerlei gradaties. Er is een soort beginniveau van vriendelijke welwillendheid jegens personen met wie je zoal van doen hebt (op je werk, in een commissie, op straat met andere deelnemers aan het carnaval). Deze welwillendheid is diffuus en algemeen, en niet jegens één persoon in het bijzonder gericht. Wanneer een persoon in die commissie wordt vervangen door een ander, of wanneer degene die naast je naar de carnavalsoptocht stond te kijken en met wie je een pilsje dronk vervolgens zijn eigen weg gaat, dan beschouw je dat in het algemeen niet als een pijnlijk verlies dat je persoonlijk raakt.
Een al iets sterkere band is er in vriendschappelijk contact omwille van het 'nut': met personen die deel uitmaken van je 'netwerk', die je te 'vriend' wil en moet houden. Bijvoorbeeld omdat ze een goed woordje voor je kunnen doen, een rol kunnen spelen bij het welslagen van een opdracht, te zijner tijd een rol kunnen spelen bij voor jou belangrijke besluitvorming. In deze context spreken we soms eerder van een 'vriendje', in de zin dat we bijvoorbeeld een vriendje bij Shell of op het ministerie hebben. Een vriend(je) is hier in zekere zin een middel. Het Griekse woord voor 'middel' betekent dan ook niet voor niets: datgene dat bijdraagt aan het bereiken van een doel, dat iets ánders is. Vrienden op dit niveau houden niet zozeer van elkaar, zo zegt Aristoteles, maar van hun winst. Dat klinkt wat grof, maar het is zeker zo dat het contact met mensen die je netwerk verlaten en geen rol van belang meer kunnen spelen, meestal snel verwatert.
Van een intenser aard alweer is vriendschappelijke affectiviteit omwille van het plezier en het genoegen, dat volgens Aristoteles van erotische aard kan zijn, maar ook van doen kan hebben met andere vormen van gedeeld en gezamenlijk plezier: muziek, de poëzie. Ook hier is het deels zo dat het 'doel' van de vriendschap nog iets ánders is. Aristoteles zou zeggen: deze vrienden houden niet zozeer van elkaar, als van hun plezier en genoegen. Wél is de persoonlijke binding al een stuk sterker: wanneer je het onverwachte overlijdensbericht leest van je makker in de modelspoorwegclub of je strijkkwartet ben je meer en dieper aangedaan dan wanneer je hoort dat een medecommissielid of iemand uit je 'netwerk' is gaan hemelen.
Het hoogste niveau is voor Aristoteles vriendschap 'nergens om', dus niet omwille van nut, genoegen of eer - al kunnen dat zeker bijkomende effecten zijn. Echte vrienden geven 'om elkaar'. Of in de korte omschrijving van Montaigne: 'omdat jij het bent, omdat ik het ben'. In zijn essay over de vriendschap heeft hij dan net proberen te ontrafelen waarom Étienne de La Boétie en hij zulke intieme vrienden geworden zijn. Zeker, op een feestje waar ze elkaar ontmoetten (ze maakten al deel uit van hetzelfde 'netwerk' van juristen in Bordeaux), herkenden zij elkaar in een gedeelde passie voor de klassieke letteren. Zo was er wel meer wat er qua belangstelling 'klikte'. Maar dat gold waarschijnlijk ook voor andere personen in dat netwerk. Uiteindelijk kan Montaigne maar één 'reden' geven, die eigenlijk niets verklaart maar slechts aangeeft dát de vriendschap gebeurde: 'omdat jij het was, omdat ik het was'.
Dit niveau van vriendschap is vanuit de evolutiebiologie gezien een merkwaardig fenomeen: je geeft je genen er niet mee door, je krijgt niet meer eer, status of rijkdom in je territorium, en vriendschap op dit niveau wordt lang niet altijd gevoed door alleen aangename en plezierige prikkels. Op haar best is vriendschap merkwaardig 'nutteloos' en heeft ze geen enkele 'survival value', net zo min als Brahms' Vioolconcert dat trouwens heeft. Toch stelt Aristoteles dat iemand die deze vorm van vriendschap niet ervaren heeft, eigenlijk geen menselijk leven heeft geleid.
De genoemde gradaties van vriendschap kunnen en zullen in elkaar overgaan en met elkaar gemengd voorkomen. Met dat goede contact in je netwerk kan kameraadschappelijkheid ontstaan; met die makker uit je club kun je opeens een heel andere band krijgen wanneer het er persoonlijk om spant. Je levenspartner kan je beste vriend(in) worden. Hetzelfde kan gebeuren tussen ouders en kinderen - Thomas More 'and his whole school' tonen ons daar een mooi voorbeeld van.
Hoe hoger de gradatie van vriendschap, des te moeilijker laat je iemand 'vallen' - al ligt verval altijd op de loer. Zoals bij alles van waarde geldt ook hier: er is inspanning voor nodig om 'tegen de morele zwaartekracht in' te bewegen. Half werk leveren, dingen laten liggen (die brief waar je vriend op wacht), zaken laten verslonzen - dat gaat allemaal vanzelf, zoals vallende voorwerpen zonder inspanning met de zwaartekracht meebewegen. Attente aandacht, toewijding, zorgvuldigheid - dat gaat niet vanzelf, dat vereist oefening: net even dat beetje meer geven, - een dagelijkse, om niet te zeggen 'uurlijkse' innerlijke ommekeer tegen de morele zwaartekracht in.

Door in het bovenstaande te spreken over 'gradaties' en 'vriendschap op haar best' zou de foutieve indruk kunnen ontstaan dat de vier 'lagere' niveaus niet hun eigenstandige menselijke en sociale waarde en betekenis kunnen hebben, en dat je die drie eerdere niveaus snel zou moeten overstijgen en verlaten om je aan het hoogste niveau te wijden. Maar dat zou een groot verlies zijn, en zo werkt het ook niet. Deze vormen van vriendschap kunnen elkaar versterken en zijn op elkaar aangewezen. Wie door vriendschap op haar best wordt gevoed, staat waarschijnlijk met iets meer welwillendheid tegenover wie hij in zijn dagelijkse contacten ontmoet, en speelt niet zelden een stimulerende en plezierige rol in zijn 'netwerk'. Juist doordat hij zo gevoed werd in enkele échte vriendschappen, vonden velen het in Thomas Mores netwerk zo aangenaam toeven en voelden ze zich erdoor gestimuleerd. Voor Erasmus was zijn kennismaking met More 'vriendschap op het eerste gezicht' (Kees Fens) en een intellectuele bevrijding. In Engeland en in contact met More 'genas hij van de Middeleeuwen' (Stefan Zweig).
Omgekeerd voeden een welwillende houding in het alledaagse verkeer en aangename en kameraadschappelijke contacten het gesprek met die paar échte vrienden die je hebt. Niet voor niets onderstreept Aristoteles de sociaal-politieke betekenis van vriendschap. De philia is een belangrijk bindmiddel en versterkt de sociale cohesie.

Contrasten tussen vriendschap en minnen

Voor C.S. Lewis is vriendschap een van de vier hoofdvormen van positief intermenselijk contact en genegenheid: affectie, eros, vriendschap, naastenliefde. Een vergelijking van de eros - de affectiviteit tussen beminden - en de vriendschap toont hun verschillen in klankkleur. Vriendschap kan tegen een lange periode van scheiding; twee vrienden hebben elkaar lange tijd niet gesproken, maar wanneer ze elkaar weer ontmoeten kan het gesprek als het ware worden voortgezet waar het jaren daarvoor werd afgebroken. In het geval van een lange scheiding tussen beminden zal er bij de hereniging veel uitleg, aftasten en schromelijke gewenning nodig zijn.
Vriendschap kan er bij opbloeien als er een derde, vierde of vijfde persoon in het spel komt; wanneer in een hechte vriendengroep één persoon wegvalt, dan is dat een groot verlies. Het zou vreemd zijn te zeggen dat je die andere drie nu weer 'voor jezelf' hebt. Maar tussen twee beminden worden de zaken er niet gezonder en zeker niet eenvoudiger op wanneer met een derde of vierde persoon erotische banden worden aangeknoopt. Verliefden gaan op in elkaar - ze staan naar elkaar gericht, kijken elkaar diep in de ogen. Tussen vrienden zal dat niet gebeuren. Die zijn vaak in vriendschap betrokken op 'iets anders': een zaak, een onderwerp (al was het maar samen roddelen), een gedeelde belangstelling: de klassieke talen, Brahms, een voetbalclub.
Beminden, en met name verliefden spreken graag over de liefde voor elkaar. Ze schrijven elkaar liefdesbrieven - eventueel via e-mail. Vrienden spreken niet over de vriendschap voor elkaar en schrijven elkaar ook geen 'vriendschapsbrieven'. Tegenover anderen dan de vrienden kan dat soms wél. Erasmus geeft een ontroerend veelzijdig en intiem liefdevol portret van More in een brief - niet aan More zélf natuurlijk (die zou dat heel gênant gevonden hebben), maar aan Ulrich von Hütten: 'Hij is schoon van uiterlijk, zijn gelaatskleur meer fris dan bleek, hoewel verre van rood, alleen een lichte blos ligt eroverheen gespreid. Zijn haar is zwart, bij donkerblond af, of, als u dat liever wilt, donkerblond bij zwart af. Zijn baard is dun, z'n ogen zijn grijsblauw, met een vlekje hier en daar gespikkeld; dit soort ogen pleegt een gelukkig innerlijk aan te duiden... Ze zeggen dat geen ander soort ogen zo vrij van gebreken is'. Maar soms ook licht de intimiteit ook even in het onderlinge contact tussen More en Erasmus op, bijvoorbeeld wanneer More, als tussenzinnetje in een Latijnse brief van theologische aard, even noteert (in het Engels): 'Erasmus, my darling'.
Bij de erotische genegenheid gaat het in enigerlei wijze om 'naakte lichamen'; bij vrienden gaat het om 'naakte zielen': een contact zonder masker of façade. In je netwerk zeg je meestal desgevraagd dat alles goed gaat, probeer je je zwakke kanten te verbergen, en zet je goede kanten op subtiele wijze in de etalage. Tegenover je vriend toon je je 'warts and all'; je zou je vriendschap bezoedelen door je vriend níét te zeggen dat je bijvoorbeeld de laatste tijd niet zo lekker in je vel zit, of dat je je eerlijk gezegd wat zorgen maakt over het nog prille huwelijk van je oudste zoon. Een collega en vriend definieerde vriendschap eens als 'een zone zonder gevaar'. Onder vrienden hoef je niet op je woorden te passen of anderszins op je hoede te zijn. Je hoeft geen toneel te spelen, je zwakheden en nukken worden geaccepteerd, er wordt niets van je gewild, je maakt geen deel uit van iemands agenda.

Cultivering en aanstekelijkheid van vriendschap

Wat vrienden als enig oogmerk hebben, is af en toe 'bij elkaar te zijn'. Weliswaar komt daar altijd iets bij: een gesprek, een ijskoude borrel, een beetje roddelen - maar daar draait het niet om. Mijn vrouw zou verbaasd opkijken wanneer ik van een goede vriend huiswaarts keer en zou zeggen dat deze vriendschap zijn langste tijd heeft gehad omdat er ditmaal geen borrel was, of mijn vriend wat humeurig was, of dat we ditmaal wat minder hebben gelachen dan normaal. Vriendschap wordt daarentegen wél bedreigd wanneer daar iets bij gaat komen dat een eigenstandige betekenis krijgt: een gemeenschappelijke zakelijke aangelegenheid, een project, een agenda, andere bedoelingen dan het 'bij elkaar zijn'. Deze spanning is er tussen Thomas More en Erasmus soms ook geweest, zo denk ik. Bijvoorbeeld toen het More niet lukte om voor zijn vriend jaargelden en andere fondsen aan te boren. Of toen Erasmus signaleerde dat zijn vriend inzake de Reformatie wel erg rechtlijnige en harde standpunten begon in te nemen.
Gelukkig kan vriendschap die stevige wortels heeft wel een stootje hebben. Ze kan dan ook gerust asymmetrisch zijn, in de zin dat de een in sommige opzichten meer 'geeft' dan de ander. Wederkerigheid is hier helemaal geen vereiste. More was van nature waarschijnlijk een aangenamer mens in de omgang dan Erasmus. Beiden zaten daar niet mee: zo zit hij in elkaar; en zo zit ik in elkaar. Een van mijn eigen vrienden zal mij alleen bellen 'als er iets is'; ik bel hem ook 'zomaar'. Zo zitten we nu eenmaal in elkaar. Anders dan bij levenspartners zullen vrienden zelden of nooit de gedachte hebben: was hij maar wat vrolijker, waarom moet ik altijd de eerste stap zetten, zij zou eens wat minder bazig moeten zijn - althans waar het hun vriendschap betreft. Aan de andere kant kunnen vrienden elkaar wel corrigeren. In de 'broederlijke correctie' door je vriend neem je ook gemakkelijker iets aan dan wanneer bijvoorbeeld je beminde of je baas je corrigeert. Vrienden kunnen over alles lachen, ook over elkaar, ook over wat hun heilig is. Over de Kerk kon Thomas More met Hendrik VIII geen grapjes maken, maar met Erasmus rijkelijk.
De niet bedreigende en gemoedelijke correctie, en ook de ontspannen lach over elkaar kunnen als een goede 'vriendschapstest' worden gezien - ook in andere relaties. Wanneer levenspartners zó met elkaar kunnen omgaan, dan zit het met de rest van hun samenleven ook wel snor. Zo kan het ook gebeuren dat de ouder-kindrelatie zich ontwikkelt naar een vriendschapsband. Opeens stel je vast dat je het heel aangenaam vindt wanneer je dochter je met milde spot op je inderdaad minder fraaie kanten wijst. Daar kan een krachtiger correctie van uitgaan dan van een functioneringsgesprek met je bevoegd gezag. Mores dochter Margaret ('my dear Meg', zo schrijft More soms wel zesmaal als een litaniegezang in één brief vanuit de Tower) was het die hem in zijn laatste maanden soms onbarmhartig de spiegel voorhield - en zónder dat dit hun band bedreigde.
Vriendschap behoeft cultivering. Vriendschap kun je niet planmatig opbouwen, zoals dat met je relatienetwerk wel kan. Maar je kunt in zekere zin wel de aandacht cultiveren voor de randvoorwaarden van de vriendschap: aanvoelen dat het tijd is om de telefoon weer eens te pakken, het besluit nemen om met een flesje wijn onder de arm even langs te lopen en onverwacht aan te bellen, bij een antiquariaat snuffelend automatisch de belangstelling van je vriend 'meenemen', attent reageren op een verrassend geschenkje dat een vriend je laat bezorgen. In de briefwisseling tussen More en zijn vrienden treffen we mooie voorbeeldjes aan van attente aandacht voor elkaar. Wanneer More voor een diplomatieke missie in Calais is, sturen zijn vrienden Erasmus en Pieter Gilles (in wiens Antwerpse tuin het verhaal van Utopia begint - uiteraard in een vriendengesprek) hem een door Quinten Metsijs geschilderd tweeluikje met hun portretten. De namen van Erasmus en Gilles staan er niet onder, want hun identiteit blijkt uit hun bezigheden. Erasmus is afgebeeld als een humanist par excellence: aandachtig werkend aan een boek; de fijne pen in de hand, boeken en schaar binnen handbereik, zijn licht samengeperste lippen - een tafereel dat acribie uitstraalt. Gilles is in zekere zin afgebeeld áls vriend van Thomas More, want hij heeft een brief van More in de hand. More stuurt een dankbare brief naar Pieter (met in de envelop ook een brief voor Erasmus): hij vraagt de afgebeelde brief terug om deze thuis naast het tweeluikje in te lijsten, om zo voor een dubbel effect te zorgen. In de brief aan Erasmus merkt More op dat zijn ijdelheid is gestreeld: want door brieven, boeken en schilderijen zal het nageslacht More nu tóch herinneren, namelijk 'als vriend van Erasmus'.
Zoals alles van waarde behoeft vriendschap inderdaad aandacht en zorg. Een aantal trekken van onze eigen cultuur bevorderen de randvoorwaarden voor vriendschap echter geenszins. Bij zoveel relaties en betrekkingen stellen we onszelf impliciete vragen als 'wat zit er voor mij in?', 'wat word ik er beter van?', dat deze ook in échte vriendschappen kunnen binnensluipen. Voeg daar nog onze volle agenda's aan toe, het niet meer echt de tijd nemen voor zaken van waarde, onze neiging tot 'zappen' (en niet alleen met de afstandsbediening), het zijn evenzovele bedreigingen van een klimaat waarin vriendschappen kunnen gedijen.
Maar waar ze gebeurt, werkt vriendschap aanstekelijk. Als je leest over de vriendenkring van en rond C.S. Lewis en J.R.R. Tolkien in Oxford, wekelijks bier drinkend en elkaar verhalen vertellend in The Eagle and Child, dan zou je zo willen aanschuiven. Bij Thomas More en Erasmus, bij Pieter Gilles in zijn Antwerpse tuin, heb ik datzelfde verlangen. Thomas More is voor mij geleidelijk een vriend voor het leven geworden. Op mijn werkkamer hangt een kopie van het Holbein-portret. Tegenover hem een kopie van Quinten Metsijs' Erasmus - zo zit ik toch een beetje tussen beide vrienden, tussen de aandachtige geleerdheid van de een, en de publieke functie van de ander. Twee voorbeelden.
Thuis heb ik nóg een portret van More, dat zélf een resultaat van zijn aanstekelijkheid is. Onze oudste dochter kreeg op een gegeven moment in de gaten dat ik 'iets met More had' dat ik niet met andere historische figuren had. Samen keken we die zomer naar de terecht met Oscars overladen A Man For All Seasons, met Paul Scofield als een onvergetelijke Thomas More. Kort tevoren was onze dochter begonnen met een schildercursus. Haar eerste olieverfschilderijtje gaf ze me die zomer bij mijn verjaardag: een portret van Thomas More. Ze had het Holbein-portret als uitgangspunt gekozen, maar ze heeft More een iets vriendelijker en meer ontspannen gezicht gegeven. Ik zou dit schilderijtje niet willen ruilen met het echte portret in de Frick Collection in New York.
't Hangt bij mijn zolderhoekje waar ik de dag probeer te beginnen en te eindigen met een psalm, een mooie andere tekst, stil bij een kaars zitten. More is vaak het eerste gezicht dat ik 's morgens zie - ik begin de dag meestal wat vroeger dan mijn vrouw. Ik betrap me niet zelden op een gemompeld 'goedemorgen, Thomas', als ik boven kom. A friend for all seasons - en een perfecte patroonheilige van de vriendschap.

Bibliografie
Peter Ackroyd, The Life of Thomas More, Londen, 1998 (de nieuwe standaard na Chambers).
Robert Bolt, A Man for All Seasons, New York, 1960/1962 (nog steeds in druk, bij Vintage International).
R.W. Chambers, Thomas More, Londen, 1935 (een klassieker met vele herdrukken).
Richard Marius, Thomas More, New York, 1984 (een uitvoerige en geleerde biografie, met een soms uitgesproken oogmerk).
Louis L. Martz, Thomas More: The Search for the Inner Man, New Haven/Londen, 1990.
Kees Fens, 'Erasmus en More. De ontmoeting van twee grote geesten', de Volkskrant, 14 oktober 2000.
Léon Halkin, De biografie van Erasmus, Baarn, 1991 (vertaling van Erasme parmi nous, Parijs, 1987).
Stefan Zweig, Triumph und Tragik des Erasmus von Rotterdam, Wenen, 1935.
"""De aarde is niet uit haar baan gedreven
toen uw hartje stil bleef staan,
de sterren zijn niet uitgegaan
en 't huis is overeind gebleven.

Maar al 't geklaag en dof gesnik,
zelfs onder 't troostend koffiedrinken,
het kon uw stem niet op doen klinken,
noch licht ontsteken in uw blik.

Gij zult wel nimmermeer ontwaken,
want gij bleef roerloos toen de trap
zo kraakte bij de stille stap
des mans, die kwam om toe te maken.

Ziet, lieve menschen, 't is volbracht.
Wat gaan wij doen? Wij konden bidden,
dan blijf ik nog wat in uw midden,
gij krijgt toch wel geen slaap vannacht.

En heeft een uwer een ervaren
en hooggeleerd en vruchtbaar brein:
hij zegge mij of 't waar kan zijn
dat haar de wormen zullen sparen.

1908
"""
Toen hij bespeurde hoe de nevel van de tijd
in d'ogen van zijn vrouw de vonken uit kwam doven,
haar wangen had verweerd, haar voorhoofd had doorkloven
toen wendde hij zich af en vrat zich op van spijt.
 
Hij vloekte en ging te keer en trok zich bij de baard
en mat haar met de blik, maar kon niet meer begeren,
hij zag de grootse zonde in duivelsplicht verkeren
en hoe zij tot hem opkeek als een stervend paard.
 
Maar sterven deed zij niet, al zoog zijn helse mond
het merg uit haar gebeente, dat haar toch bleef dragen.
Zij dorst niet spreken meer, niet vragen of niet klagen,
en rilde waar zij stond, maar leefde en bleef gezond.
 
Hij dacht: ik sla haar dood en steek het huis in brand.
Ik moet de schimmel van mijn stramme voeten wassen
en rennen door het vuur en door het water plassen
tot bij een ander lief in enig ander land.
 
Maar doodslaan deed hij niet, want tussen droom en daad
staan wetten in de weg en praktische bezwaren,
en ook weemoedigheid, die niemand kan verklaren,
en die des avonds komt, wanneer men slapen gaat.
 
Zo gingen jaren heen. De kindren werden groot
en zagen dat de man die zij hun vader heetten,
bewegingsloos en zwijgend bij het vuur gezeten,
een godvergeten en vervaarlijke aanblik bood.
"""Dat in gemelijke grillen
ik mijn dagen kon verspillen,
dat ik haar voorbijgegaan
of een steen daar had gestaan,

dat ik heel mijn zondig leven
heb gekregen zonder geven,
dat mij alles heeft gesmaakt,
dat ik niets heb uitgebraakt,

dat ik niet kan herbeginnen
haar te dienen, haar te minnen
dat zij heen is en voorbij,
bitter, bitter grieft het mij.

Maar de jaren zijn verstreken
en de kansen zijn verkeken.
Moest die kist weer opengaan
geen stuk vlees zat er nog aan.

Priesters zalven en beloven,
maar ik kan het niet geloven.
Neen, er is geen wenden aan:
als wij dood zijn is 't gedaan.

Ja, gedaan. Wat helpt mijn klagen?
Wat mijn roepen, wat mijn vragen?
Wat ik bulder, wat ik zweer?
De echo zendt mij alles weer.

Gij die later wordt geboren,
wil naar wijze woorden horen:
pak die beide handen beet,
dien het wijf dat moeder heet. 

Antwerpen, 1934.

---------------------
uit: Verzen (1969)
!! Opinie: Autonomie klinkt mooi, maar hoe kun je echt zeker weten dat je wil sterven?


Wanneer iemand zegt te willen sterven is dat een existentiële keuze, waarin altijd enige twijfel aanwezig is. Daarom is het nooit zo zwart-wit als de Coöperatie Laatste Wil stelt, betoogt Paul van Tongeren.

Paul van Tongeren
De Volkskrant, 29 april 2021, 16:12

De Coöperatie Laatste Wil (CLW) stelt dat mensen zelf de regie over het eigen leven hebben en dus ook zelf moeten kunnen beslissen over het eigen levenseinde. De middelen die nodig zijn om het leven ‘op een humane manier’ te beëindigen zouden daartoe legaal beschikbaar moeten zijn. Onlangs begon zij een rechtszaak tegen de staat die dat nu nog verhindert en die hulp bij zelfdoding verbiedt.


Er is al veel gezegd over die eis en de juridische mogelijkheden en moeilijkheden daarvan. Ik ga in deze bijdrage enkel in op het belangrijkste en meest principiële argument dat door CLW wordt aangevoerd: het principe van autonomie of zelfbeschikking. Mensen mogen zelf de regie voeren over hun eigen leven en dat impliceert volgens CLW dat ze ook zelf moeten kunnen bepalen of en hoe ze dood willen. Daartoe volstaat de euthanasiewet niet volgens CLW: die stelt immers voorwaarden en gaat daarmee in tegen het recht op zelfbeschikking.

Ik stel vragen bij die stervenswens en bij het principe van autonomie dat die wens ­onaantastbaar lijkt te maken. Niet omdat ik zou willen ontkennen dat die wens vóórkomt. Integendeel! Iedereen kent, uit eigen ervaring of uit verhalen, mensen die niet meer willen leven, die dood willen, voor wie verder leven alleen maar lijden is. En wie met die wens wordt geconfronteerd, ervaart het appèl dat daarvan uitgaat. Je kunt er niet onverschillig aan voorbijgaan. Je moet iets doen, maar wat?

Wat is eigenlijk ‘willen’?
Hoezeer de confrontatie met mensen die zeggen dood te willen ook vraagt om te helpen, te handelen, iets te doen – ze moet ons ook aanzetten om een stap terug te doen, zelf vragen te stellen en na te denken. Wat gebeurt er eigenlijk als iemand zegt dat hij dood wil? Wat is eigenlijk ‘willen’? Wat betekent het om niet alleen binnen je leven iets al of niet te willen, maar dat leven zelf te willen of niet te willen, te willen dat het eindigt?

En wat betekent het dat die wil ook wet zou moeten zijn, autonoom zou moeten zijn; dat ik het recht zou hebben niet alleen zelf mijn wil te bepalen, zelf te bepalen wat ik wil, maar – binnen grenzen – ook te doen of te krijgen wat ik wil? Het gaat me nu niet om die grenzen (uiteraard wordt de verwerkelijking van wat ik wil begrensd door wat mogelijk is en door wat anderen willen), maar om dat willen zelf. Dat lijkt misschien vanzelfsprekend, maar filosofie is nu eenmaal de discipline die problematiseert wat doorgaans als vanzelfsprekend geldt.

Wie gaat nadenken zal ontdekken dat de termen waarin, en de begrippen waarmee wij over onszelf denken er niet altijd al zijn geweest, maar ooit een keer zijn ontstaan. Zo hebben mensen bijvoorbeeld niet altijd al over zichzelf gesproken als over wezens met een autonome wil. Die vrije wil, die niet alleen het vermogen heeft om zelf te kiezen maar ook een recht op zo’n eigen keuze claimt, is pas relatief laat ‘uitgevonden’. In de Griekse filosofie is de mens vooral een denkend en een verlangend wezen, en ‘verlangen’ is iets anders dan ‘willen’.


Eisen van de rede
De vermogens die de Grieken onderscheidden – denken en verlangen – zijn namelijk helemaal niet autonoom. Het denken wordt geregeerd door de wetten van de redelijkheid: als je wilt denken, moet je aan de eisen van de rede gehoorzamen. En het verlangen wordt beheerst door de wetten van de natuur. ‘Van nature’ verlangen we naar eten, drinken en seks, maar ook naar slaap, erkenning, macht, of liefde, allemaal zaken waartoe we nu eenmaal worden aangetrokken.

Maar waar komt dan die idee van de autonome vrije wil vandaan? Het waren de vroeg-christelijke denkers die daarmee op de proppen kwamen. Die Griekse psychologie leverde namelijk een probleem op voor hen: die maakte het onmogelijk om te begrijpen hoe een mens kon ‘zondigen’, dat wil zeggen: willens en wetens doen wat niet goed is, in opstand komen tegen een goede orde. Als de mens wordt geleid door zijn verlangende natuur en door de wetten van de rede, kan hij zich weliswaar vergissen, maar niet tegen beter weten in handelen.

De monotheïstische religies kenden echter de ervaring van dat kwaad, ‘de opstand tegen God’. En om die te begrijpen was een herziening of uitbreiding van de Griekse psychologie nodig. In de Confessiones (‘Belijdenissen’) van Augustinus vraagt de kerkvader zich vertwijfeld af hoe het toch mogelijk is dat hij iets slechts doet zonder dat dat enig doel dient of ergens goed voor is. In die zoektocht ontdekt hij vervolgens de wil als het vermogen dat niet (zoals het denken en het verlangen) door iets wordt geleid, maar dat zichzelf leidt en bepaalt. De vrije wil die hier ‘ontdekt’ wordt, valt dus samen met de claim van autonomie. Willen is niets anders dan zelfbepaling. Het mag vreemd klinken in onze seculiere wereld, maar ons huidige begrip van de autonome vrije wil gaat terug op de religieuze ervaring van de zonde.

Belangrijk verschil
Er is nog een belangrijk verschil tussen de ‘wil’ als autonome zelfbepaling en het ‘verlangen’ dat ons doet streven naar de dingen die ons aantrekken. ‘Verlangen’ is altijd op iets gericht; het wordt door iets bewogen: we beminnen het beminnelijke, we hebben zin in het aantrekkelijke, worden afgestoten door het afstotelijke. Maar de ‘wil’ bepaalt of we aan dat verlangen toegeven of niet. Die ‘wil in strikte zin’ heeft zelf geen inhoud of object, maar is de kracht waarmee we autonoom bepalen of we wel of niet het verlangen volgen.

Maar, en nu komt het, in het hedendaagse taalgebruik en ook in de discussie zoals die nu weer door CLW wordt gevoerd, lijken die twee te gaan samenvallen. Dat is principieel problematisch, omdat daardoor de claim van autonomie wordt gehecht aan het verlangen, dat feitelijk heteronoom is, want aan externe wetmatigheden gebonden. Maar het recht om zelf te bepalen of ik wel of niet mijn verlangen volg, impliceert nog geen recht op datgene wat ik verlang!

Wat levert deze filosofische genealogie van de wil ons op voor de onderhavige kwestie? Een waarschuwing is op zijn plaats: filosofie leidt zelden tot de oplossing van problemen; ze zal eerder zogenaamde oplossingen willen problematiseren. Als ze helpt, helpt ze ons te leren leven met problemen.

Extra probleem
De herkomstgeschiedenis van onze wil leidt in ieder geval tot een extra probleem in verband met de stervenswil. Doorgaans werken ‘wil’ en ‘verlangen’ samen, en willen we datgene wat we verlangen of negeren we het ene verlangen, omdat we de voorkeur geven aan iets wat we nog sterker verlangen. Maar er zijn situaties waarin de ‘wil’ zich niet op dat verlangen kan verlaten. Bijvoorbeeld als we moeten kiezen tussen onvergelijkbare zaken: zoals tussen een langer leven met pijn en ongemak of een korter leven zonder. Of wanneer we niet weten wat de ene of de andere keuze ons zal brengen: wel of niet voor een partner kiezen, wel of geen kinderen.

Maar vooral: als we niet zozeer kiezen tussen verlangens die we nu eenmaal hebben, maar kiezen wie we willen zijn. We noemen dat ‘existentiële-keuzesituaties’. Diezelfde Augustinus die in zijn Confessiones de vrije wil ontdekte, maakt verderop in hetzelfde boek duidelijk dat in zulke situaties, waarin de wil zich niet kan laten leiden door het verlangen, maar het helemaal zelf alleen moet doen, onvermijdelijk de twijfel toeslaat.

Als de autonome wil het helemaal alleen zelf voor het zeggen heeft, blijkt hij innerlijk verdeeld te zijn. Welnu: de keuze tussen leven en dood is misschien wel de meest existentiële keuze die er bestaat, zodat het eigenlijk niet anders kan dan dat daar ook twijfel in aanwezig is, meer dan de parmantige taal van wilsbeschikking en autonomie doet vermoeden. Het is nooit zo zwart-wit als CLW doet voorkomen.

Misleidend
Met betrekking tot de maatschappelijke discussie over hulp bij zelfdoding en de nieuwe rechtszaak, moeten we concluderen dat het waarschijnlijk misleidend zou zijn om deze af te schilderen als een debat tussen voor- en tegenstanders van autonomie. Het probleem zit in die autonomie zelf: als we echt zelf de regie willen hebben, zoals CLW zegt, als we de regisseur van onszelf willen zijn, hebben we geen enkel houvast. En dat is een probleem dat niet kan worden ‘opgelost’, maar dat erkend moet worden.

Maar wat betekent dit voor die mensen die zeggen dat ze dood willen en die daarmee een beroep doen op ons begrip en onze hulp? Ten eerste moeten we waarschijnlijk zeggen dat het niet de dood is die wordt verlangd, maar dat het leven, dit leven, al zijn aantrekkelijkheid verloren heeft. Dat zou ons er ten minste toe moeten aansporen meer te doen om waar mogelijk de condities van dat leven te verbeteren. Zorg voor degene die wil sterven valt niet samen met zorgen dat hij sterft.

Maar ten tweede en vooral moeten we erkennen dat de keuze tussen dood en leven zo’n (existentieel) probleem is dat je niet kunt oplossen. Daarom moeten we voorkomen dat we van mensen die in dat probleem terechtgekomen zijn weglopen, hetzij door te denken dat we hun probleem hebben opgelost, hetzij omdat we het toch niet kunnen oplossen.

Paul van Tongeren is em. hoogleraar filosofie aan de Radboud Universiteit en Denker des Vaderlands.

  
"""erug van vakantie vlooi ik door de post. 
Er is een ansichtkaart van mijn moeder. 
Sinds de dood van mijn vader 

gaat ze elke zomer naar het buitenland. 
De Jura, dit jaar. Dat ligt tegen 
de Spaanse grens, 

had ze gezegd. Ik beaamde dat. 
Ik spreek haar niet meer 
tegen.

Ik bekijk de kaart. Op de voorkant 
een dorp in de bergen. 
Op de achterkant 

mijn adres en een plakkertje waarop ze 
een paar woorden heeft getikt
al voor ze vertrok.

Ik zie haar aan de keukentafel zitten, 
achter de oude typemachine. 
Een beetje bevreesd:

het buitenland blijft het buitenland.

Alles O.K. hier. Ma.
<<ximg "/Dagboek/20070801 Dagboek.png">>
<style> 
	body {font-family: 'Ubuntu'; line-height: 130%} 
	ul li { line-height: 1.2em; } 
	</style>23.10 uur. Het is even moeilijk om de draad weer op te pakken omdat de ervaringen rond de geboorte van Cathrien zo overstelpend zijn dat er teveel is om op te schrijven. Nooit heeft iets me emotioneel zo diep geraakt als het ter wereld komen van Cathrien. Het feit dat jij dat levende wezen uit jezelf voortbracht, dat het daar opeens tussen je benen op bed lag, eerst met de navelstreng om haar hals, maar later, losgemaakt, met trillende bewegingen van armen en benen en zachtjes kermend toen de ademhaling op gang kwam. De eerste herkenning en de onmiddellijke intuïtie: "Het is goed", en vervolgens de constatering: "Het is een meisje, het is Cathrien". Het is een moment van schepping waarop de wereld, tenminste je eigen wereld, even stil staat. Tegelijkertijd word je ouder en wijzer. En het alles doordringende gevoel dat je samen het kind verwekt hebt en nu tot leven ziet komen. Dit alles en nog veel meer gaat in enkele seconden door je heen. 
Berend en Sietske zijn hopelijk in Philadelphia aangekomen. Laatste bericht uit de trein van het vliegveld in New York naar het station. 

Gisteravond gekozen tot voorzitter van het Ekklesia-bestuur. Tegenkandidaat trok zich terug waardoor er geen keus meer was. Was toch een onverwachte wending. Mijn voorspelling was dat hij de meeste steun zou krijgen en dat ik uit het bestuur zou stappen. Er is erg veel te doen. Het is de komende twee jaar erop of eronder. 

Morgen Mercia van school halen. Verder tijd om review af te maken en lijstje te maken van dingen om te doen in de Ekklesia.
Het is nu 6:24. Tijd om aan te kleden. Vandaag geen afspraken tot 4 uur. Alle tijd dus om verder te werken aan het VSE-artikel en aan het bestuderen van de artikelen over nieuwe assessment-vormen in de VS.

Gisteravond de fiets in de fietsenstalling aangetroffen zonder voorwiel. Vanochtend naar de fietsenmaker gebracht. Kost je toch weer honderd gulden, een geeltje. Stond op het station te wachten op de trein en bedacht dat ik de sleutels in het slot van de fiets had laten zitten. Snel naar de fietsenmaker gelopen, sleutels eruit en weer terug. Merkwaardig zoveel als je in vijf minuten kunt doen. Wat dat betreft is denken en schrijven en lezen toch een onnoemelijk trage bezigheid.
"""Montepulciano, vakantie! Heerlijk om hier te zijn, weg van de overweldigende drukte. Het is hier rustig, het landschap, de stadjes. We hebben een prima hotelkamer, “a room with a view”. Zijn hier maandagavond naar een snelle en inspannende reis aangekomen. Zondag naar Freiburg, daar overnacht bij Ulli Kessler en Paul Grossman. Maandag door naar hier, 120 km ten zuiden van Florence, verder dan we dachten. Dinsdag M. verkend en ‘s middags geroeid op het Lago di Chiusi. Vanochtend een flinke wandeltocht en vanmiddag naar Pienza. De kinderen logeren bij Anne’s ouders op de boerderij. Uit de eerste telefoongesprekken maken we op dat het goed gaat. Cathrien is niet bij opa weg te slaan. Hopelijk blijft het zo. Praten en schrijven, twee manieren om de opkomende “vakantieziekte” tegen te gaan. Vanavond uitgebreid gehad over opvoeden. Mijn opvatting: geen binding, opvoeden tot zelfstandig oordelen. Weet niet of Anne ‘t ook zo ziet. Zij hecht ook aan vasthouden aan normen en waarden. Morgen verder.
"""
OK, nu schrijven we in Onenote online. Kun je hier ook een plaatje plakken? 

<<ximg "Pensionado/Geheugen/Foto's/20160511 Mercia.png">>

Ja hoor, dat kan wel degelijk! Nou, dit plaatje is wel bijzonder: echo, gisteren gemaakt van het kleine wurm dat groeit in de baarmoeder van Cathrien. Cathrien schreef erbij: "De echo was goed!!! 1 klein wurmpje van 2.2cm in de baarmoeder met een kloppend hartje! We zijn zo blij!!!!". 
 
Nou, één reden om ontzettend blij te zijn.  
 
Proberen om in controle te blijven, met een glimlach op het gezicht. 
Vanmiddag weer op Mercia gepast. Ze was weer in een opperbeste stemming. Tegen slapenstijd even in de kinderwagen naar buiten voor een frisse neus. Teruggekomen weer 150 cc gedronken en de luier volgepoept. Ze was enorm aan het kletsen en kraaien, heel  erg leuk. 

<<ximg "Pensionado/Geheugen/Foto's/IMG_20170412_155152.jpg">>
"""Vanochtend begon Sara om 4 uur te piepen. Toch doorgeslapen tot 6 uur. Sara slaapt ‘s avonds en ‘s nachts redelijk vast. Overdag wisselend. Vandaag precies 9 weken!
Anne liep vanochtend hard, ik dus Sara de fles gegeven en ontbijt klaargemaakt. Om ½ 10 met Cathrien naar Ootmarsum. Eerst boodschappen gedaan. Vervolgens naar Oldenzaal en Gerry en Siep om 10 voor ½ 12 van de trein te halen. Cathrien vond het station en de trein erg indrukwekkend. Ze was blij Gerry terug te zien. Gezamenlijk naar ‘t huisje en koffie gedronken. Na Cathrien in bed gestopt te hebben zijn Gerry en ik op de fiets gesprongen voor een flinke tocht: Ootmarsum, Vasse, Galgenberg (2 keer onder hek door om in Duitsland te kunnen komen), via Hesingen weer terug. Mooie tocht. Na de thee nog een fikse wandeling naar de bronnen. Gerry heeft meteen flink wat buitenlucht opgedaan. Cathrien was enorm vrolijk. Ze praat soms in een soort geheimtaal die niemand verstaat, veel g-klanken. Een heel spektakel in het badje op tafel. Vanavond gezellig gepraat bij het haardvuur. Nu naar bed.
Half een op het vliegveld in Rome. Zo dadelijk vertrekt het vliegtuig naar Palermo. Nu een soort grote moeheid, maar ook het heilige voornemen om de aandacht sterk op Anne-Carien te richten en alles een beetje rustig aan te pakken. Vanavond gezellig wandelen in Palermo en hopelijk lekker eten.
Dat was een goede dag en avond. De Peruviaanse Veronica was erg charming. Vrijdag is ze weer terug in Lima. Dan brengt ze eerst haar kinderen naar school en daarna gaat ze naar het strand. En Felice Levine vond ik werkelijk een interessante Joodse vrouw. Eva Baker was lastiger te peilen. Fernand Gervais uit Quebec was erg aardig, evenals Liesel uit Zuid-Afrika. Gesprekken gingen ook over identiteit van WERA wat goed was.
<<ximg width:% "/Dagboek/20161214_171955.jpg">>

<<ximg width:% "/Dagboek/20161214 Rouwkaart Janny Broers.jpg">>

<<ximg width:% "/Dagboek/20161214 Opgetild door cultuur met een lach.jpeg">>

<<ximg width:% "/DD/Vriend en Familie/20161214 In Memoriam Janny Klein-Beishuizen.jpg">>
"""
De schouder in drie stukken.

<<ximg "Pensionado/Geheugen/Foto's/20160615 Schouder in drie stukken.jpg">>
!!! Twaalfde vakantiedag

Naar Pergola, de stad van Pergolesi. We beginnen met een kop koffie op een gezellig terras. 

|<<ximg width:500px "/Foto's/2021 Italië/0915 Koffie op terras in Pergola.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0915 Rondje Pergola.jpg">>|
|borderless|k

Daarna starten we met de wandeling. Volgens Locusmap 3 uur en 45 minuten, 14 km. Pittig! Zoals de kaart laat zien beginnen we met een stevige klim van 250 m naar 450 m. Daarna een afdaling naar de rivier en dan weer omhoog naar 300 m en terug naar 250 m. 



We beginnen met het stuk omhoog. Prachtige uitzichten. Daarna naar beneden. Tijd voor de lunch.

|<<ximg width:400px "/Foto's/2021 Italië/0915 Anne aan de lunch.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0915 Jos aan de lunch.jpg">>|
|borderless|k

Bij de rivier aangekomen blijkt er geen brug te zijn! We moeten dus zelf een weg zoeken langs de akkers. Dat blijkt wonderwel te lukken. We pakken de route weer op en gaan omhoog. Dat is wel even doorbijten, zie de foto van Anne.

|<<ximg width:400px "/Foto's/2021 Italië/0915 Anne houdt vol.jpg">>|<<ximg width:600px "/Foto's/2021 Italië/0915 Pergola in zicht.jpg">>|
|borderless|k

Gelukkig komt Pergola weer in zicht. Om 15 uur zijn we weer bij de auto. Mooie tocht!

23.05, nog warm. Dit wordt ongetwijfeld een van de warmste zomers die we hebben meegemaakt. Saar en Cathrien liggen boven met hemden, pyjama's, slaapzakken en dekens te zweten in bed. Cathrien slaapt gewoon door als je haar laat plassen. Maakt smakgeluiden en zucht eens diep. Sara heeft op de boerderij geleerd om te plassen en poepen op het potje! In één keer raak. Met 26 maanden toch heel vlot. Nu de rest nog. Heerlijk om weer bij elkaar te zijn. En: logeerkamer, trap en gang beneden mooi wit! Nu nog even Gollwitzer.
6.30 uur. Vandaag viert Moeder haar 80ste verjaardag. Nog even een toespraakje bedenken.

Gisteravond op t.v. een film over een plaatopname van de West Side Story. Bernstein zelf als dirigent (zondag op 72-jarige leeftijd overleden), Kiri te Kanawa, Jose Carreras. Wat opviel: Bernstein's ontspannen houding. Hij lijkt geheel op de vervulling van de taak gericht, niet gehinderd door persoonlijke beperkingen. Ruimte alom, waarin zijn emoties direct zichtbaar en begrijpelijk zijn. Heel inspirerend. 
Vijf uur in de ochtend, naar Franca op de grond, hield dat ze nog in slaap gaat vallen voor het dag wordt. Gisteren een gezellige dag met de meiden hier in Egmond. Helaas regen zodat we binnen moesten blijven. Franca was ook ziekjes waardoor we niet zoveel konden ondernemen. Naar de maaltijd nog welk even een avondwandeling. 

|<<ximg width:% "/Dagboek/20210817 Hangmiddag in Egmond.jpg">>|<<ximg width:% "/Dagboek/20210817 Put weer leeg.jpg">>|<<ximg width:% "/Dagboek/20210817 Avondwandeling.jpg">>|
Wat wordt het bijzondere van deze dag? (Het is nu 06:56) De vorm: vier uren geconcentreerd op niveau functioneren. Of de inhoud: afronding van VSE-artikel in ruwe vorm. Die twee typeringen zijn enigszins strijdig. Ben geneigd om me op dit momen de vorm te concentreren. Misschien moet dat ook even. Dus: streven naar vier uren van concentratie met goed begin en goed einde. Vanavond weer wat over de kinderen schrijven.
"""Vanochtend opnieuw Gerry en Siep opgehaald in Oldenzaal. Met z’n drieeën gaat het allemaal nog iets meer ontspannen dan met z’n tweeën. Vanmiddag met Sara en Cathrien thuisgebleven terwijl Anne en Gerry gefietst hebben. Daarna zijn Sara en ik naar O. gegaan voor bier en sigaren en hebben Gerry, Cathrien en Anne de speeltuin hier vlakbij bezocht. Vanavond vader en moeder op de koffie en daarna nog even doorgespraat met Gerry. Verhalen over Ab en Margreet Visser.
Een rustig dagje, weinig opwindends. Vader en moeder vermaken zich goed in de Wiemsel. Moeder neemt steeds het vlees van de avond tevoren mee, dat ze niet op kon krijgen. Bij Siep vindt het gretig aftrek. Verder wat oude verhalen uitgewisseld. Ze worden traag. Moeder gooit tijdens een verhaal namen en plaatsen door elkaar. Ze is doof maar merkt toch meer op dan vader.
"""Weekend heeft toch wel weer zijn sporen nagelaten, helaas. Bij het vertrek uit Diepenveen begon Anne’s vader haar aan te sporen niet te veel hooi op de vork te nemen, “een bladzij uit de agenda te scheuren”, etc. Prompt ging Anne zondagavond om 8 uur naar bed, en zegde vervolgens deze week de gymclub en de naaicursus af. Ik was daarover teleurgesteld. Niet omdat ze tijd vrijmaakt maar omdat ze dat onmiddellijk en radicaal maakt nadat haar vader er een opmerking over had gemaakt. Mijn reactie: je luistert wel naar je vader en niet naar mij. Anne: het zat er al lang aan te komen en nu is een opmerking genoeg om maatregelen te nemen. Ik blijf er teleurgesteld over. Ze slikt notabene pillen om de bloeddruk laag te houden en luistert in dat opzicht niet eens naar de signalen die uit haar eigen lichaam komen. Mijn gevoel van verongelijktheid komt uiteindelijk voort uit jaloezie, dat realiseer ik me nu wel. Ik moet opboksen tegen de invloed van Anne’s ouders, waarvan ik steeds het gevoel heb dat die sterker is dan mijn invloed. Nu bedenk ik dat Anne zelf ook meer geneigd naar haar ouders te luisteren dan naar zichzelf. Dat is, naast mijn al of niet terechte jaloezie (in ieder geval geen mooie of tot goede daden inspirerende emotie), ook een bron van problemen: wat ik zie als Anne’s aanhoudende onzelfstandigheid, stuurloosheid. Al die cursussen die ze heeft gelopen, soms met grote inspanningen zoals Manuele Therapie, en waar ze uiteindelijk niets mee doet. Misschien moet ik haar aandacht daarvoor vragen, in plaats van voor mijn gevoelens van jaloezie, vermomd in heilige verontwaardiging.
"""
Woensdag 2 januari 1985, 21:15 uur  
 
Zojuist teruggekomen uit Ermelo, waar we ter gelegenheid van het nieuwe jaar twee dagen gelogeerd hebben. Vader en moeder maken het gelukkig allebei goed en zijn opgewekt. Vader liet vol trots het dikke boek De Schaapherder van J.F. Oltmans zien, dat hij opnieuw had ingebonden. Hij heeft na de zomervakantie zijn boekbinders spullen van zolder gehaald en heeft een nog uit Soestdijk stammende liefhebberij weer opgevat. De buurman was al komen aandragen met een stukgelezen Bijbel die vader nu weer in elkaar zet.  
 
Het telefoongesprek, waarin ik meld dat we veilig zijn aangekomen, verloopt gewoonlijk volgens een vast programma: Ik: "Zo, we zijn er weer". Vader: "Zozo, dat is vlot gegaan. Nou we hebben reuze genoten van jullie bezoek". Ik: "Ja, wij vonden het ook gezellig". Vader: "Sterkte maar meer weer bij jullie werk. De hartelijke groeten ook, aan Anne, mede namens moeder". Ik: "U ook de hartelijke groeten, ook aan moeder, ook van Anne Carien. Tot wederhoren!"  
 
Nieuwjaar: een moment van goede voornemens. Naast de gewone, zoals meer lezen, minder tijd verprutsen met onnutte dingen zoals tv kijken, meer brieven schrijven en contacten met de vrienden onderhouden, dit jaar een bijzonder voornemen: een dagboek bijhouden. In de eerste plaats omdat we dit jaar hopen op drie dingen: een aangename zwangerschap voor Anne gevolgd door een bevalling zonder complicaties en de geboorte van een zoon of dochter. Vervolgens: het diploma Manuele Therapie voor Anne Carien en een proefschrift voor mij. Omdat dit allemaal bijzondere gebeurtenissen zijn willen we allebei onze ervaringen en emoties proberen op schrift te stellen. In de tweede plaats hoop ik zelf dat het schrijven in dit dagboek de gelegenheid biedt om de gedachten een beetje op orde te krijgen. Hiermee is het verslag van de eerste twee bijzonder rustige dagen van 1985 voltooid. Ik neem aan dat jij in ieder geval beschrijft dat je vanochtend weer een succesvol bezoek aan de In-Wear winkel hebt gebracht (vast onderdeel van het bezoek aan vader en moeder) en dat je erin geslaagd bent een zuster voor kraamhulp te boeken. Misschien beschrijf je ook nog iets uit het boekje "Wenken voor de aanstaande moeder" dat moeder je te lezen gaf (geen sport! Niet in bad! Alleen een rustige wandeling 's middags!) . Helaas moet ik een jaar wachten voordat ik jouw beschrijving van deze dagen kan lezen. 
Stevige schrik na een nieuw geval van TGA. Zie eerdere gevallen op [[woensdag 2 maart 2016]] en [[dinsdag 22 juli 2014]]. Gisteravond geroeid omdat er deze maand weinig dagen zijn waarop geroeid kan worden. Ging goed, maar daarna weer het verlies van tijdsbesef. Bleef vrij lang aanhouden, belangrijk deel van de slapeloze nacht. Nu lijkt alles weer op orde. 
Vanochtend weer een paniekervaring met geheugenverlies. Hoogstwaarschijnlijk een gevalletje Transient Global Amnesia (TGA). Symptomen: retrograde en anterograde amnesie, kortdurend, geen nevenverschijnselen. Zie ook https://issuu.com/uzleuven/docs/uz-magazine_december_2013/14. Belangrijkste boodschap: het gaat over en het is ongevaarlijk. Niet gerelateerd aan dementie of Alzheimer. Kan ontstaan na flinke inspanning of  "een intense ammoniakgeur, een hevige emotie naar aanleiding van een familiale gebeurtenis, een plotse temperatuurverandering,
seksuele activiteit …”. Toevallig had ik vanochtend geroeid, flink ingespannen. Was destijds in Pietrasanta ook het geval. Vooral gevoel van tijd was verstoord, verder eigenlijk niet veel zaken. We weten nu weer wat het is. Kan zich herhalen, hoewel een kleine kans (15%). 

Zie [[dinsdag 22 juli 2014]]
Citaat uit een onvergetelijk boek: De stemmen van de avond (Le voce della notta) van Natalia Ginzburg. Bevriend stel, Elsa en Tomassino. Zij is verliefd op hem, hij niet verliefd op haar, voelt wel een soort tederheid. Ze ontmoeten elkaar regelmatige in een nabijgelegen stadje, waar hij een kamer heeft gehuurd. (Lijkt op de film “Brief Encounters” die we laatst bij Huub zagen). Op een zeker moment besluit hij, naar aanleiding van een incident, om haar ten huwelijk te vragen. Grote opwinding, trouwdatum, uitzet, etc. Dan ontmoeten ze elkaar.
“Vroeger,” zei hij, “toen we in deze kamer in de via Gorizia waren, wilde ik je altijd alles vertellen wat ik dacht. Het was heerlijk, ik voelde me heel vrij en kon volop ademhalen. Maar in deze maanden is die wil volkomen verdwenen.”
“En denk je,” zei ik, “dat die nooit meer zal terugkomen?”
“O nee,” zei hij. “Als zo’n gevoel eenmaal uitgeblust is, hoe kan het dan nog terugkomen?”
“Vroeger,” zei hij, “kon ik kiezen of ik een middag bij je wilde zijn of niet. Maar nu, in deze maanden, had ik het gevoel dat ik niet meer kon kiezen, dat ik je wel thuis móest gaan opzoeken omdat ik voor eens en voor altijd mijn keus had bepaald. Ik moest doen wat iedereen van me verwachtte, net als de anderen. Toen ben ik mijn gedachten gaan wegstoppen. Ik kon mezelf niet  meer in de ogen kijken. Om het geroep van  mijn innerlijk niet te horen heb ik mezelf de rug toegekeerd, ben ik ervan weggelopen.”
"""Een enigszins katterig dagje na 3 uurtjes slaap. Vanochtend het manuscript voor het liber amicorum bij Swets ingeleverd. Plannen gemaakt voor de rest van de week. Wat een rust nu het liber af is! Sinds 1 juni is er reusachtig veel gebeurd. Drie artikelen schrijven en veel geleuter over de opvolging van Sipke zijn de belangrijkste activiteiten op de VU geweest. Eens zien of de zaak nu weer wat meer in evenwicht kan komen. 
Vandaag zijn Joke van Eekeres en Tjeerd jarig. Joke klonk aan de telefoon opgewekt. 't Gaat steeds beter. 

[Handschrift Anne-Carien]

<u>Linda</u>
* bestelt 100 broodjes
&#8199;&#8199;+ boter ham/kaas
* koffiekopjes lenen
* servetten
* ~~koffiezetapp boerderij halen~~
* koekjes kopen
* lepeltjes
* fotograaf regelen
* receptie boek kopen
* tafelschikking

Hoe zouden Tjeerd en Kathleen het maken. Kathleen al zwanger? Vandaag heeft Sara haar eerste prik gehad. Anne vertelde dat ze erg verontwaardigd reageerde. Toen ze thuiskwam was ze rustig. Tegen zes uur toch wel huilen. Uiteindelijk om half 8 de fles gehad en in bed. Ze krijgt nu 5 x 150 cc en een fruithapje. 5 kg zwaar en 60 cm. Vandaag al weer 12 weken oud. Cathrien begeleidt al haar handelingen met onafgebroken commentaar. Allerlei nieuwe vormen: "Dit is ik ... mijn kopje". Veel zingen. Ze werd vanmiddag door Jaapje Thijs met open armen ontvangen. Anne-Carien wil met een aantal vrienden afspraken maken: Dirk en Elzemien, Wim en Annet, Bart en Marjon, Ulli en Paul (voordat ze naar Freiburg vertrekken). Daar moet nu echt meer tijd voor komen. 
"""Woordjes voor Cathrien (OMA, SARA, CATHRIEN, GERRY). Ze vraagt steeds of ik ze opschrijf maar snapt er toch nog niet veel van. Ze snapt gewoon nog niet wat een geschreven woord is.

Een strengere variant van de goede voornemens van 31 december.

Geen gejeremieer over drukte. De drukte wordt er niet minder van.
Een absolute stop op nieuwe verplichtingen tot aan de zomer. Proberen af te komen van enkele zaken die afgestoten kunnen worden. Nagaan wat zich daarvoor leent.
Hoop. Vanochtend enthousiast aan het werk gegaan. Krijg een stortvloed van aantijgingen van Edith Das over me heen. Heel moeilijk te verteren maar toch ook niet zo belangrijk dat het nageslacht erop zit te wachten. Toch, toch, toch, blijven hopen. Niemand wordt boven zijn krachten beproefd.
Dan meer isoleren. Lunch afschaffen, vaker niet storen op de deur. Vaker in de bibliotheek gaan zitten.
De avondindeling loopt tot nu toe goed. Zo proberen te houden. Ver weg van U is het geen leven. U ontrouw zijn is niemand zijn.
De crematie en de afscheidsbijeenkomst van Janny. Afgelopen vrijdag 16 december hebben we Janny gecremeerd. Alleen de familie Klein, de neven en nichten en de broers en zussen waren aanwezig. Mooie teksten van Jan, mooie gedichten en persoonlijke herinneringen. Zo'n crematie heeft altijd iets steriels, komt ook door de zakelijke en neutrale ruimte. De kist werd begeleid door Ton, Jan Willem en wij als drie broers. 

Maandagmiddag 19 december was de afscheidsbijeenkomst in de Catharinakapel in Harderwijk, de plek waar Janny zelf zoveel voetstappen heeft staan: de filmkring, de culturele bijeenkomsten. Vanuit een Beizen waren er aardig wat neven en nichten, onder wie Meindert de Grooth, Bertie Bolt, Henk en Janny Nijmeijer. Van de Ten Broekes helaas niemand, misschien waren er geen adressen. 

Dinsdagochtend nog een prachtige documentaire gezien van Cherry Duyns over de uitvoering van Mattheus in de Nieuwe Kerk onder leiding van Reinbert de Leeuw. Hartverscheurend mooi, de muziek, de solisten, de gesprekken. 
Olimarck gekomen! Geen tijd voor beuzelarijen. Vanochtend heel bevredigend met A.C. over haar familie gepraat. Ik heb ma toch beter leren kennen afgelopen 14 dagen. Opgewekt altijd in voor een grapje, nuchter, ongecompliceerd, vrij open, tegelijk krampachtig vasthoudend, in zeker opzicht "brutaal". Pa is in feite veel stugger, uit zich moeilijk, altijd dankbaar als iemand daarbij de helpende hand biedt. 't Verbaast me dat ze zich zo weinig uitlaten over Vincent. Nuchterheid, weinig tijd gehad voor terugblikken en piekeren. Sara was vanavond zeer goedlachs. Zoals John Schulte suggereerde: ze houdt van gezelligheid. Is rustig gaan slapen. Cathrien heen en terug gedragen naar speeltuintje in Corellistraat. "Huisje" sprak zeer tot haar verbeelding. Gerry heeft de mand van de poes meegenomen.
Weer even een paar uitgangspunten opfrissen:

1. Serieuze aandacht: blijf denken totdat je een serieus punt te pakken hebt waaraan je gemotiveerd kunt gaan werken.

2. Traag en met kleine stappen op gang komen.

3. De Heer is mij tot hulp en sterkte. Vertrouw er op en ontleen er je zelfvertrouwen aan. Wacht rustig tot de inspiratie komt.

4. Word er vrolijk van.

Ik verblijf al weer sinds 3 nachten in Balatonalmádi. Om even het weekend af te maken: 's zaterdagmiddags, nadat de auto het weer deed, naar de burchtheuvel gereden (Dirks idee: bij een lege accu zouden we in ieder geval de heuvel af kunnen rijden!), Hedy helaas niet gevonden, even snel het museum doorgesjeesd en naar een door Gyula aanbevolen restaurant gereden (auto startte normaal) en daar gegeten en via huis naar Gyula gereden (auto moest worden aangeduwd) waar we tot een uur of 12 gebleven zijn. Gyula nodigde ons uit voor een bijeenkomst met vrienden op zondagochtend ergens in de heuvels van Buda. Dirk en Joan besloten mee te gaan, ik ben in Gyula's flat gebleven om aan mijn speech te werken. 's Ochtends nog even de kleine Danny gezien, een parmantig kereltje dat veel op zijn moeder lijkt. 's Middags naar Balatonalmádi vertrokken waar Joan en Dirk hun intrek in hotel Tulipan namen (kamer met aan de overkant van de straat een disco, geopend tot 2 uur 's nachts). Ik vond na enige omzwervingen mijn kamer in een vrijstaand huis aan het meer. 't Is hier een mooie omgeving, grasvelden en bankjes tot aan het water, een kleine pier, hengelaars, een kleine bar met terras, kortom een uiterst gemoedelijke atmosfeer. 's Avonds een welkomstborrel waar ik de andere Unesco werkgroepleden trof. 

Maandagmorgen sprak eerst de grote Seymour Papert over zijn programmeertaal LOGO en de fantastische dingen die kinderen daarmee kunnen. Daarna kwam ik met een veel realistischer en voorzichtiger verhaal waarin ik en passant enige kritiek leverde op de hoera-stemming rond LOGO (het is namelijk nog niet overtuigend aangetoond dat lagere-schoolkinderen beter problemen leren oplossen met LOGO). Na mijn voordracht een betrekkelijk felle reactie van Papert. Volgens hem ging het om de fundamentele onderwijsfilosofische vraag of je kinderen op de lagere school zelf dingen moet laten ontdekken of daarentegen allerlei kennis en vaardigheden moet overdragen die tot het culturele erfgoed behoren.

Het is kwart over negen geweest, ikmoet stoppen. Morgen verder.
!!! Negentiende vakantiedag

Een rustige dag in Vicenza. 's Ochtends door Vicenza gelopen, koffie gedronken op het Piazza delle Bade met de twee zuilen, over een mooie brug gelopen en boodschappen gedaan. 

|<<ximg width:600px "/Foto's/2021 Italië/0922 Piazza delle Bade.jpg">>|<<ximg width:350px "/Foto's/2021 Italië/0922 Ponte San Michele.jpg">>|
|borderless|k

's Middags mooie wandeling door de Valetta Della Silenzia. De stafkaart app bewees weer zeer goede diensten omdat het pad op zeker moment ophield en we via een veldje en een wijngaard moesten afdalen naar het vervolg van het pad.
Dag van gisteren totaal anders verlopen door overlijden van Meindert. Ik was vanwege de sneeuw en de gladheid met de tram gegaan. Tijdens het overstappen op station Zuid belde Anne. Meindert is net als vader in zijn slaap aan een hartfalen overleden. Een paar diepe snurkgeluiden en dat was het. Mieke heeft meteen Tammo en eerste hulp gebeld. Petra zal met haar gezin in Thailand, Jeroen in de Eiffel. Jeroen en Marlies konden meteen terugkomen en arriveerden gistermiddag net voor ik rond 5 uur bij Mieke was. Meindert lag keurig opgebaard in het kleine kamertje met overhemd en trui aan. We hebben overlegd over de afscheidsbijeenkomst en zijn vervolgens kaarten gaan schrijven. Geleidelijk aan kwamen de verhalen los. Jeroen was daar gemakkelijker in dan Tammo die er wel veel moeite mee had om een en ander te verwerken. Jeroen en Marlies, dat is wel een goed stel. Mieke was ook ontroerd maar rustig. Toch wel fijn om er zo bij te kunnen zijn. 
""" Het is nu 9:01. Helaas, vanochtend een system crash waardoor ik een leuk stukje dagboektekst ben kwijt geraakt. Help. Ik erken dat de dood onder alle omstandigheden en op elk moment van de dag actief bestreden moet worden. In jezelf, in anderen, in structuren. Ik ga ervoor.
Toch nog even Cathriens spreekbeurt erbij halen:

Een  begrafenis  in  Wenen
Door  de  straten  van  Wenen  rijdt  een  kar.  Op  de  kar  ligt  een  kist.  Er  wordt  iemand  begraven.  Er  lopen  mensen  achter  de  kar.  Ineens  begint  het  te  sneeuwen.  Eén  iemand  gaat  naar  huis.  Een  paar  anderen  mensen  gaan  ook  naar  huis.  De  voerman  geeft  de  kist  aan  de  hovenier.  De  hovenier  is  de  man  die  het  kerkhof  verzorgt.  De  hovenier  graaft  snel  een  gat  en  legt  de  kist   er  in.  Een  paar  dagen  later  vraagt  iemand  waar  de  dode  ligt.  De  hovenier  weet  het  niet  precies  meer. 

Cadeautjes  voor  een  muzikale  jongen
Als  je  jarig  bent,  krijg  je  cadeautjes.  Dat  is  normaal.  Maar  als  je  elk  jaar  het  zelfde  soort  cadeau  krijgt  is  dat  niet  zo  gewoon.  En  het  is  nog  gekker  als  je    ieder  jaar  een  ander  soort  muziekinstrument  krijgt.  Van  zijn  vader  en  moeder  kreeg  Mozart  altijd  zo’n  cadeau.  Het  ene  jaar  een  fluit,  het  andere  jaar  een  viool.  Mozart  speelde  er  allerlei  stukjes  op.  Hoe  had  hij  dat  geleerd?  Om  dat  te  weten,  moeten  we  nog  verder  de  geschiedenis  in,  naar  1756.

Vereerd  en  bewonderd
Was  die  man  die  begraven  werd  zo  arm  en  onbelangrijk  dat  hij  geen  steen  op  zijn  graf  had.  of  had  hij  geen  vrienden?  Nee.  Die  man  die  was  begraven  was  tijdens  zijn  leven  vereerd  en  bewonderd.  Iedereen  kende  hem.  Als  hij  op  straat  liep  keken  de  mensen  naar  hem.  Als  het  in  de  krant  had  gestaan  stond  er  vast:  “Gister  is  Wolfgang  Amadeus  Mozart  overleden,  de  wereldberoemde  componist,die  zoveel  prachtige  muziek  heeft  geschreven.”  Was  hij  dan  beroemd?  Wat  voor  muziek  schreef  hij?  Waarom  was  hij  zo  arm  en  eenzaam  toen  hij  dood  ging?  Ik  ga  julliein  deze  spreekbeurt  vertellen  wie  Mozart  is.

Probleem is een beetje dat de spreekbeurt nog niet helemaal af is. Het moeten 7 of 8 “hoofdstukjes” worden. Moeilijk om Cathrien ervan te doordringen dat ze actief moet plannen. Heb ik ook pas op latere leeftijd geleerd.
"""De crocussen staan al boven de grond maar het is nog even heel erg koud. Als het voorjaar zo begint te naken krijg ik wel zin om buiten te gaan wonen. Als Twente ja zegt en de VU nee (uhd) dan moet ik een goede smoes hebben om het aanbod uit Twente af te slaan. Voorzichtig de gesprekken openen. Veel bedenktijd. Begrijp Anne’s bezwaren heel goed: (1) geen baan voor Anne; (2) geen Gerry. Eigenlijk zitten we door Gerry gewoon muurvast in Amsterdam. Het is emotioneel al haast te ingrijpend om de banden te verbreken. Cathrien is vrij zwijgzaam over ‘t schooltje. Ze gaat er graag heen maar weigert bijna categorisch om erover te praten. Misschien is de situatie voor haar nog een beetje te onoverzichtelijk. In een krantje van de school prijkt op de eerste bladzijde een “tekening” van Cathrien, gemaakt op haar eerste schooldag. Je bent er onwillekeurig toch trots op.
Sara heeft een dicht oog (ontstoken) maar wordt verder steeds socialer. Ik heb het gevoel dat ze me echt herkent als ik ‘s avonds thuis kom. ‘t Is een plezier om haar ‘s ochtends in bad te doen. Eerst lacht ze veel, veel geplas en gespetter, dan wordt ze ongeduldig en schreeuwt om de fles.
Zon in Egmond. Vanochtend goed gewerkt. Twee z-uren. Vanmiddag nog 3 proberen. Toergenjev is weer een klassieker: discussie over idealen vs. nihilisme. Ik houd het op het eerste. De vraag is alleen: welke idealen. Liefde is natuurlijk het sleutelwoord. Als al je handel en wandel door liefde wordt geïnspireerd, dan gaat het goed. Maar: je bent geen liefde, je bent iemand met lief en leed. Vorige week op school een discussie over discipline. Tegenover de Amerikaanse therapie van het ongenaakbare redresseren en conditioneren stelde ik: er is een principiële ongelijkwaardigheid tussen ouder en kind. Je kunt dat niet op heffen of ontkennen. Daarmee zie je ook de principiële underdagpositie van je kind over het hoofd. Je moet accepteren dat je als ouder een andere plaats inneemt en (nu nog, meestal) een fysiek en mentaal overwicht hebt. Verder vind ik dat je je zelf moet durven blootgeven, compleet met je woede en onzekerheden. Je moet van gedacht durven veranderen. Heeft God in het O.T. ook niet dikwijls deze kenmerken. Liefde is dus niet: continu het beste met elkaar voor hebben. Wel: respect, e behoefte om te leren kennen, zien, horen. Open staan voor de ander. Als ik boos word is dat meestal omdat de kinderen een beroep op mij den op momenten dat ik __niet__ voor ze open wens te staan. Het continue beroep op je doen, dat vind ik moeilijk. Te weinig liefde dus? Is er een evenwicht, een midden, rust, etc.? Ik geloof van niet. 
""" We zitten nog steeds in de corona-lockdown. Tot 15 mei niet naar het buitenland. Avondklok verlengd, wel een uur later ivm zomertijd. Universiteiten mogen misschien per eind april weer een dag per week lesgeven. Besmettingen lopen weer op rond 6000/dag.

Mooi bericht in Trouw vandaag:

<<ximg "/Dagboek/20210324 Trouw.jpg">>
"""
Dit is een spannende week. De kabinetsformatie, Tom Dumoulin in de Giro d'Italia, Ajax in de finale van de Europa league tegen Manchester United. De kabinetsformatie is vastgelopen. D66 wil niet met de Christenunie in een kabinet, bang als ze zijn om bij de komende gemeenteraadsverkiezingen als enige progressieve partij in het kabinet afgerekend te worden. Spannend hoe dit verder gaat. Staat de PVV al klaar in de coulissen? 

Tom Dumoulin moest gisteren poepen in de zwaarste etappe in de Giro. Verloor twee minuten. Staat nog net aan kop. 

Ajax speelt vanavond. Wij gaan met Sam en Marga naar Rigoletto en hoeven deze zenuwslopende wedstrijd dus niet te zien. Een geluk bij een ongeluk. 
Vandaag opgepast op Mercia en Franca. Het is woensdag dus een korte dag voor Mercia op school. Ik haal haar om 12 uur op. Haar groep 1/2 komt uit de linker poort van de school. De kinderen gaan tegen de muur van het parochiehuis naast de school staan, "billen tegen de muur!". Mercia komt al een stuk zelfbewuster uit school, niet meer dat kleine bedeesde vogeltje. Ze wordt ook toegeroepen door klasgenoten op straat: "Hé Mercia!". Daar geniet ze zeker van. Onderweg naar huis heeft ze hele verhalen die ik helaas niet versta. Thuis gaan we aan de lunch, door ons klaargezet. Vandaag veegde Mercia haar mes met een beetje boter aan de tafelrand af. Oma schoot een beetje uit, Mercia schrok ervan en begon prompt te brullen. Toen we van tafel gingen zei Franca tegen mij: "Jij bent niet boos, jij bent blij".
Van deze eenvoudige mogelijkheid om aantekeningen te maken had ik met gebruik maken. Vanavond een opvallende uitspraak in de serie The Young Pope van Paolo Sorrentino: in de liefde is tederheid belangrijker dan passie. Uitspraak van Pope John Malkovich.

Vandaag met Harry op en neer geweest naar Rotterdam, Erasmus MC, waar Harry door de oogarts gezien moest worden. Gelukkig heb ernstige problemen. 
"""Hard gewerkt aan het liber amicorum voor SF. Weinig te melden. Tot 4 uur in de ochtend doorgegaan aan mijn eigen stuk over de leerlingcomponent van intelligentie tutoriële systemen. Niet veel gemerkt/onthouden van wat er mij heen gebeurde.
Na 3 weken Retranchement weer heelhuids teruggekeerd. Warme zomeravond. Met een sigaar uit België, "La Gloire de Poupehan", even terug- en vooruitkijken.  

Retranchement in steekwoorden: Siska, paarden en Berend (eng, eng, paardje is lief, doeg paardje), poes (onze vriend), weinig mooi weer, bezoek van Tjeerd & Kathleen, bezoek van/aan Guus & Els, bootje op Veerse Meer, Veere, nieuwe apotheek van Richard (fit & beter), Berend in de bedstee, pannekoeken, blauwe vlas, witte vlas, vogeltjes, vlinders, Zwin, fietsen, Sara op fietsje met zijwieltjes, "Kinderen van de Arbat" van Anatoli Rybakov.

Gelezen/gehoord: Jan Schaefer: de krant, daar wordt morgen de vis weer in verpakt. Trainer van Alexandra Radius (die afscheid nam als balletdanseres): De leraar opent de deur, de leerlingen moeten zelf naar binnen gaan.

Vooruit: veel praten op het werk met mensen die aan je toevertrouwd zijn; planningen serieus nemen en regelmatig doornemen; systeem met e-uren handhaven; de tijd: op tijd stoppen!

Alexandra Radius: geduld en verdraagzaamheid zijn belangrijke eigenschappen.
Vandaag een mooie dag met Mercia en Franca in Egmond. Vanwege het plaatsen van de nieuwe accu's moesten we in Egmond aanwezig zijn. Jochem bracht de meisjes 's ochtends en wij hebben ze vanmiddag weer naar huis gebracht. Mercia zei op zeker moment: "Wat is dit? Het is geen oppassen, het is ook geen logeren. Het is even blijven."
!!! Zevende vakantiedag
Al weer een week volgemaakt hier in Italië. Vandaag veel leuke dingen gedaan. Vanochtend onze privé behandeling in het heilzame warmwaterbad. Daarna boodschappen in het dorp met een cappuccino bij de bakker. Na veel gepruts SPSS aan de praat gekregen en repeated measures analyses voor een student gedaan. 

Na lunch en siësta naar Orvieto. Dat bleek een prachtige stad te zijn zonder de hordes toeristen die je in Florence of Siena tegenkomt. De Duomo is natuurlijk prachtig, maar ook de museum van de Dom met een prachtige expositie met werk van Emilio Greco. Na een lekker glaasje bier weer naar huis gereden door een prachtig landschap. Weer is bezig om te slaan. Regen en wind en omweer. 

<<ximg "/Foto's/Emilio Greco.jpg">>

Thuis gekomen nog even een glaasje gedronken bij café Centraal. Daarna de film Goodfellas van Martin Scorsese afgezien. Tijdens het kijken naar de film een hevige donderslag. Het leek op een inslag. Alles in het donker, we schrokken ons een hoedje. Hoofdschakelaar weer omgezet. Alles bleek het gelukkig nog te doen. 
"""
Moeilijke periode wegens overstelpende drukte. Dit leidt tot spanningen met Anne. De wortel van het kwaad zit hier in dat ik door de stress erg onzeker ga worden. De onzekerheid ontstaat door de verlaging van de sense of control. Eigenlijk moet je onder stress juist meer aandacht gaan besteden aan de versterking van het controle-gevoel, of althans van de rationeel antwoord op de werkdruk. Hoe heet dat ook weer in Boekaerts & Simons?  
Problem-focused: change stressor through direct actions or problem solving.
Emotion-focused: change self through activities that make one feel better but do not change the stressor.
Cognition-oriented: probleemsituatie “anders” interpreteren, zodat een oplossing wordt gevonden, of de situatie niet langer als probleem wordt gezien.
Al met al ben ik overgevoelig voor kritiek. Daardoor ben ik geneigd om kritische geluiden van Anne onmiddellijk uit te vergroten. Dat leidt dan weer tot een overreactie, irritatie, die escaleert tot ruzie.
Hoe doorbreken we dit alles? Zelfvertrouwen versterken door: meer te doen aan sense of control en aan oefening van bewuste aandacht. Sense of control versterken door: 1. genoeg nachtrust, 2. overzichtelijke planning: een doel per dagdeel. Het doel vanavond: reactie op mail Jan Willem.
"""8.18: klaar voor de start <br>23.55: nog even een notitie. Vanavond smakelijke vakantieverhalen en foto's van Florence en Alfred. Wat lijkt zo'n soort vakantie toch lang geleden (84 ook in Scanno). Vandaag liep de planning niet helemaal naar wens. Reactie A.D. de Groot reuze opkikker. Vond het verhaal interessant, instructief en helder. Dat is andere koek dan W. Koops! Morgen de hele dag zonder afspraken. Weinig dingen gebeurd of gelezen die tot nadenken stemmen. Nieuws: akkoord over kruisraketten hangt in de lucht. Misschien een keerpunt ten goede.
"""
Nog één nacht op de Frans van Mieris. Hopelijk heb ik vandaag een beetje geduld met mezelf en met Anne en de rest van de wereld. 

Intussen is het 23 uur geweest. Mede dankzij de hulp van Gerrie en Cathrien is bijna alles nu ingepakt. Proberen een beetje te slapen. 

Vertrekken is toch wel een beetje doodgaan. 
"""
Gister het afscheid van Anne op het AMC. Was een heel gezellige afscheidsreceptie met vriendelijke woorden van Frans Nollet, Cathrien, Ton Sassen en een mooi lied van de afdeling. Veel nadruk op Anne's expertise (werd met name door Frans geroemd), haar praktische inslag en haar warme relatie met de patiënten. We gaan je enorm missen, zo klonk het alom. Leuk dat er ook nog een aantal oud-collega's waren zoals Ada Muis en Jet Boetje. En natuurlijk Richard en Marjolijn, Geert en Linda en Ton en Veronique. Daarna thuis de lasagnemaaltijd die Ger 's ochtends al had klaargemaakt. Heel goed afscheid al met. Ik zet hieronder nog linkjes naar Cathrien's toespraak, Anne's toespraak en wat foto's.

<<pdf "/Teksten/20170328 Toespraak Cathrien bij afscheid Anne.pdf">>

<<pdf "/Teksten/20170328 Toespraak 28 maart ter gelegenheid van afscheid nemen van de revalidatie-1.pdf">>

<<ximg "/Foto's/20170328 Anne in haar Box.jpg">>

<<ximg "/Foto's/20170328 Berend biedt cadeau aan.jpg">>

Vandaag ook nog de uitnodiging voor ons 40-jarig huwelijksfeest gereed gemaakt.

<<pdf "/Teksten/20170330 Genodigden 40 jaar.pdf">>

<<ximg "/Foto's/AC&J1977.jpg">>

<<ximg "/Foto's/AC&J2015.jpg">>
Vandaag een rustige woensdag. Vanochtend geroeid, tussen de middag een rondje Vliegenbos. Gewerkt aan Creativiteit, afval afgevoerd. Zo worden de dagen van de pensionado gevuld. 
"""11.20 ‘s avonds, terug in Pollock Halls. Vanavond gegeten met enkele Nederlanders. Vanochtend in een echte voorjaarszon een mooie rondwandeling door de stad Edinburgh gemaakt. Straatbeeld en winkels zien er wat ouderwetsig uit. Alles degelijk, net of de mensen hier met iets meer zorg omgaan met hun spullen. Midden door de stad loopt een vallei, net een rivier. Hier loopt de trein erdoor en er is een mooi park. Daarboven het kasteel, prachtig uitzicht. In het kindermuseum nog wat kunnen kopen voor Cathrien en Sara. Van de lezingen niet veel wijzer geworden. Algemene indruk: toch wat teleurstellend, niet het neusje van de zalm. Lezingen van 20 minuten zijn ook wel erg kort. Geen gelegenheid tot discussie.
Omdat iedereen op zo’n conferentie in een vreemde omgeving verkeert ontstaan er vreemde sociaalpsychologische processen. Daartoe behoort ook een zekere flirterige sfeer tussen de sexen. Kan me dat uit de verhalen van Maarten ‘t Hart ook herinneren. Je krijgt de neiging om een beetje vertrouwelijk met elkaar te worden. Nu op tijd gaan slapen.
Ochtendtrein. Vandaag twee zware (=slechte) scripties afhandelen. In beide gevallen zijn de onderwerpen de moeite waard: verschillen tussen beginners en experts bij het instuderen van een vioolsonate en gebruik van modellen bij het oplossen van dynamische problemen. Muziekexperiment is goed geslaagd. Daar zit dus artikel in? <p>
Expertise: kwestie van veel tijd en snel/efficiënt werken. Ik probeer me steeds meer op het lezen te concentreren. Goed dat PWN klaar is. <p>
Problemen thuis: Cathrien en Sara vlogen elkaar temidden van twee vriendinnen in de haren. Krabben! Sara met schrammen naar school. Cathrien zeer ontdaan. Combinatie met vriendinnen gaat slecht. Terwijl ze samen zo goed kunnen spelen. Hoe zit dat! Verder bespreken (laptop nodig!).
Het is nu 9:17. Modelstart van deze dag. Vandaag sollicitatiebrief voor VU de deur uit. Russen vechten in Tsjetsjenië. Republikeinen in Amerika pleiten voor afschaffing bijstand. Fraai winterweer. Vannacht 7 graden vorst.
"""Anne-Carien vertelde dat Cathrien in het bad (dat wil zeggen in het grote bad naast het gevulde kleine badje) steeds een plasje deed en probeerde na te gaan waar de plas vandaan kwam. Haar commentaar: Cathrien heeft een kleine en papa heeft een grote. Bij het in bed stoppen gaf Anne aan Cathrien steeds kusjes. Cathrien moest lachen maar riep steeds "mag niet!". Ze wilde eigenlijk kushandjes geven. Opeens was het brullen en goed ook.

Wat een verschillen als je het gedrag van Harry met het gedrag van Cathrien vergelijkt. Harry: gesloten, rigide, niet spontaan. Cathrien: open, flexibel, direct en spontaan, zonder second thoughts. Hoelang zouden we Cathrien zo kunnen houden? Hangt ook af van onze eigen houding ten opzichte van elkaar.
Zou Harry te veranderen zijn? Vanavond zei hij door de telefoon dat Nel een brief had geschreven met verwijten. Er was een gesprek geweest. Volgens Harry had Nel het over de vuilniszakken en Harry het over Nels niet reageren op Harry's afkeuren. Verschillende golflengte. Toch is zo'n verhaal na 18 jaar huwelijk moeilijk te geloven. Ik wil met hem praten om hem, los van zijn huwelijksproblemen, met zichzelf te confronteren. Hij is zo in zichzelf gekeerd. Hoe dat te vertellen?
Laatste middag in Florence. Vandaag de Capelle Medicee bezocht, geluncht in de buurt van de Beccari. Daarna een poging gedaan om het Museo dell'Opera del Duomo te bezoeken. Konden alleen een kaartje van €15 kopen voor museum, battisterio, cupola etc. Dat werd ons iets te gortig. Daarna de San Lorenzo waar twee zeer vriendelijke middelbare scholieren in hun beste Engels een rondleiding gaven, onder toeziend oog van hun docent Engels. Erg leuk. Daarna een nap en naar de Oltrarno gelopen. San Felice in Piazza
"""8.07: een stijgende lijn!
planten, tape, typen
2.40: heel laat. Hopelijk morgen helder. Vervelend is dat ik steeds de indruk heb dat AC net zo weinig slaapt als ik (wat niet zo is). Nu eerst een paar uur slapen.
Drie dagen gewerkt, al weer aardig bekaf. Moeilijk om systematische aanpak te handhaven. Grootste verstoring: computer! Wonderlijk zoals dat apparaat z'n positieve en negatieve kanten blijft houden. Een zegen en een vloek zouden we vroeger zeggen. De zegen: (1) hulp bij college (ga vanavond artikel over SOAR dat prima in te passen is in Inl. &Psi; en Inl. Cogn. &Psi; opschrijven; morgen invoeren en met keywords in collegediktaat zetten!); (2) administratie-hulp; (3) e-mail en news; (4) tekstverwerking; (5) tentamens. Vloek: je gaat dingen doen die ook door secretariaat zou kunnen laten doen. Je laat je op de een of andere manier meeslepen door het app.: het beeldscherm? Het "interactieve"? Ik ben er nog steeds niet achter. Opmerkelijk: Newell's idee dat alle cognitieve activiteit op te vatten is als probleem oplossen. Ik heb na m'n afstuderen een lang stuk geschreven waarin ik precies hetzelfde beweerde! Blijven lezen, blijven schrijven! Dat is het geheim van een wet. carrière. Opmerkelijk: Sartres crisis tussen z'n 30e en zijn 40e. Manuscripten achter elkaar geweigerd door uitgevers, verliefd, begoocheld door 18-jarige student van De Beauvoir. Hoe bekend allemaal. Als je politicus bent moet je volgens mij plezier scheppen in acteren. Geldt ook voor college geven. Geldt in het algemeen? Ook bij wijze van defensiemechanisme. John S. viel maandag mee. Uur gepraat. Wel mager en smal.
!!! Veertiende vakantiedag
Na het zwemmen eerst thuis ontbeten en toen naar het stadje waar de markt al in volle gang was. Koffie bij café Garibaldi.  

<<ximg "/Foto's/20170705 café garibaldi.jpg" width:400px >>

Na lunch en siësta naar Caprese Michelangelo gereden om het geboortehuis van Michelangelo te bewonderen inclusief kopieën van een aantal van zijn beelden. De vader van Michelangelo, Lodovico Buonarotti, was vanuit Florence aangesteld als burgemeester van Caprese en de familie verbleef jaarlijks een half jaar in deze buitenpost. 

's Avonds nog even het stadje in voor een ijsco en een limo'tje.
<<ximg width:% "/Dagboek/20070905 Dagboek.png">>
<<ximg "/Dagboek/20160406 Dagboek.png">>
"""Er heerst hier een soort verkoudheidsestafette. Alleen Anne doet niet mee. Saar, Cathrien, en ik geven steeds de verkoudheid aan elkaar door. Vanochtend zat Sara bij Gerry op schoot aan tafel. Cathrien ernaast op een stoel, Saar een beetje aaien, etc. Opeens zet Saar het op een brullen. Cathrien had in haar vinger gebeten. Nu al de derde keer! Cathrien zit er meteen heel bedeesd naast en fluistert: "Doe ik toch niet meer." Ondertussen heeft ze toch een beetje pret. Vanavond aan tafel vertelde ik het sprookje van de Gelaarsde Kat. Cathrien een en al oor. Moest daarna nog Doornroosje doen. Ze vindt 't vertellen erg leuk. 

Zit te denken over Huubs voorstel om een toespraak te houden. De lijn, of althans de ingrediënten.
* Wat is gereformeerd schuld- en zondebesef. Vergeving der zonden was toch ook steeds aan de orde.
* Hoe zwaar drukt de erfzonde op je. Hoe zwaar drukt je eigen verleden op je. Bijbel: gooi het van je af. Praktijk: moeilijk.
* Herinterpretatie van Freud. De ongelukkige herroeping van de verleidingstheorie.
* Geen doem, geen lot. Wie zichzelf wil vasthouden zal zichzelf verliezen. Neem afstand van jezelf, van je verleden. Wees ieder ogenblik nieuw. 
"""Werk gaat vrij goed. Pagina’s schrijven o.k. Nog teveel t.v. Tjeerd belt!
Een heel emotionele week, waarin we weer oog in oog met leven en dood hebben gestaan. Dinsdag 29 april zijn de kinderen 's middags naar Deventer geweest om afscheid van Ma te nemen. Samen met Anne kwamen ze 'savonds met de trein weer hier. Ma had dinsdag overdag een aantal malen een zwarte substantie overgegeven, het gevolg van een darmafsluiting. Allemaal heel vermoeiend en naar. De nacht van dinsdag naar woensdag verliep onrustig. Geert was erbij en belde de volgende ochtend. Hij hoopte dat onze Lieve Heer Ma nu maar snel zou komen halen. 's Middags heb ik Anne weer naar Deventer gebracht. Het toeval wilde dat H.M. juist dit jaar Deventer had uitgekozen om op Koninginnedag te bezoeken. Gelukkig was de drukte 's middags al weer voorbij. Toen we bij Ma kwamen was ze rustig. Het overgeven was gelukkig gestopt. Ze had haar eerste morfinepleister gehad. Ze had de ogen dicht maar nam alles nog goed waar. Anne ging bij het bed zitten en ik schoof aan bij Pa die voor het raam zat. Pa begon weer te praten over de bom die op 22 maart 1945 hun huis in Velp trof, waarbij Pa's broer Richard en zijn zussen Cathrien, Anny en Jeanne omkwamen. Pa liet een bidprentje zien dat hij altijd in zijn portemonnee bij zich draagt. Ma had last van het gepraat en vroeg Pa ermee op te houden.Anne zei later dat Ma zich, net als bij een bevalling, volledig op haar lichaam moest concentreren. Ik ben een tijdje bij het bed gaan zitten en heb Ma een kus ten afscheid gegeven. Toen ik om het bed heenliep zei ik nog een keer "dag, dag". Ma zwaaide haar linkerarm naar mij toe en ik gaf haar nog een keer een stevige hand. Dat was mijn afscheid van Ma.

Anne bleef bij Pa en Ma. 's Avonds kreeg Ma veel meer pijn in de buik, waarschijnlijk als gevolg van de afsluiting. Uiteindelijk hebben Ton en Anne om 11 uur de doktersdienst gebeld. Een dokter uit Twello diende een morfineinjectie toe waarop Ma na een kwartier in een diepe slaap viel. Anne heeft tot 3 uur bij haar in de stoel gezeten en Ton vanaf 3 uur. De ademhaling was nog krachtig. Maar om 10 over 7 's ochtends op 1 mei heeft ze toch de geest gegeven. Iedereen was natuurlijk erg verdrietig maar ook dankbaar dat ze aan het einde van haar moeilijke weg was gekomen. 

's Ochtends eerst nog naar pianoles gegaan. Dit mede met het oog op de Sarabande uit de 1e Franse Suite van Bach die ik graag in de kerk wilde spelen. Rond 12 uur ben ik naar Deventer gereden. Ma lag er rustig bij, net of ze rustig sliep. Peter Dullaert zat beneden al klaar met Richard, Pa, Geert, Ton en de anderen om de avondwake en de uitvaart te bespreken. Ik had thuis al twee teksten uitgekozen, die bij ieder goed vielen: 1. Kor 13 en Johannes 15.
Duwen aan de dag en aan de lopende klussen, dat is het eigenlijk, meer niet.
Waardoor wil ik 8 augustus 2001 onthouden?

*Trouw artikel over neo-conservatisme gelezen en aantekening van gemaakt
*Artikel Hanneke afgemaakt en tijdschrift uitgezocht
*Contact gezocht met Pascal, Fleur, Ries, Marianne, Jean en Karl
*Manuscript 152a gelezen en van commentaar voorzien.
*Stuk van de wedstrijd Ajax-Celtic gezien.
<<ximg "/Dagboek/20070808 Dagboek.png">>
!!! Vijfde vakantiedag

Vanochtend een wandeling gemaakt bij Sarnano. Niet dezelfde als op [[maandag 9 september 2019]]. Minder mooi ook, teveel asfalt. Maar wel een mooi uitzicht op de bergen. Op een bepaald moment moesten we door een beekje waden, schoenen en sokken uit. Vervolgens voerde het pad door een bijzondere camping, waar de caravans helemaal ingebouwd waren zodat er quasi vakantiehuisjes ontstonden. De camping was zo goed als verlaten, iedereen weer aan het werk. We zagen ook vaak het paarse bloemetje dat hier heel veel voorkomt. Volgens mijn planten app is het een wilde cichorei. 

|<<ximg width:400px "/Foto's/2021 Italië/0908 Wandeling bij Sarnano.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0908 Bijzondere camping 2.jpg">>|<<ximg width:260px "/Foto's/2021 Italië/0908 Wilde cichorei 2.jpg">>|
|borderless|k
<div class="tc-table-of-contents">
<<toc-tabbed-internal-nav "Dagboek" sort[tocnr]>>
</div>
* Hoe is het tentamen Juridische Vaardigheden A afgenomen? Waren er mogelijkheden om informatie uit te wisselen tussen vijf studenten? Was er geen online surveillance?
* Is het bewijs voor fraude afdoende? Wat vindt appellant ervan?
* Is de sanctie proportioneel?
Uitslag Bachelorwerkgroep Politicologie 2. 
Onderdeel 1: eerst 4.4, daarna 1 wegens te weinig woorden. Waarom woordentelling niet aangekaart bij eerste beoordeling?
Onderdeel 2: 5.2. Ik vind 5.5 beter. 
Corona, OLC, USR. 

Op vrijdag 16 april nieuwe mentor. Heeft dat iets net de zaak te maken?

Verweerschrift. Onderdeel 1: te weinig woorden. Onderdeel 4: onvoldoende verbeterd, schrijfvaardigheid een probleem. 

Vraag: snapt de student het criterium van de 1400 woorden? Begrijpt de student dat het schrijfvaardigheid ontoereikend is?

Mijn oordeel: Correcte gang van zaken. Oordeel duidelijk. Ongegrond.
"""
1. Waren er problemen met de verbinding? Hebben meerdere studenten problemen ervaren?
2. Is dit een geval van technische problemen?
3. Te lange periode tussen tentamen en melding van fraude (>14 dagen)
4. Eerste deskscan wel goed uitgevoerd?
Plagiaat in opdracht 2 in de cursus Operating Systems. Uitgebreide overeenkomst, op verschillende plaatsen, met werk van andere student. De betrokken TA heeft geen info gedeeld met de appellant. 

Vragen:
Wat is de rol van de TA bij het uitvoeren van de opdracht?
Wat houdt de opdracht in?
Is de betrokken TA gehoord? De appellant neemt van niet. Zie verweerschrift. Hoe denkt de appellant erover? Heeft zijn TA code verstrekt? 
Wat betekent de lijst met logins of zoiets?
Status ~YouTube geluidsopnamen?

Mijn oordeel: argumenten in beroepsschrift lijken adequaat weerlegd. Beroep ongegrond.
* Uit het hele dossier wordt mij niet duidelijk wat er gebeurd is. Apellant heeft uit nieuwsgierigheid aan een tentamen meegedaan en daar vervolgens een onvoldoende voor gescoord?
* Wat vindt de student nu precies onduidelijk aan art 17?
* Heeft de ex.cie zijn besluit van 31 mei niet onderbouwd?
* Welk beroep op welke hardheidsclausule doet de student? Alleen zijn domme handelwijze of ook zijn gezinssituatie?
* Is er onduidelijkheid over het begrip "deelname", zie betoog advocaat? Is dit punt relevant, de appellant heeft immers zijn tentamen ingeleverd?
Ik mis de overwegingen in de eerdere uitspraak van het COBEX, 2021/18/985. Als de overwegingen hier ook van toepassing zijn, dan moet het beroep gegrond worden verklaard. Als niet, dan lijken de argumenten in het verweerschrift overtuigend.

Vragen: hoe zit het met de ziekenhuisopname? Heeft die plaats gevonden? Stukken? Invloed?
Plagiaat tijdens tentamen Hadithwetenschappen op 24-02-21, minor van Religie en Theologie. Copie van Wikipedia tekst. Drie eerdere onregelmatigheden. Online tentamen, deskscan, Proctorio. Hoorzitting op 13-04. 

Gaat het ook plagiaat (overnemen zonder bronvermelding) of om fraude (hulpmiddelen)? Knippen en plakken wordt opgemerkt. Geen onregelnatigheid geconstateerd, ook geen afwenden van de blik. Plagiaatscore: 96% overlap in een tekstvan 76 woorden. Er zijn ook niet overeenkomende woorden en een schrijffout. Appellant claimt de tekst van buiten te hebben geleerd. 

Sanctie bestrijkt periode langer dan één jaar. Mag niet volgens artikel 7.12b tweede lid WHW. Mag een cumulatie van sancties volgens de R&R?

Er zijn geen afwegingen over (1) de zwaarte van de sancties; (2) de omvang van het gedrag; (3) de wijze waarop de vermeende fraude zou hebben plaatsgevonden. 

Geen zorgvuldig voorbereid en deugdelijk gemotiveerd besluit! 

Vragen:
Kunnen via Proctorio alle interacties met andere bronnen dan het tentamen worden vastgelegd?  Nee, tentamen afgenomen via zoom. 
Is fraude voldoende overtuigend aangetoond? Hoe zit het met de 100% overlap in andere passages?
Welke sanctie wordt nu opgelegd, de eerste of de tweede (uit de minnelijke schikking)?

Mijn oordeel: fraude aangetoond, sanctie proportioneel. Beroep ongegrond.
* vertraging in schikkingsgesprek
* Welk nader voorstel in schikkingsgesprek Alle taalfouten mogen worden gecorrigeerd. Enkel de 25 gemarkeerde fouten worden opnieuw beoordeeld. Overige taalfouten buiten beschouwing.
* Waarom schikkingsvoorstel niet geaccepteerd?
* Argument "correct taalgebruik is verantwoordelijkheid van de student". Geen feedback bij taalfouten? Wel bij eerdere feedbackmomenten. Klopt dat wel of niet?
* Is er onderscheid tussen correct taalgebruik en correct juridisch taalgebruik?
* Wat zijn evidente taalfouten en wat is het verschil met gewone taalfouten?

Ik vind dat het besluit vernietigd kan worden omdat geen toelichting is gegeven op de gemaakte taalfouten. De appellant moet de taalfouten verbeteren. Als er dan minder dan 20 overblijven moet de scriptie als eerste kans worden beoordeeld. 
"""
1. Geldt ook voor Bakker: deugt de proctorio instructie? Moeten de proctorio-regels aan de R&R worden toegevoegd? In uitspraak 2021/10/977 staat dat de procedure klopt.
2. Geldt ook voor Bakker: inderdaad hinderlijk dat de scan niet kan worden teruggezien.
3. Vervalt inderdaad het argument dat de student niet bekend is met de regels als de student al eerder de regels correct heeft toegepast?

Artikel 9. Orde tijdens de afname van examens en (deel)tentamens
1. De Tentamenregeling VU (met uitzondering van de regels van Proctorio) is opgenomen in bijlage 3 van de onderhavige Regels en Richtlijnen en is voor alle examinandi toegankelijk op de facultaire website (med.vu.nl). 
2. De aanwijzingen in de Tentamenregeling VU, alsmede de regels van Proctorio, dienen door de student te worden opgevolgd. 
3.  De student verplicht zich bij deelname aan een (deel)tentamen te legitimeren met een geldig bewijs van inschrijving en een geldig identiteitsbewijs met pasfoto. De student die zich niet kan identificeren wordt uitgesloten van het tentamen, dan wel wordt het tentamen dat de student heeft ingeleverd, ongeldig verklaard. De registratie waaruit blijkt dat de student heeft deelge- nomen aan het tentamen, blijft gehandhaafd. 
4. De student wordt uitsluitend toegelaten tot het (deel)tentamen indien hij ingeschreven is voor het betreffende (deel)tentamen (voor inschrijvingsregels zie Canvas). 
5. Bij mondelinge tentamens wordt niet meer dan één student tegelijk getentamineerd. 
6. Bij het afnemen van een mondeling tentamen is een tweede examinator aanwezig, tenzij de examencommissie anders heeft bepaald.

Artikel 19. Indien een of meer tentamenonderdelen of een geheel tentamen naar het oordeel van de deel-EC GNK niet op de voorgeschreven wijze zijn afgelegd, dan wel indien het afnemen van een tentamen- onderdeel of een tentamen niet op behoorlijke wijze is geschied, verklaart de examencommissie het tentamen of het desbetreffende onderdeel daarvan ongeldig.
"""
Uitje fruiten in hoge kleine pan. Water tot over de helft. Eventueel knoflook. Groentebouillonblokjes (2), twee aardappels, 2/3 stronkjes broccoli erin, courgette meekoken.
Gaar, dan staafmixer. Zalmsnippers erbij (bij het warm maken). Afmaken met peper en zout. 
"""
Intussen is het al zondag 2 april. We hebben de kooractiviteiten erop zitten. Nu even nog een paar dagen genieten in Florence. Even een terugblik. Op zaterdag 1 april hadden we 's ochtends de rondleiding door Arjan. Veel gebouwen van buiten bekeken. O.a. de Orsanmichele, prachtige beelden die de verschillende perioden uit de Renaissance weerspiegelen. Geluncht met Petra en Mente, heel gezellig. Zaterdagmiddag koorrepetitie vanaf 16 uur en Evensong vanaf 17 uur. 's Avonds in een enoteca een glaasje wijn met hapjes met z'n tweeën. 
"""Woensdag bij overleg over rekenproject voorstellen: pp. hardop laten denken, protocol invoeren.
Als je, tegen je eigen intenties in, een tijdje niet schrijft op deze kaartjes, dan ontstaat er een zekere drempel om er weer mee door te gaan. Bij deze dan. Vier weken vakantie lopen op hun eind. Drie geslaagde en zonnige weken in Retranchement. Intensief met de kinderen opgetrokken. Het dagprogramma (Berends slaapje van 9.00 tot 10.00, algemene siësta van 1 tot 3, avondeten rond ½6) beperkte de mogelijkheden tot lange uitstapjes. Toch een flink aantal leuke activiteiten ondernomen: elke ochtend fietstochtje met Cathrien, om de andere dag rondje hardlopen, verder: Brugge (koetsje, bootjes), vogelpark Zwin, Siska (speeltuin), Knokke (ijs), strand, fietsen naar Damme. Cathrien heeft aardig leren fietsen. Sara vierde op 10 juni haar 2e verjaardag, Berend leerde kruipen en staan in de box. 's Avonds lekker gelezen, o.a. Het Zware Zand van Rybakov, helaas te weinig geschreven. Het intensieve programma met de kinderen bracht het werk meteen ver op de achtergrond. Geen vakantieziekte! Nog steeds wel moeite met de discipline maar proberen vol te houden met de nodige strengheid, humor en liefde. Van alle drie te weinig in huis. Laatste week in R. was Gerrie er. Gaf een beetje lucht. We konden daardoor nog een keer gaan eten in Damme. Deze week moeder op bezoek gehad. Woensdag C.'s eerste partijtje. John Schute erg ziek in ~AvL.
!!! Tiende vakantiedag
Vanochtend met weemoed afscheid genomen van San Casciano. Zeker een plaats om naar terug te keren. Vanwege de lollige torrino, de warme baden, de gezellige mensen in  het dorp, met name de mensen van bar Centrale en restaurant Daniela, en vanwege de omgeving, rijk aan natuur en cultuur. We kregen vanochtend nog even in sneltreinvaart een college van straatveger in zijn wagentje. Zie de foto's die ik moest maken van al zijn folders en kaarten. 

Vanmiddag kwamen Sara en Ger om 16.30 met een uur vertraging in Pisa aan. We waren nog even de stad ingegaan en moesten ons nog haasten om op tijd op het vliegveld te zijn. Maar dat lukte en om 17 uur reden we naar Anghiari. 

Altijd even wennen, zo'n nieuw huisje, zeker na San Casciano. Maar het belangrijkste is dat we heelhuids zijn aangekomen en een dak boven ons hoofd hebben. 
In De Boerhaar in het huisje van Ton en Veronique. Vanavond gezellig gegeten met Ton en Vero, en met Thomas en Amber. 
Gisteravond om kwart voor 12 is Janny rustig ingeslapen. Sinds vrijdag was de dosering morfine sterk verhoogd omdat de pijn anders niet meer was te bestrijden. O wat een verdriet. Tegelijkertijd heeft Cathrien zich gemeld in het ziekenhuis en gaat de bevalling starten. 

Zeer tegenstrijdige gevoelens. Nu even de tekst maken voor de overlijdensadvertentie. 
<<ximg "Pensionado/Geheugen/Dagboek/20061111 Dagboek.png">>
!!! Achtste vakantiedag

Vandaag hier aangekomen in Casa Bocca di Lupo, Loretello. Vanochtend eerst bij het ontbijt nog een paar foto's rond Casa Crocetti gemaakt. Een heerlijk huis en een heerlijke plek om te zijn. Het uitzicht op de Monti Sibillini blijft fascinerend.

|<<ximg width:400px "/Foto's/2021 Italië/0911 Casa Crocetti.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0911 Ontbijt Casa Crocetti.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0911 Monti Sibillini.jpg">>|
|borderless|k

Onderweg koffie gedronken in Penna San Giovanni. Prachtig geconserveerd maar leeg stadje op de heuvel tegenover Monte San Martino. Bij de bar zaten alleen twee oudere Engelse dames te kwekken. Vanuit Penna kun je Monte San Martino zien liggen. 

|<<ximg width: 350x "/Foto's/2021 Italië/0911 Penna San Giovanni.jpg">>|<<ximg width:600px "/Foto's/2021 Italië/0911 Uitzicht op Monte San Martino.jpg">>|
|borderless|k

Vervolgens naar de kust gereden en geluncht in Porto Sant'Elpidio. Erg lekker. Anne was onder de indruk van de mobiele vaccinatiepost waar inderdaad een stuk of wat dertigers in afwachting van een prik waren. Zouden we in Nederland ook op veel grotere schaal moeten doen.

|<<ximg width: 400px "/Foto's/2021 Italië/0911 Mobiele vaccinatiepost.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0911 Lunch in Porto Sant'Elpidio.jpg">>|
|borderless|k

Om 16 uur kwamen we hier aan. Altijd weer even wennen. Maar het terras met het prachtige uitzicht is zeker een pluspunt.

|<<ximg width: 300px "/Foto's/2021 Italië/0911 Eerste kopje thee.jpg">>|<<ximg width: 800px "/Foto's/2021 Italië/0911 Panorama Bocca di Lupo.jpg">>|
|borderless|k
"""Geen nieuws vandaag. Of het moest zijn dat Cathrien voor ‘t eerst burgemeester Van Thijn heeft gezien, in vol ornaat. ‘t Maakte niet veel indruk op haar. Cathrien roept regelmatig: “Ik doe het wel, zelf!”, ook als de handeling waarom het gaat nog boven haar macht gaat.

Ik kan slecht tegen moeheid. Wordt er zeer gedeprimeerd onder. Mis houvast in zo’n situatie. Er moet iets op te vinden zijn. Cathrien zei vanmiddag uit zichzelf aan tafel: “We moeten nog bidden”, en begon meteen met gevouwen handen en ogen dicht te prevelen.

Diverse buitenlandse opiniebladen (o.a. The Economist en Der Spiegel) hebben een nummer aan Nederland gewijd. De verloedering van Amsterdam bleek een terugkerend thema. Er lijken me veel redenen aanwezig om er iets aan te doen. Uiteraard is het niet een op zichzelf staand probleem. Algemeen: te weinig overheidsgeld beschikbaar voor mensen met lage inkomens, voor politie, voor gemeenschapsvoorzieningen, etc. Vergelijkbare situaties zullen zich ongetwijfeld in Berlijn en Londen voordoen. Maar toch: er moet dringend iets aan gebeuren. Vanavond een belangrijk stuk van het taalprogramma overgezet. Italiaans leren op de Olimarck!
Niet naar Egmond. Vanochtend kinderen begeleid bij de schaatsles op de Jaap Edenbaan, van half 9 tot half 10. Daarna is Berend met oom Paul, zijn peetoom, op stap geweest om zowaar een heuse gitaar te kopen. Ook al meteen via Julia Bobek een lerares geregeld. Berend gaat maandag op proef. Even het journaal van 22:00 uur.
Nog in de nacht. Nu eerst gaan slapen.

23:23 uur: Gezellige dag geweest vandaag. Vanochtend ontbijt met Cathrien erbij, na Dirk en Martin Ros wandelschoenen gekocht en geluncht bij de IJsbreker. Na een dutje Jan & Janny op bezoek gehad. Daarna gegeten bij La Favola met ons vijven, Ger en Hagar. Zaterdag is een mooie dag om jarig te zijn. Wat zou het gelukkigste moment zijn dat ik naar de eeuwigheid wil meenemen? Was er het afgelopen jaar zo'n moment? Nou, de oratie was zeker een groot succes waar ik nog steeds op teer. Eerlijk gezegd was de afgelopen week op Cyprus ook een heel fijne week. En er zijn natuurlijk veel mooie momenten geweest door het jaar heen. Eigenlijk was ook het afscheid van Dick een mooi moment. Misschien moet ik het komende jaar proberen meer mooie momenten te creëren, het succes organiseren. Eigenlijk is dit ook wel een mooi moment. De stilte aan het begin van de zaterdag, het vooruitzicht op een gezellige verjaardag, een bezoek aan Dirk van den Broek, de boekenrubriek van Martin Ros.

Ik probeer dit jaar veel momenten te creëren waarin de stemming goed zit, wil terugkeren naar de beginperiode van mijn baan bij het Onderwijscentrum, waarin elke dag een feest was. Er wordt van mij verwacht dat ik zo'n stemming uitstraal, ik kan dat ook. Samen natuurlijk met een gezonde portie nuchterheid, geen cynisme.

Pater noster, qui es in caelis, sanctificetur nomen tuum. Adveniat regnum tuum. Fiat voluntas tua, sicut in caelo et in terra. Panem nostrum quotidianum da nobis hodie, et dimitte nobis debita nostra, sicut et nos dimittimus debitoribus nostris. Et ne nos inducas in tentationem: sed libera nos a malo. Amen.
<<ximg "Pensionado/Geheugen/Dagboek/20061014 Dagboek.png">>
"""
Mercia is voor het eerst uit logeren, en wel bij deze opa en oma. Jochem en Cathrien zijn naar de bruiloft van Lodewijk en Anna op het eiland Pampus. Mercia speelt met de rekstok waaraan de zon en de maan hangen. Draait op haar buik en leest in het boekje "baby ziet...". Ze kraait en kletst tegen de zon en de maan. Vanmiddag nog even een ommetje gelopen in de maxicosi. 

Op het NDSM terrein davert het eerste popfestival dat we meemaken. Valt tot nu erg mee. Wel overal campers in de omgeving. 
"""Vandaag een rustige dag. Vanochtend Sara in bad gedaan terwijl Anne en Cathrien in het dorp boodschappen deden, tompoezen en forellen. Pa en ma arriveerden na tienen. We konden buiten in de zon koffie drinken. Pa had in zijn broekzak een zalfpotje met wybertjes. Cathrien zei tegen mij: papa wil wel een wybertje? Kennelijk met de bedoeling om mij ertoe te brengen aan pa om het zalfpotje te vragen. Naar bed brengen gingen goed. Vanmiddag nog even naar ‘t dorp om een sigaartje te kopen. We zouden daarna nog naar de watermolen fietsen, maar net van huis kreeg ik een stok tussen de spaken waarna Sara en ik bijna over het stuur doken. Omdat Sara nogal huilde zijn we terug gegaan om te kijken of ze zich niet had bezeerd. Viel gelukkig mee. Uiteindelijk een wandeling over de Springendalweg gemaakt. Cathrien wijst steeds het “plastic” aan over de voorraden ingekuild gras.
Vanavond was Cathrien wat dwars bij het eten, wilde extra jus, etc. Is inderdaad moeilijk om dan je goede humeur te bewaren. Systeem van Jan en Janny van “op de trap zitten en terugkomen als het over is” lijkt nog niet zo gek.
22.30 week gepland. Zoeken naar interne houding die basis geeft, "identiteit" wat mij betreft. Heb me wel eens afgevraagd in hoeverre sterke fysieke activiteit leidt tot sterker lichaamsbesef ''&#10148;'' sterker identiteitsbesef. Als dit waar is zou ik meer aan lichaamsbeweging moeten doen. Houding: ernst, "who said it would be fun", woestijngevoel, liefde, je verantwoordelijk weten, verantwoordelijkheidsbesef. Dit zijn volgens mij bruikbare ingrdiënten. 

Moeder was vanavond redelijk van haar stuk over Harry's beslissing om de opleiding tot humanistisch vormingswerker te gaan volgen. In de Christelijke Encyclopedie opgezocht wat humanisme inhoudt. 't Goede moet uit de mens zelf komen, etc. "Gelukkig dat Vader dit niet meer hoefde mee te maken." Harry natuurlijk: "Als Vader nog geleefd had zou ik dit niet gedurfd hebben." Ik kan zo'n opmerking echt niet serieus nemen. Moeder zit er weer mee.

Saar weer de oude. Toch een week nodig gehad om met veel slapen bij te komen van de koortsaanval. 

Vandaag volgens plan Sacks' "Een been om op te staan" uitgelezen. Twee thema's: (1) lichaam - ziel (voor mij 't rijkste hieraan op te hangen: &psi;, filosofie, praxis). (2) rationalisme-empirisme. Vind ik wel duidelijke gesteld maar niet overtuigend opgelost. Zijn Kantiaanse a priori's (zie ook Meijsing) het antwoord op de problemen?

Vanochtend in de kinderbijbel "Woord voor Woord" een uitleg van de verzoeking in de woestijn Hij kiest voor een ander soort leiderschap. Breng dit eens in verband met Perebooms verhalen over modern management: goed kunnen luisteren, goede ideeën signaleren en de ruimte geven, eerder dan de "baas" spelen. Fascineert me i.v.m. stijl van Sanders en bedd dat ik van Vaders leiderschap heb. 

Programma van Cathrien voor het slapen gaan: "Papa, wil je even..."

* schoon water in flesje doen,
* vertellen van de mooie dag,
* speentje nat maken,
* goed instoppen,
* verhaaltje dat net is voorgelezen nog een keer navertellen.

Dit in C's schrift schrijven. Woensdagavond/dinsdag?
Het is zaterdagavond, eind van een hele koude week, met straffe oostenwind en matige tot strenge vorst. Opnieuw worden er plannen gemaakt voor een Elfstedentocht. De zaterdagavond is eigenlijk ook heel geschikt om in het dagboek te schrijven: de week zit erop en je bent een beetje in een "terugblik"-stemming. Deze week waren er veel ekklesia-zaken aan de orde: maandag de Lucas-kring, dinsdag vergadering van het verenigingsbestuur, donderdagochtend enig getelefoneer over de vraag of de Stichting Studentenekklesia fl. 150.000 moet steken in het opknappen van het café De Balie. A.s. donderdagavond vergaderen we erover in de Balie.
 
Na de leesclub van gisteravond bij Gert, die een royaal gastheer was en goed schonk, en de sauna van vanochtend, waar we Pieter van der Ven op de hoogte konden stellen van de blijde verwachting waarin wij verkeren, zit ik nu met een lichtelijk aangeslagen hoofd te schrijven. Misschien helpt een borreltje. Dat gaat beter, samen met Randy Newman op de achtergrond en uitzicht op jou, terwijl je nijver een Engels artikel voor je scriptie zit door te worstelen. De leesclub gisteravond was heel gezellig hoewel mijn “toelichting” niet geheel naar ieders wens verliep. Bij wijze van voorbereiding had ik enkele relevante passages aangestreept om voor te lezen. ‘t Was te veel, in ieder geval volgens jou. Je zei dat je in slaap viel en vroeg of Huub ook eens iets voor mocht lezen. Ik raakte daardoor geïrriteerd en deed er enige tijd het zwijgen toe. Ik raak door dat soort reacties vrij snel uit mijn evenwicht. Net zo als vanochtend toen wij op weg naar de sauna jouw vriendin Christien tegenkwamen. Het feit, dat zij zich in het gesprek uitsluitend tot jou richt en zelfs geen blik in mijn richting werpt ontstemt mij enigszins. Eigenlijk een wat overdreven reactie. Iemand als Dirk laat zich veel minder snel uit het veld slaan door negatieve reacties vanuit zijn omgeving. Dat maakt hem wellicht tot een beter docent. 

<<ximg "/Dagboek/19850216-1 Dagboekk.jpg" width:400px>>

<<ximg "/Dagboek/19850216-2.jpg" width:400px>>

<<ximg "/Dagboek/19850216-3.jpg" width:400px>>
"""
Net een schokkende film van Martin Scorcese gezien, The Departed, over de Ierse mafia in Boston. Uiteindelijk gaat iedereen dood, ook de good guys. Ik vraag me af wat macht is. En wat ik ermee te maken heb. En waarom die film me zo raakt. Nu aan de slag, moed houden, steeds voorwaarts gaan. 
Eens zien of het lukt om op zaterdagavond wat op te schrijven. Deze week werd Sara vijf weken oud. Met haar donkere kijkers lijkt ze al heel veel in zich op te nemen. Ze volgt met haar ogen bewegende objecten. Ze kan haar hoofdje al flink oprichten en van de ene kant naar de andere kant draaien, zowel als ze op haar buik ligt als wanneer ze op haar rug ligt. De eerste tijd ken je elkaar nog niet zo goed, die ervaring had ik met Cathrien ook. Wat voor meisje is Sara? Ze is erg zoet maar kan ook heel driftig huilen. In het ziekenhuis sliep ze heel rustig, ook door allerlei bezoek heen. Nu valt soms moeilijk in slaap (zoals op dit moment). Het schema van voedingen (6 uur, 11 uur, 3 uur, 8 uur, 12 uur) zit er nog niet helemaal in. Het is de bekende gewenningsperiode die we ook met Cathrien meegemaakt hebben. O ja: Sara lacht al steeds meer, nog een beetje onbeholpen, maar heel aandoenlijk. 

De afgelopen weken waren pittig. Anne's herstel vordert langzaam, met de nodige tegenslagen: twee keer borstontsteking, en veel gedoe rond het stoppen met borstvoeding. Zaterdagavond stak de mastitis opnieuw de kop op. Ik halsoverkop naar het OLVG om van Ineke Smalbraak een recept voor antibiotica te halen. Anne met 39 zoveel in bed. Teleurstelling. Overigens zat ik in het ziekenhuis te wachten in de wachtruimte van de kraamafdeling waar enkele vrouwen zaten te praten die al weken lang in het ziekenhuis lagen in verband met complicaties tijdens de zwangerschap. Dat (en veel andere narigheid) is ons gelukkig bespaard gebleven. Hoe dan ook: tijdens mijn 14 dagen verlof (van 28 juni tot 11 juli) was ik druk in weer als huisman. 's Ochtends om 6 uur 15 op, Cathrien losmaken uit haar de dwangbuis (slaapzak omgekeerd, met dekenklemmen aan het voeteneind vastgemaakt in verband met Cathrien's vroege ontwaken en uit bed klimmen), strijken tot ± kwart voor 7, Cathrien aankleden, zelf aankleden, ontbijt klaarmaken, kopje thee met beschuit voor Anne, ontbijten zodat we met dit onderdeel om ± 9 uur klaar zijn. Dan komt Gerrie die nog een kopje thee mee drinkt en Cathrien onder haar hoede neemt. Was in de machine, was ophangen, afhalen opvouwen. Boodschappen doen. Tijdens Cathrien's middagslaap je ook even een short nap. Eventueel vast beginnen met eten koken, anders is er geen tijd om met Cathrien nog even de de deur uit te gaan. Met het mooie weer van de laatste weken is de zandbak in het Vondelpark of zijn de ijsberen in Artis gewilde bestemmingen. Het is zaak om op tijd terug te zijn. Om 5 uur breekt het spitsuur aan. Eten koken voor Cathrien, koken voor ons zelf, Cathrien eten geven, Cathrien in bad en bed, zelf eten, afwassen, opruimen en koffie zetten. Meestal is het half 10 voor we aan de koffie toe zijn. Het is een ieder geval een goede ontbreking van het dagelijks werk. Het eist al je aandacht op, net zoiets als zeilen of berg beklimmen. Volgens Anne heb ik de prijs voor de "huisman van het jaar" verdiend.
11.15 uur. Onze riante driepersoons kamer in hartje Budapest bevat een stevige schrijftafel waarop ik nu enkele indrukken aan dit verslag toevoeg.

Gisterochtend om 8 uur uit Straubing vertrokken. Na ±100 km en de grensovergang met Oostenrijk hield de snelweg op bij Schärding, een middeleeuws Kneipp Kurort aan de rivier de Inn. Daar even wat boodschappen gedaan waarbij Dirk vrijwel onmiddellijk de tas in een winkel liet staan, het kort daarna bemerkte en aan Joan vroeg: waar heb jij de laten staan Joan? Na enig zoeken bleek de tas in de laatste winkel te staan waar Dirk papieren zakdoekjes had gekocht. Daarna koffie gedronken met een bosbessentaartje en weer verder. Het oponthoud had wat veel tijd gekost zodat we rond half twee bij Wenen arriveerden en in een reusachtige wolkbreuk terecht kwamen. De weg veranderde in een rivier en we moesten langzaam rijden. Uiteindelijk kwamen we om 3 uur bij de grens aan waar we zonder noemenswaardig oponthoud konden doorrijden. Het traject naar Budapest vergde nog een 3 uur zodat we om precies 6 uur bij het hoofdkantoor van Medicor arriveerden arriveerden waar Hedy en Gyula ons al met spanning opwachtten (ik had bij de grens opgebeld dat we onderweg waren). Gyula nam het initiatief over. Snel naar onze kamer in de Vörösmárty straat waar een oud dametje ons verwelkomde, snel op aanraden van Gyula boodschappen gedaan in de grootste en drukste supermarkt van Budapest op Marx tér. Daarna met metro en bus naar de burchtheuvel. Het is geweldig leuk om een stad opnieuw te bezoeken, waar je al eerder een tijd geweest bent. Je voelt je er werkelijk een beetje thuis. Onder aanvoering van Gyula een flinke tocht over de heuvel gemaakt, waarna we om 10 uur een restaurant aandeden. We vonden er de hond in de pot maar liepen wel twee vrienden van Gyula tegen het lijf met wie we in de kelder van het restaurant gezellig gepraat hebben. Een van hen was een Rus, die een week voor studie in Budapest was. Van hem heb ik meer over computers in de Sovjet Unie gehoord dan van de Russische vertegenwoordiger in de Unesco groep. Om 1 uur waren we weer thuis waar we ons in onze riante kamer na een glaasje palinka te ruste begaven.
<<pdf "Pensionado/Geheugen/Dagboek/20061118 Dagboek.png">>
!!! Vijftiende vakantiedag

Bizarre dag. Vanochtend nog even ons rondje gelopen en gezwommen. Keurig om 9:45 weggereden. Nog even een koffie in het eerstvolgende dorp. Vlotte reis zonder files naar Bologna. Rond 13 uur even koffie drinken bij een wegrestaurant. We zagen dat we een lekke band hadden. Waar en waardoor is dat lek ontstaan? Misschien op de hobbelige wegen in de Marken? Wat was er gebeurd als de lekkage op de snelweg was ontstaan? Hoeveel risico hebben we feitelijk gelopen? Nou ja, moeilijk te beantwoorden vragen. In ieder geval kwam de Italiaanse hulpdienst rond 14.20. Het werd meteen duidelijk dat de auto niet meer gerepareerd kon worden op zaterdagmiddag. Auto op de wagen van de hulpdienst, wij voorin, en naar de plaats waar zich de garage bevindt, Argelato.

<<ximg width:500px "/Foto's/2021 Italië/0918 Auto opgesleept.jpg">>

Naar Albergo Bruna, een uiterst eenvoudig maar schoon onderkomen met een vriendelijke landlady. Koffers uit de auto. De man van de soccorso stradale verdween met de auto, nadat ik een aantal formulieren had ondertekend, geen idee wat daar op stond. De auto pakken we maandag weer op. 

Even gerust en rondgelopen, kaartjes gekocht voor de trein naar Bologna, mooie rondwandeling gevonden op internet. Onze Albergo is op zaterdag dicht ten behoeve van feesten en partijen. Gelukkig konden wij er wel eten. De vriendelijke landlady blik de dochter van Bruna, één van twee 83/86-jarige zusters die actief zijn in de zaak. De 86-jarige oom heeft nog wel zijn barrista-pak aan maar zit verder vooral voor de tv. Vanavond terug omdat Bologna met 6-1 verloor van Juventus. Prima maaltijd, lasagne. Ondertussen arriveerden de feestgangers. De jarige job kwam rechtstreeks uit de sportschool. Zijn zeer kolossale, in het wit geklede moeder was volgens de oudere barrista vroeger slank en knap. Vrolijk feest dat tot een uur of 1 doorging, ook in de tuin onder ons raam. Zo beleef je nog eens wat.

Zaterdagochtend 9.25 uur. Op de radio een kleine cursus verstekzagen voor de doe-het-zelver. Sara en Cathrien spelen beneden. Sara heeft veel meer plezier in het leven gekregen nu ze goed kan lopen. Ook de onderlinge ruzies zijn een stuk minder geworden. A.C. wil in Amstelveen naar huizen gaan kijken. Zoekt wat meer rust en groen in de directe omgeving. Gemiddeld 40 kg borrelnootjes per jaar, 40 - 70% vet. Waar moet het naar toe?

Ik probeer tijdens het werken wat meer "afstands"-momenten in te bouwen voor terugblik en planning. Kost heel veel moeite, probleem van ontevredenheid na afloop proberen terug te dringen. Achteraf denk je vaak: teveel tijd besteed aan niet inhoudelijke zaken (computer, administratie, opruimen). Terugblik en planning is heel nuttig, maar het lukt gewoon niet steeds. Kennelijk een soort achilleshiel in mijn manier van werken. Toch proberen door te zetten! Dit weekend iets over Berend opschrijven.
<<ximg width:% "/Foto's/20161119_110122.jpg">>

Intussen ligt de gietvloer er beneden in, werkt internet en de tv, hebben Geert en Linda een vloerkleed, een kastje en twee stoelen gebracht en is boven de vloer nog eens grondig opgeschuurd. Anne heeft een mooie lamp voor de vide gezien. Het begint er op te lijken. Intussen is Donald Trump zijn staf en regering aan het vormen. Allemaal rabiate rechtse racisten, ook antisemieten. Trump heeft geen ideologie behalve het kapitalisme. Hopen we. 
Gisteren ontving Huub Oosterhuis een eredoctoraat aan de Vrije Universiteit. Hij begon zijn dankwoord met het lied "De Roomse horden rukken aan om 't vrije VU corps neer te slaan". Verdiende eer voor de VU en voor Huub. Proberen in denken en doen meer afstemming te vinden. Ik handel meer zoals God het wil dan dat ik dat doe. Dit weekend ook inventariseren welke teksten ik nog heb van Moeder. Verder Wim en Sam bellen. Misschien Cees Boodt? Veel inhoud als het kan.
"""Na twee dagen van huilebalken ontstaat nu een ander gevoel: een soort “sadness”. Ik schrijf dit in bed op mijn oude kamer op de F.H.-laan in Ermelo. Beneden mij in de achterkamer rust vader. Hij ziet er nog heel gaaf uit. Moeder zegt “rustig”, ik vind zijn mond toch wel een beetje vertrokken, zoals op de momenten waarop hij lijdelijk moest toezien dat de dingen niet de door hem gewenste loop namen. De reconstructie van de nacht van woensdag op donderdag doet toch vermoeden dat hij meteen na het plassen om ± 3 uur is gestorven en zelf de houding heeft ingenomen waarin hij nu in de kist ligt. Dokter Holtrop zei vanmiddag nog eens: hartzwakte.

Moeder is heel beheerst, heeft het haar netjes in permanent (zoals Vader het zo graag gezien zou hebben). Ze huilt (nog) niet veel en praat bijna onophoudelijk tegen iedereen over goede en kwade dagen. Ze benadrukt veel verschillen tussen haar en Vader. Hopelijk houdt zij het in haar eentje nog een tijdje vol. De schriftelijke reacties zijn hartverwarmend, o.a. van pater van Kilsdonk. Veel mensen zeggen vader nog pas gesproken te hebben.
"""Vanochtend met Cathrien naar het aquarium geweest. Ze vond de grote vissen wel een beetje griezelig. Liever de kleintjes. Bij een aquariumbak stond het water laag, met erboven waterplanten etc. “Hé, water”, riep Cathrien opeens. Buiten was het erg winderig. Toch nog even naar de ijsberen, de gorilla’s en de nijlpaarden. Cathrien vond het allemaal erg leuk en kwam opgewekt keuvelend thuis. Ze werd na het middagslaapje huilend wakker wat ik pas na een tijdje hoorde (babyfoon niet aan!). Ik was net met Sara bezig. Naar boven. Cathrien hevig overstuur. Onduidelijk wat er mis was. Beneden klaagde ze over oorpijn. Finimal-tabletje deed wonderen. Oorpijn zakte snel af. Nu is het 11 uur. Cathrien is erg onrustig, nog weinig geslapen. Werd huilend wakker met pijn aan haar hand (?). Misschien erop gelegen. Wat is er aan de hand, wat is de oorzaak? Ik houd het erop dat ze geschrokken is van de oorpijn (misschien in Artis opgedaan) en nu een beetje bangig is. Hopelijk kan ze de slaap vatten. Het is nu rustig. Er zijn weinig dingen die Cathrien nog niet kan zeggen. Ze gebruikt “geworden” goed, is steeds aan het “waarom”-men. Zegt soms “hoor” of “hè” aan het eind van een zin. Af en toe: “Weet je wat, …” en dan volgt een ontboezeming.
"""IJs!
Raar idee dat we weer aan een nieuw jaar begonnen zijn. Donderdagavond, oudejaarsavond, waren Carolien en Kier Elbers hier om even te proosten op het nieuwe jaar. Weinig vuurwerk vanwege het vuurwerkverbod (corona) maar wel mooi vuurwerk! Nieuwjaarsdag kwamen Cathrien, Sara en Toon met de kinderen op de koffie, heel gezellig!

|<<ximg width:400px "/Foto's/IMG_20210102_222103.jpg">>|<<ximg width:400px "/Foto's/IMG_20210102_222234.jpg">>|
|<<ximg width:400px "/Foto's/IMG_20210102_222300.jpg">>|<<ximg width:400px "/Foto's/IMG_20210102_222338.jpg">>|
"""
Bijzonder om op Cathrien's verjaarsdag voor het eerst bij haar gelogeerd te hebben. Vandaag naar Torre Pali. Hopelijk verloopt de reis een beetje volgens plan. Wat zal ik blij zijn als we in Villa Morocco zijn aangekomen. 

Verhuizing ligt al weer twee dagen achter ons. Nog even een terugblik. Om 8 uur stonden de mannen voor de deur. Vriendelijke heren. Ramen bekeken, start gemaakt op de slaapverdieping. Na enige tijd kwamen de eerste dozen naar beneden. Intussen een start met uit elkaar halen van de garderobekast. Ging allemaal rustig door, maar het werd al snel duidelijk dat we 11 uur niet zouden halen. Op dat moment waren man&bus en Wouter besteld. Man&bus verzet naar twee uur. Rond half 1 was de container vol. Goed moment voor de lunch me een broodje kroket. Toen kwam de klad er een beetje in. Nieuwe container arriveerde pas om 14:30 uur. Toen moest een groot deel van de benedenverdieping nog, alle grote stukken. Intussen voorrang gegeven aan de planten op het dak, zodat de mannen met de bus weg konden. Om half vijf, het was inmiddels stevig gaan regenen, kwam de piano als laatste naar beneden. Toen moest ik toch wel even slikken. Nog verder de vloeren schoongeveegd en naar Cathrien. Wouter aan de telefoon: waar is jullie huisje? Ze bleken in Bergen te staan. Weer terug gedirigeerd. Meneer de Smalen stond braaf te wachten met de sleutel. 

Toen we enigszins afgepeigerd bij Cathrien waren neergestreken belde opeens de headhunter op met wie ik had gesproken over de functie van voorzitter RvT Amos. 
Gisteren een paar mooie zinnen in The Apprentice van Iris Murdoch gelezen: Schuldgevoelens kunnen slecht uitwerken omdat ze verlammend werken. Terwijl er zoveel werk te doen is. Probeer alles wat je doet goed te doen, iets beter te doen. Dat vandaag maar eens proberen.
Overal rellen in het land. Jongeren gooien met zwaar vuurwerk naar de politie. In Rotterdam werd de politie in het nauw gebracht en moesten agenten gericht schieten om zichzelf in veiligheid te brengen. 

Intussen beschimpen Forum kamerleden andere volksvertegenwoordigers. "Jouw tijd komt nog. Er komen tribunalen". Forumleider Baudet heeft zijn partij gezuiverd van alle leden met nog enig gezond verstand. Hij wordt nu onringd door types als Freek Jansen en Pepijn van Houwelingen (zie boven). Volgend jaar willen ze toeslaan bij de gemeenteraadsverkiezingen, om te beginnen in Urk en Volendam.

Er breken sombere tijden aan.
"""
Nou, alles is al weer achter de rug. Zit nu alweer achter mijn laptop, de lunch achter de kiezen. Uiteindelijk moest ik me gisterochtend om 9 uur melden. Anne bracht me, dit keer alles meegenomen. Anne ging snel weer terug vanwege een afspraak bij de schoonheidsspecialiste, verjaardagscadeautje via Jo Cadeau.

Om half 11 kwam Cathrien nog even langs voor de laatste steun in de rug, dat was erg fijn, zoals steeds trouwens de afgelopen periode. Cathrien wordt wel echt een zorgzame dokter, ze heeft alle sociale trekken van Anne meegekregen. Bij Sara ligt dat niet anders maar Sara is misschien wel iets analytischer ingesteld. Ik denk dat ze in het ziekenhuis net zo oplossingsgericht met haar patiënten omgaat als Anne dat doet.

Om 11 uur een handvol pijnstillers en een slaaptablet naar binnen gewerkt. Het operatiehemd aan op de rug en de schouders dichtgeknoopt en een soort gazen onderbroek. Toen met twee verpleegsters naar de pre-operatie ruimte. Daar receptors opgeplakt, muts op, saturatiemeter om je vingertop. Je bent dan in een soort voorgeborchte, een wachtkamer van de operatiekamers. Het is een va-et-vient van bedden met patiënten erin. Verpleging draagt donkerblauwe kleding met Operatiekamers AMC op de rug, een uitverkoren volkje.

Om ongeveer 10 voor 12 de operatiekamer in, mooie ruimte, recent opgeknapt. De gebruikelijk E.R. uitrusting, grote lamp in het midden, en verder een enorme hoeveelheid apparatuur en mensen. Ik denk dat er wel een stuk of 10 mensen rondliepen. Je klimt zelf van je bed op de operatietafel. Dan wordt het infuus aangelegd, ging bij mij de eerste keer mis. Een bijzonder aardige donkere jonge anesthesiste-in-opleiding, een oudere dandy-achtige anesthesist die de zorgen van de jonge collega vrolijk wegwuifde. Je hebt de neiging om je in de conversatie te mengen, ik deed dat geloof ik ook, maar mijn herinnering begint te vervagen. Dan stelt de operateur zich voor, Prof. Dr. Jean de la Rosette, een man met een triomfantelijke kop en een klinkend cv. Precies met die kop boven mij vroeg hij of ik wist waar ik voor kwam. Die vraag kon ik wel beantwoorden, evenals de vervolgvraag: en langs welke weg zullen we dat aanpakken, vandaag een keer via de mond proberen? Ik kan me niet meer herinneren wat ik daarop heb geantwoord. De professor trok zich met zijn gevolg terug en de anesthesisten gingen aan het werk. Nu valt om voor de hand liggende redenen mijn geheugen stil. Over het wakker worden herinner ik me vaag dat het onrustig was. Ik herinner meer samenhangende beelden van de verkoever waar ik weer een beetje om me heen begon te kijken, nog wel enorm slaperig.

<<ximg width:% "/Dagboek/20131221 Jean de la Rosette.jpg">>

Het ging al weer snel terug naar de afdeling, kamer 145. Een ontzettend aardige zuster, Amarencia (?) installeerde me weer. Berichten naar Anne, Sara en Cathrien die er ook al snel waren. Het was intussen rond 16 uur. Ik bleef vrij slaperig maar kon wel informeren naar Sara's sollicitatiegesprek voor een PhD-plaats. Ze had het een lastig gesprek gevonden, was er niet heel positief over (maar dat hebben we vaker met Saar meegemaakt).

Na afloop wat gelezen (mooi interview met Frans Timmermans in Vrij Nederland), zeer smakelijk gegeten, en in slaap gevallen. Om 20 uur weer wakker, een stuk helderder. Meteen de behoefte om iedereen te gaan bellen. Mieke, Harry en Thole, en Anne-Carien natuurlijk. Toen een film bekeken (Miss Marple: The Mirror Cracked from Side to Side) en het Journaal.

Vannacht niet echt doorgeslapen. Ontdekte opeens dat er een verzameling pleisters en een stuk elastiek aan mijn rechterknie vast zat, aan de ene kant, en aan de katheter aan de andere kant. Vanochtend vertelde dokter van Ulden dat dat elastiek bedoeld is om de wond te taponeren: de ballon van de katheter wordt zo tegen de wond aangedrukt waardoor het bloeden wordt gestelpt.

Vanochtend gedoucht waarbij de infuusnaald losschoot en een klein bloedbad in de badkamer ontstond. Een vaardige zuster verhielp dat probleem weer snel. Nog een keer bloed afgetapt, temperatuur opgenomen en elastiek verwijderd. Dokter van Ulden vertelde dat er 44 gram prostaatweefsel was weggesneden. Vond zij een aanzienlijke hoeveelheid. Het weefsel is opgestuurd naar het lab. Hopelijk komt daar niets uit. Ik heb in principe over zes weken een afspraak op de poli. Als er problemen zijn hoor ik dat eerder.
Gisteren is ''Trump'' beëdigd als 45e president van de Verenigde Staten  Hij hield een toespraak die klonk als een verkiezingstoespraak. De kern: //America First!// Verder zei hij dat dit niet zomaar erin overdracht van de macht was. Dit keer gaat de macht van Washington naar het volk. Ik vond het bedreigend en beangstigend. Het  begint steeds meer op Hitler te lijken. Gelukkig heeft Trump geen ideologie, en vindt er met zijn goedkeuring nog geen geweld op straat plaats. Zolang leger en politie nog te vertrouwen zijn. Er waren volgens de commentatoren veel minder mensen op af gekomen dan bij de inauguratie van Barack Obama.

Gisteren ook de boekenkast boven in elkaar gezet en gevuld. De meeste boeken staan nu op hun plaats.Wel weer een belangrijke mijlpaal. Vandaag de laatste kast in elkaar zetten.
Koud en zeer zonnig begin van de lente. Vanmiddag toch even met de jas aan buiten gezeten. Gaat hier stap voor stap de goede kant op. Allebei 37.1 vanavond. Gaan we de dans ontspringen? Buren heel behulpzaam met croissants en noten. Met name Mark en Ruben.

Vanmiddag Sara even aan de telefoon. Klonk al een stuk beter dan gisterochtend toen Hagar Jobse haar de stuipen op het lijf had gejaagd ivm Gerry. Saar heeft eerste versie van complete manuscript ingeleverd! Komt vast weinig commentaar op van de begeleidsters. Wat knap!
"""Dag zonder de kinderen! Uitstapje naar Tilburg ivm bruiloft Guus. Op de heenweg in de auto geprobeerdet gevoel om plannen te maken. Draaide uit op discussie over geld. Irriteert mij omdat ik zelf heb niet zuinig genoeg te leven. Moet eigenlijk allerlei abonnementen opzeggen maar kom er steeds niet toe. Nu toch snel werk van maken. Vrij Nederland? De krant? De bruiloft van Guus en Els was heel gezellig. In het stadhuis een uitvoerige toespraak van de ambtenaar, waarin Guus’ vader ook genoemd werd. Daarna hebben we wat rondgereden en kwamen we uiteindelijk in Breda uit: gezellig stadje. Tijdens de receptie (fraai gedicht van Hans de Haan) met Sipke en Ineke afgesproken om te gaan eten in Turnhout. Eten was heel gezellig en duur. Kwamen laat terug op het feest van Guus waar de stukjes al begonnen waren. Mooi portret van beiden. Veel overeenkomsten zoals Els opmerkte: beiden biefstuksocialisten, veel vriend(innet)jes. Geanimeerd Brabants feest. Om 11 uur vertrokken en om 1 uur doodmoe weer aangekomen in Amsterdam.
<<ximg "/Dagboek/20160423 Remco Campert - Denkend aan België.png">>
"""Half 10 ‘s avonds. Sara en Cathrien liggen weer tevreden en voldaan in hun eigen bedjes. De logeerpartij is goed gegaan. Sara heeft gisternacht zelfs doorgeslapen van 8 uur ‘s avonds tot 6.15 uur de volgende ochtend. Ze moest net even brullen toe ze in de wieg lag. Het speeldoosje van moeder kalmeerde haar. Ik liet haar net bij het uitpakken uit de bak vallen, had opeens maar een hengsel in de hand. Flinke schrik maar gelukkig niets bezeerd. Onderweg tijdens een wolkbreuk bijna in een kettingbotsing beland. Zat wel even te trillen achter het stuur.

De 14-daagse vakantie in Ootmarsum was al met al een groot succes. De boslucht, de mooie omgeving, het fietsen, het gezellige huisje. Ook het feit dat Cathrien en Anne er zo van genoten. Cathrien kon heerlijk buiten spelen en heeft veel geleerd: koeien, paarden, varkens, tractors, bosbessen, bramen, klompen, modder. Wat kan Cathrien met modder spelen. Vrijdagochtend toen het zo warm was veranderde het badje snel in een zwarte modderpoel terwijl Cathrien steeds opnieuw moddertaart maakte. Ook Sara is in de vakantie veel meer mens geworden, een ongecompliceerde schat die veel kan lachen en driftig kan brullen en er steeds graag bij wil blijven. Ook Gerry’s komst twee maal was reuze gezellig. We konden een paar keer met vader en moeder optrekken zodat zij de gelegenheid hadden om met hun jongste kleindochter kennis te maken. Cathriens oordeel over bier, “lekker pittig”, maakte vader steeds weer aan het lachen. Ik vond de kennismaking met De Wiemsel ook interessant, wat een luxe-paradijsje. Het is echt iets van deze tijd, die luxe vakantieoorden, die ondanks hun hoge prijs veel mensen trekken. Een soort elitair escapisme. Het trekt mij niet. Geen kwestie van calvinistische zuinigheid. Mijn probleem is dat dit soort vakantieoorden vrij los van hun omgeving staan: ze zouden ook in Broek op Langedijk of Ter Apel kunnen staan.

Voor mezelf was de vakantie ook een leerschool. Achter de vakantieziekte zat meer: een zekere krampachtigheid en zwaartillendheid. In een psalm staat: hij geeft het zijn geliefden in de slaap. De betekenis van deze boodschap wil niet goed tot mij doordringen. Toch is zo’n vakantie onmisbaar omdat je een breuk forceert. Je dwingt jezelf los te komen. Anne ziet dat beter dan ikzelf. In ieder geval sta ik nu weer fris tegenover m’n omgeving: Anne, Sara en Cathrien, de familie, de vrienden, het werk. Ik heb er weer veel zin in.
<mh3>zaterdag 23 september 2017</mh3>
We liggen weer in de haven van Leros. Vannacht in Patmos gelegen.
Vandaag een heel gezellige dag met Mercia in Egmond gehad. Het is nog steeds heel koud maar gelukkig ook zonnig. Vanmiddag nog even naar het strand geweest. Mercia houdt heel erg van tekenen. Gelukkig had Anne en nieuwe kleurdoos, tekenschrift en gum en puntenslijper gekocht, waar ze enthousiast mee aan de slag ging. Ze kletst je nog steeds de oren van je kop maar maakt steeds mooier constructies, zoals 'ik zou nog wel een appel lusten'. Ook interessant hoi ze bespreekt dat ze nu een boterham met honing neemt terwijl dat thuis niet mag. Fascinerend zoals ze zich ontwikkelt.
!!! Derde vakantiedag
Reisdag. 's Ochtends rond 9 uur vertrokken uit Varenna. Vlotte reis, zonder grote obstakels. Hoewel de TomTom-mevrouw ons regelmatig waarschuwde voor ongevallen en obstakels deed zich geen enkel probleem voor. Hier en daar wat trafico intenso. We waren rond 16.30 hier in San Casciano dei Bagni.

De toren is een speciaal geval. Alle kamers boven elkaar dus veel trappen lopen. Beneden koel, op zolder waar het slaapvertrek is erg warm. Dus de matrassen twee verdiepingen naar beneden gesjouwd. Daar ging het slapen redelijk goed. Blaffende hondjes waren niet echt hinderlijk. Er zit hier ergens een wielewaal in de bomen die er vrolijk op los fluit.

Even geslapen en door het stadje gelopen. Redelijk levendig, het plein is hier om de hoek, erg leuk. Eerst geborreld bij bar Centrale en daarna gegeten bij Daniela, erg lekker. We gaan ons hier wel vermaken.
Vanavond voor de t.v. zitten slapen, om half 10 in bad, om half 11 Sara de fles gegeven. Toen ik vanavond Cathrien aan het uitkleden was om in bad te gaan begon Sara te huilen. Ik zei tegen Cathrien: Sara is haar speentje kwijt, wil jij hem erin stoppen? Cathrien zei meteen ja en voegde eraan toe: dan moet wel even de stoel naast de wieg. Zo gezegd, zo gedaan. Cathrien duwde heel handig het speentje erin en draafde terug naar de badkamer. Ze was nog maar net terug of Sara begon weer te huilen. Cathrien meteen rechtsomkeert. Dit herhaalde zich nog een keer of 4 tot ik Sara maar even in ons bed heb gelegd. Cathrien vindt het ontzettend leuk om zo met haar zus om te klungelen.

Sara vanochtend voor het eerst gemasseerd. Borst en buik vond ze niet zeer aangenaam maar armen, benen en rug wel. Daarna wegen (4300 gram) en in bad. Ze was heel rustig in bad. Vervolgens de fles leeggedronken en om half 11 in bed. 't Nieuwe schema bevalt haar kennelijk goed: 6/7 -- 10-- 12/1 -- 4 -- 7/8-- 11. Ze heeft goed geslapen vandaag. Hopelijk slaapt ze vannacht door.

Een wonder zo snel Anne vanaf dinsdag is opgeknapt. Ze is opeens veel opgewekter en kan veel meer aan. Een hele opluchting. Nu de wond nog dicht.
"""
Laatste weekend op de Frans! We gaan naar Diepenveen om Marjolijn en Richard op te zoeken. Vanmiddag en vanavond vrij. Feestelijk weer. Die stomme Britten trekken zich terug uit Europa. Het blijven eilandbewoners. 
!!!Twee en twintigste vakantiedag

Reisdag. Vanochtend op tijd vertrokken, rond half acht vertrokken, rond kwart voor tien bij Milaan, rond 13 uur bij de Gotthard tunnel. Daar wel even een uur oponthoud door file en langzaam rijden. Rond vijf aangekomen in Malterdingen. Lekker gegeten en goed geslapen. 
"""  
Het was deze week heerlijk weer. Echt zomers, alle bomen in het blad. Anne Carien is gisteren naar Deventer geweest. Er moest een lastige beslissing worden genomen. In verband met de tumor op pa's stemband gaat het om de vraag welke therapie nu moet worden gekozen. Niets doen is geen optie, opnieuw een laser behandeling lijkt ook geen goede keuze. Eigenlijk is er maar één mogelijkheid: bestralen gedurende zeven weken elke dag. Pa is er uiteindelijk mee akkoord gegaan, maar het is wel duidelijk dat de behandeling gestopt wordt zodra pa het niet meer aankan. Er moeten nu eerst nog enkele voorbereidingen worden getroffen. Waarschijnlijk kan de behandeling starten half juni. Sara is deze week teruggekeerd uit Boedapest waar ze een leuk lang weekend met Cyclades heeft doorgebracht. Sara wordt volgend jaar ab-actis van het bestuur van Cyclades. Cathrien zit nog steeds in Sint Petersburg. Ze genieten daar van het mooie weer en de stad. Op Tweede Pinksterdag komen ze met z'n allen weer terug. Met Berend gaat alles zijn gangetje. Deze week moest hij een interview toets maken. Anne Carien is druk bezig met het uitvoeren van metingen bij polio patiënten. 
  
Ik zie dat je ook gewoon in een bestaande applicatie tekst kunt invoegen.  Je hoeft dus niet per se het Dragon Notepad te gebruiken. 
Wat een dag! Wat een mooie dag! Vanochtend om ½5 voelde Anne regelmatige weeën, om de 7 minuten. Om 7 uur de praktijk van Astrid Limburg gebeld. Nori Jorna kwam om ½8; 3 cm ontsluiting. Kinderen in bad gedaan en ontbeten. Om kwart over 9 Gerry en Siep gehaald. Anne was intussen op Advies van Nori in bad gaan zitten. 't Ging al vrij hevig toe. Nori gebeld en na enig wachten om kwart over 10 aan de lijn. Anne had al enige persdrang. Nori concludeerde dat we met een vaart naar het OLVG moesten. Wij in vliegende vaart erheen. Gelukkig weinig verkeer. Na een snelle rit en dito rolstoeltransport door OLVG in de verloskamer aangekomen. Conclusie: volledige ontsluiting, persen. Na een of twee weeën had ze de slag te pakken en ging het volle kracht vooruit. Om 10 over 11 lag Berend op de wereld, gezond en wel. Anne niet erg ingescheurd. Wij allen dolgelukkig. 't Is nu 10 over half 1 's nachts, we proberen te slapen. 
Gisterochtend heb ik door een kleine, maar kundige chirurgische ingreep mijn vermogen tot het creëren van nakroost prijsgegeven. Kortom: sterilisatie. Ik zit nu nog met een enigszins beurs lichaamsdeel maar heb er verder geen hinder van. Was dit een waardige slotactie van deze vakantie? Zeker als daarmee het welbevinden van Anne is gediend: zij hoeft over enige tijd geen voorzorgsmaatregelen meer te nemen waardoor haar maandelijkse corvee regelmatiger zal gaan verlopen.  Over enige tijd: hoewel de vitale verbinding is verbroken (een stukje er tussen uit genomen, bij uiteinden dichtgebrand en de toevoerbuis ook nog eens omgeklapt en vastgemaakt) moeten de nog aanwezige spermacellen in de afvoerbuis worden afgevoerd, bij voorkeur door massage, zo vermeldt de folder. Het uiteindelijk streven is volledige steriliteit.

Wat heeft deze vakantie mij geleerd? (1) Het meer openlijk genegenheid betuigen aan Anne helpt en komt onze verhouding absoluut ten goede. (2) Je tijd nuttig besteden blijft een belangrijk levensdoel. Wat “nuttig” is laat ik nu kortheidshalve even onbesproken. Dat ik allerlei nuttige taken niet aanvat is voor een belangrijk deel het gevolg van lafheid. Lafheid kenmerkt mijn handelen zeer dikwijls. Het bezwijken voor de verleiding van genotmiddelen is voor een deel een kwestie van lafheid, niet durven beginnen aan nuttige taken. Gebrek aan durf verlaagt de aantrekkingskracht van nuttige taken en verhoogt de aantrekkingskracht van afleidende taken. Je kunt echter de aantrekkelijkheid van nuttige onmiddellijk heel sterk verhogen door ... eraan te beginnen! Gewoon een heel klein stapje in de goede richting zetten. In het algemeen wordt daardoor een soort positieve feedback loop gestart. Hoe langer je aan een nuttige taak werkt hoe meer plezier je erin krijgt. Op een zeker ogenblik zakt dat natuurlijk weer af en moet je stoppen. Ergens aan beginnen en ergens mee stoppen zijn vergen allebei wilskracht. In het eerste geval door een tekort aan aantrekkelijkheid, in het laatste geval door een teveel aan motivatie! Dit is iets wat ik ook aan de studenten duidelijk zou kunnen maken. Diverse studenten hebben na afloop van beide voorgaande studievaardigheidscursussen gezegd: ik doe te weinig met de nieuwe methode, maar ik studeer weer, dat is het belangrijkste. Ik ben weer bezig. Dat gevoel geeft een enorme kick. Kennelijk durfden ze steeds minder opnieuw te beginnen. Het Chinese spreekwoord “Elke reis begint met de eerste stap” zou voor hen veel duidelijker moeten worden! Goed zo, nu even verder met: citaten uit Montaigne halen (eerst lezen, dan computer), Meno uitlezen en twee citaten in dagboek zetten, pasta maken. Intussen de radio aan voor een vrolijk muziekje.

Verder uit Montaigne’s Essays:

Uit “Over de wisselvalligheid van onze daden”: Wie zich erop toelegt de menselijke handelingen te beschrijven, komt voor de grootste problemen te staan als hij ze verzamelt en onder één noemer wil brengen, want meestal zijn ze verregaand met elkaar in tegenspraak dat het lijkt of ze niets met elkaar te maken hebben.

Idem: Ik kan in niets zo moeilijk geloven als in de standvastigheid van de mens en vind niets zo aannemelijk als zijn onstandvastigheid. Wie het gedrag van de mens op de keper beschouwt, elke daad afzonderlijk, heeft meer kans tot de waarheid te komen.

Idem: Want volgens een klassieke schrijver valt alle wijsheid in één woord samen te vatten, al onze levensregels in deze ene: wat men wel en wat men niet wil, moet altijd hetzelfde zijn. [Seneca, Brieven aan Lucilius, XX, 5.]

Idem: Er is niets wat ik met volledige zekerheid over mijzelf kan zeggen, ronduit, in één woord, zonder omwegen of verwikkelingen. De term Distingo geldt voor heel mijn logica.

Idem: Als hij bang is voor de schande, maar onverdroten in de armoe, als hij terugdeinst voor het lancet van de dokter, maar het zwaard van de tegenstander onversaagd tegemoet treedt, is het niet de man maar zijn daad die te prijzen valt.

Idem: “Want niets blijft aan zichzelf gelijk dat niet voortkomt uit een vast beginsel.” [Cicero, Gesprekken in Tusculum, II, 65.] Nihil enim potest esse aequabile, quod non a certa ratione profiscatur.

Idem: Het is niet verwonderlijk, zegt een schrijver uit de Oudheid [Seneca, o.c.], dat het toeval zoveel macht over ons heeft, want wij leven bij de macht van het toeval. Iemand die tevoren niet in grote trekken een vaste koers voor zijn leven heeft bepaald, kan in zijn afzonderlijke handelingen onmogelijk orde aanbrengen. Geen mens kan de stukken juist leggen als hij geen beeld van het geheel in zijn hoofd heeft. Waarom zou je je voorzien van verf als je niet weet wat je moet schilderen? Geen mens stelt een vast plan voor zijn leven op, wij denken er slechts beetje bij beetje over na. Een boogschutter moet eerst weten waarop hij mikt en vervolgens zijn hand, de boog, de pees en de pijl in de juiste stand brengen. Onze plannen gaan teloor omdat ze geen leidend idee en geen doel hebben. Geen enkele wind waait gunstig voor de schipper die geen haven van bestemming heeft.

Nu even overstappen naar de Meno van Plato. Enkele relevante citaten, bruikbaar in een stuk over de CKT-methode. Vertaling uit Internet gehaald. Vertaler: Benjamin Jowett.

Meno: And how will you enquire, Socrates, into that which you do not know? What will you put forth as subject of enquiry? And if you find what you want, how will you ever know that this is the thing which you did not know?

Socrates: I know, Meno, what you mean; but just see what a tiresome dispute you are introducing. You argue that man cannot enquire either about that which he knows, or about that which he does not know; for if he knows, he has no need to enquire; and if not, he cannot; for he does not know the very subject which he is to enquire.

Socrates’ antwoord komt erop neer dat hij gelooft in reïncarnatie. De ziel is onsterfelijk. “For all enquiry and all learning is but recollection”.

Let op: ik heb het dogma van de onsterfelijkheid helemaal niet nodig om een eind met dit argument mee te gaan. Leren is voor mij geen recollection maar reflection. De herkenning treedt niet op omdat de leerling al wist wat hij moest leren maar omdat hij beschikt over de nodige ervaringskennis als basis voor het abstractieproces. Intussen is Socrates erg bang dat de paradox van Meno leidt tot luiheid.

Socrates: Some things I have said of which I am not altogether confident. But that we shall be better and braver and less helpless if we think that we ought to enquire, than we should have been if we indulged in the idle fancy that there was no knowing and no use in seeking to know what we do not know; -- that is a theme upon which I am ready to fight, in word and deed, to the utmost of my power.
De zoveelste slapeloze nacht. Word er een beetje wanhopig van. Had een methode om mee te concentreren maar die faalt juist omdat ik me niet kan concentreren. Er eigenlijk niet precies hoe verder. Toch maar weer concentreren op ademhaling. Het Van Remmen weekend in het vooruitzicht doet er ook geen goed aan, misschien speelt dat ook mee. Denk terug aan die onfortuinlijke avond tijdens het huwelijk van Thijs van Remmen in dat kasteeltje met die verschrikkelijke muziek. Er is vanavond in ieder geval geen band.
Mercia ziek, vermoedelijk RS-virus. Stevige verkoudheid, geen koorts. Lastig met het drinken en een beetje huilerig maar verder is het te doen. Anne ook niet lekker, maag van streek. Gelukkig ging het vanavond weer een beetje beter. Boodschappen gedaan, soep klaargemaakt voor de Nieuwjaarsborrel met het huis morgen. 
"""Naar Langweer om het 25-jarig huwelijk van Janny en Jan te vieren. Een groot gezelschap in een jeugdherberg aan de Langweerder Wielen. Met Cathrien en Ton eerst een tochtje in de roeiboot met buitenboord motor gemaakt. Cathrien geniet en vindt het erg spannend. Na de thee met Meindert en Mieke en Annemarie nog even gezeild. Cathrien noemt de zeilen “vlaggen”. Janny en Jan hebben een indrukwekkende vriendenkring. Ook Ton had uit Amsterdam een flink aantal vrienden meegenomen. Marjan Klapwijk vond dat de studenten bij Psychonomie meer aandacht krijgen dan bij K&J (Koops vergeet afspraken etc.). Ook de “positieve sfeer” vond ze heel belangrijk. Toch zaken om in het oor te knopen. Janny en Jan zijn van veel kanten toegezongen en toegesproken. Veel rake observaties. Ook Ton, Jan Willem en Marina hadden een goede bijdrage. Met Meindert nog even over zijn onderzoek gepraat (!). Bereidt zich voor op Tübingen. Leuke resultaten van zijn televisieonderzoek. Vriend van Ton die op de Hoge Agrarische School in Leeuwarden zit: varkens zijn zeer stressgevoelig, voelen zich senang bij klassieke muziek! Bij Cathrien op de kamer geslapen. Een lied voor Geert maken: Dik-voor-me-kaar-lied.
Eerste zaterdag in het nieuwe jaar. Deze week goed de dagen ingedeeld. Het systeem werkt op dit moment goed. Misschien moet het tot de goede voornemens worden verheven. Plus de afspraak om de computer alleen voor typ- en rekenwerk te gebruiken. De kerstvakantie is zeer snel voorbij gegaan. 30 December een dagje Leiden: Kuifje in Tibet (Rijksmuseum voor Volkenkunde, tante Wil achter de balie), lunch in Van de Werff, rondwandeling, mummies in Rijksmuseum voor Oudheden, eten in M’n Broer. Oudejaarsdag ‘s middags naar moeder en ‘s avonds naar Wim & Annette, alwaar ook Gert, Inge, en Dirk aanwezig waren, naast natuurlijk Floor, Daniëlle en Jan. Ik vroeg aan Floor: “Floor, zit jij nou in de hoogste klas?” Waarop zij antwoordde: “Nee, dat is Floor”. Mij in diepe gedachten achterlatend. ‘s Nachts teruggereden. Om 3.00 uur in bed. Nieuwjaarsdag eerst gewandeld in Noordwijk en toen naar Meindert & Mieke voor de nieuwjaarsborrel met de familie. Bijzonder verhaal van Mieke die een oudere dame heeft gesproken die Miekes ouders nog goed heeft gekend (John, Lion,  en Beppie, Rebecca, Coster). Krantenknipsel uit de Telegraaf van 27 december 1939 waarop Miekes vader aan de rekstok, winnaar van een turnwedstrijd. Een bericht waar allerminst de naderende holocaust blijkt.
Gisteren de 46e verjaardag van Cathrien gevierd. Om 18 uur daar, helaas zonder sleutel waardoor we een tijdje op de stoep moesten wachten. Kinderen waren redelijk door het dolle heen. Vooral Franca eigenlijk. Begin enorm te krijsen toen ze in bed was gestopt. Hield dat wel een kwartier vol voor ze in slaap viel. Mercia vond ik moeilijk bereikbaar, kon niet goed zichzelf uitkleden, voortdurend met andere dingen bezig. Daarna gezellig gegeten, Barbara kwam ook nog langs. 
Voornemens voor het weekend:

* Krant lezen
* Met Cathrien naar Van Tongeren
* Met Cathrien spelletje doen met dobbelsteen en notenbalken
* Kwarkdeeg maken
* Vanavond gezellig eten met Piet en Freke Litjens
* Lezen in Induction
* Schrijven aan algemene discussie van artikel over diss
* Volkskrant en Intermediair nalezen op advertenties
* Naar de kerk

Terwijl de Barentszee wordt leeggevist en de zeehonden zo dicht onder de kust naar vis zoeken dat ze verstrikt raken in de netten van de vissers, fluiten buiten de vogels aan het begin van de nieuwe dag en speelt de Wiener Philharmoniker o.l.v. Leonard Bernstein het tweede pianoconcert van Brahms. Bernstein is zeer ontroerend: met kinderlijke verrukking. Hij is in staat geweest om zichzelf zo klein te maken dat hij als een kind is geworden. Ik wilde dat ik dat ook kon bereiken. Frijda: kwaadheid is de emotie die volgt op aantasting van je autoriteit. Klopt bij mij: veel te vaak voel ik mij aangetast in mijn autoriteit, m.n. door de kinderen. Hoe kom ik daar van af? Door mij"zelf" zo klein mogelijk te maken dat het zelf niet meer naar buiten uitsteekt zodat anderen er schade aan kunnen toebrengen. Mijn "zelf" is te groot. Hebben we iets aan deze gedachtenspinsels? En hoe dan met het pessimisme?
"""Vanochtend een uur lang geluisterd naar de monologen van Cathrien in haar campingbedje. Niet al te veel verstaan. Veel gesprek tegen de pop. Siep (de hond van Gerry) kwam er ook aan te pas. Cathrien wist niet dat wij naast haar sliepen en was heel verbaasd om ons te zien liggen.
Rustig ontbeten. Fam. Klein ging met Vader en Moeder naar de kerk. Wij hebben een tochtje met de roeiboot gemaakt. Om ± half 12 naar Deventer vertrokken. Daar (Den Nul) half slapend gearriveerd. Eerst een uur op een ligbed achter in de tuin geslapen. Toen een lied voor Geert en Linda gemaakt. Cathrien speelde intussen met Daan, Thijs en Paul die zich een kriek lachten om wat Cathrien doet of zegt. Veel met Paul in het kippenhok. ‘s Avonds eerst de kinderen in Deventer in bed gelegd en toen terug naar de boerderij om de liedjes te repeteren. We hebben nu: Welkomstlied, Dik voor mekaar lied, Familielied (van Marjolijn), Hobbylied (Kamphuis) en het lied Grote taarten hap-hap… Dat zullen we zingen als de bruidstaart wordt aangesneden.
"""Zaterdagochtend half 11. Caroline Kaart kondigt op de radio Ashkenazy aan die Chopin speelt. Saar ligt er weer in. Anne en Cathrien doen boodschappen op de markt. Ik hang de was op en zet koffie.

Kwart over 11 ‘s avonds na een rustige dag. Vanmiddag na de siësta het Rijksmuseum bezocht. Enkele mooie oude poppenhuizen. Cathrien bleek achteraf de klokkenn ‘t mooist te hebben gevonden. Ze kreeg twee “valse” mondharmonica’s van een muzikant die in de doorgang speelde. Ze is nog een beetje bang voor ‘t geluid. Wie weet wordt het nog iets. Deze week: Cathrien voor het eerst een uurtje alleen op de peuterzaal. Ging boven verwachting goed. Ze was verbaasd om Gerry al weer zo snel terug te zien. Verder: A.C. nog weinig veranderingen. Hopelijk alles in orde. Gesolliciteerd op het Ministerie van Onderwijs, goede baan beschikbaar in Twente. Gisteravond op de leesclub met D&E besproken. Hun advies: hier blijven. Ga er maandag met SF over praten. Verder op ‘t moment alles redelijk onder controle.
<<ximg "/Dagboek/20160730 Dagboek.jpg">>
Behoorlijk depressieve gevoelens wegens overbelasting. Dit is natuurlijk niet nieuw en het kan ook zo weer veranderen. Het verandert door (1) de scope van je handelen zo kort mogelijk te maken, (2) voldoende (nacht)rust te nemen, (3) in een opgeruimde omgeving te werken, (4) het besef actief te houden dat je geschapen bent als Gods evenbeeld , een boom geplant aan levend water die goede vruchten geeft en niet zal verdorren voor zijn tijd. Depressiviteit is toch uiteindelijk een kwestie van gebrek aan zelfvertrouwen wat weer terug te voeren is op gebrek aan vertrouwen in de anderen, vertrouwen in God.
"""Sipkes afscheid is een heel geslaagd feest geworden. Het was allemaal zoals we het ons voorgesteld hadden en het kwam hem volledig toe. Nog eenmaal het "wij-gevoel" zoals Rein Tonkens vanochtend zei toe we bij Sipke nog even aan het napraten waren tijdens de koffie. De oude liederen die het vakgroepkoor en Rein Tonkens en Jan Feij ten gehore brachten en het nummer van Jan Petrie en Piet van Wieringen gaven daar alle aanleiding toe. Zullen we ooit nog zoiets meemaken? We moeten er wel wat aan doen. Met Guus hebben we daarvoor we een goede gangmaker. Sipkes afscheidscollege was karakteristiek: op een hoog abstractieniveau, zeer veel jargon, niet vloeiend, geen duidelijke lijn. Maar wel met vier dia's! Geweldige opkomst. 't Was ook een mooie gelegenheid om met Sipkes kinderen in contact te komen. Dirk, Joke, Bert. Veel jonger dan ik dacht. Allemaal zo'n beetje van onze leeftijd. Gezellige lui, veel opener dan hun pa.

Proberen: elke avond om half 10 stoppen en tot half 11 schrijven: deze kaartjes, Cathrien en Sara's dagboek. Op Bram Peter Leenhouts uitnodiging ingaan om Italiaanse lessen te volgen. Bijspijkeren! Morgen brieven van oom Jan Hendrik de Grooth lezen.

!!! Eerste vakantiedag

Vandaag gereden van Amsterdam naar Luzern, zo'n 820 km. Druk op de Duitse snelwegen maar nergens lang oponthoud. Om kwart over zeven vertrokken, om zes uur hier in het hotel aangekomen. Google Maps heeft prima geholpen. Morgen naar Casa Crocetti, 755 km. 

Vanavond op een gezellig pleintje gegeten en daarna nog een wandeling door het oude centrum, zeer verrassend, inclusief de Kapelbrug en Hotel Schweizerhof. Zie de foto's en het verhaal van Tolstoi.

|<<ximg width:300px "/Foto's/2021 Italië/0904 Terras Luzern 1.jpg">>|<<ximg width:300px "/Foto's/2021 Italië/0904 Terras Luzern 2.jpg">>||
|<<ximg width:300px "/Foto's/2021 Italië/0904 Anne op de brug.jpg">>|<<ximg width:300px "/Foto's/2021 Italië/0904 Anne op Kapellbrücke.jpg">>|<<ximg width:300px "/Foto's/2021 Italië/0904 Hotel Schweizerhof.jpg">>|
|borderless|k
Een heerlijke zomerdag. Vanochtend met Sara enn Cathrien naar het strand in Overveen geweest. Geen drukte. Je moet weer een beetje leren hoe je je op het strand moet inrichten en wat leuke spelletjes zijn. De zee fascineert in ieder geval. De vakantietijd is een ideale tijd om te leven zoals je eigenlijk zou willen, met een betere verdeling tussen inspanning en ontspanning, werk en gezin, hoofd en handen. Je doet meer, geniet meer van wat je doet, hebt meer het gevoel de boel onder controle te hebben. Proberen dit vast te houden. Er is maar één manier, de manier van de liefde, in de zin van zorgzame aandacht voor je naasten, jezelf. Moeilijk dit vast te houden. Vanavond een heerlijke leesavond (af en toe een beetje knikkebollen).
Eigenlijk ben ik veel tevreden, dankbaar, gelukkig met de richting waarin mijn leven zich ontplooit. Een lieve vrouw, die mij op veel punten aanvalt en uitdaagt, lieve, verrassende kinderen, werk, vrienden, huis. Je denkt soms: het is goed. Soms: het kan beter. Soms: het is allemaal niks. Nu denk ik: het is goed. Varia: gisteren met de buren gegeten. Eindigde in gezeur over stank- en wateroverlast. Moeder heeft leuk vakantieweekje in stacaravan gehad. Nog 1 week? ...
Hartkloppingen, waardoor zouden ze zijn getriggerd? Misschien door de gemberthee vanavond. Kwestie van geduld hebben. Reken er niet op dat ze vannacht overgaan. Laatste keer was volgens mij net na de verhuizing. Ik weet nog dat het mij moeite kostte om de trap op te komen. Wie weet valt het deze keer wel mee. 

Gisteravond bijzondere voorstelling in de Tolhuistuin. Middelbare scholieren vertelden verhalen over de oorlog die in interviews met oudere Noorderlingen p tafel waren gekomen. Steeds een ander verhaal op een andere plek in de tuin
Heel mooie film gezien vanavond [[210807 Supernova]].
Eerste week zit erop. Vandaag schaatsen en een bezoek aan Tjeerd en Kathleen in Leusden. Geen groot nieuws. Rintje Ritsma en Falko Zandstra doen het heel goed op de Europese schaatskampioenschappen: ze staan 1 en 2 in het klassement na de 500 en 5000 m. Annamarie Thomas blijkt een hele goede schaatster: tweede op de 500 m, na een Duitse.
"""
De afgelopen veertien dagen, met name de laatste week, is er veel gebeurd.
Vorige week donderdagavond een gezellig uitje met de sectie O&O. De sfeer viel mij erg mee. Met name was het aangenaam keuvelen met het echtpaar Kohnstamm. Dolph was zeer spraakzaam en behoorlijk openhartig. De mening van Henk Wilke, “ik heb op wetenschappelijk gebied niets substantieels aan mijn vakgebied bijgedragen”, werd door Dolph gedeeld. Als zijn beste bijdrage beschouwt hij een boekje overde schrijver Dick Bruna. 
Zaterdag op bezoek bij Meindert en Mieke in Cambridge.
Van maandag tot vrijdag met de klas van Cathrien in Bladel.
Bijzondere dag in Markelo, huize de Borkeld. Vanochtend na een gezellig ontbijt begonnen met een flinke boswandeling. Mercia voortdurend op zoek naar kabouters en verder heel druk bezig met allerlei spelletjes waaraan we allemaal graag meededen. "Nu even in de kring jongens"! Op een goed moment zagen we twee hertjes lopen, echt bijzonder. Weer was prima, wolken en zon, echt aangenaam. Elsje kleefde nogal aan Anne. Op een zeker moment holde ze even met Els op de arm, struikelpartij, Els met de schrik vrij maar Anne weer een fractuur van de radiuskop, rechterarm, voorlopig uitgeschakeld. De middag doorgebracht in het ziekenhuis in Almelo. Onderzoek, foto's, uitslag, drukverband. Helaas, helaas. Ze ligt nu lekker te slapen. We gaan allemaal slapen want het is wel even rustig. Hopelijk een betere nacht dan gisteren.
"""
Gisteravond zongen we in het koor een tekst waarin het ging over de noodzaak om je kruis te dragen. Eigenlijk een heel goede gedachte Alle zaken die ik gister opschreef horen tot de categorie "kruis", zaken waarvoor geldt: niet klagen maar dragen en bidden om kracht. Ik ben zelf mijn grootste kruis, dat is wel duidelijk. Maar ook dit huis is een kruis. Ook bepaalde kanten van Anne zijn een kruis, bijvoorbeeld haar gewoonte om wat ze half heeft verstaan zelf in te vullen. Voor dat alles geldt: niet klagen maar dragen en bidden om kracht. Misschien moet dat voorlopig maar eens even je mantra worden. 

Vanavond komen Tjeerd en Kathleen bij ons eten, net als Sam en Marga, en Dirk en Elzemien. Een reden tot dankbaarheid. 
"""telefoon: 2737
Ootmarsum! De Schmalhorst. Vanochtend om ½ 11 vertrokken. Inpakken viel mee. Alles kon achterin. Op het imperiaal de kinderwagen, buggy en het fietszitje. Reis ging vlot. In Holten gestopt. In de “babyroom” een klein wc-tje waarmee Cathrien heel ingenomen was. Laatste stuk moest Cathrien een beetje afgeleid worden. ½ 2 hier, uitpakken, Sara (geen kik gegeven) in bed. Cathrien ook in het kampeerbedje. Wilde niet slapen. Ik naar Ootmarsum om boodschappen te doen en fietsen te huren. Terug buiten thee gedronken en een kleine wandeling met Cathrien. Ze vraagt op ‘t ogenblik vrij veel aandacht, is snel uit het veld geslagen. Komt het door Sara? Cathrien was niet meteen gewend, viel later in de auto (fietsen halen) in slaap. Na ‘t eten is ze vlot gaan slapen. Anne heeft nog even gelopen, ik een half uurtje gefietst, Duitsland even in. Daarna gelezen en zitten suffen in de stoel. Nu ½ 12 is het hele huisje stil. Morgen verder.
"""Consult bij Toon Tellegen: carpaal tunnelsyndroom: het poortje, waardoor de zenuwen de hand binnentreden is een beetje nauw. Het bindweefselbandje om de zenuwvezels heen kan gekliefd worden.
"""Een aangename laatste avond in het French Quarter met Jacobijn Sandberg en Yvonne Bernard en Leen de Leeuw. Het is nu kwart voor 12. Vannacht gaat om 4 uur de wekker! Reizen! Jacobijn verbaasde zich erover dat ik zei een hekel aan reizen te hebben. “Jij bent altijd zo goed georganiseerd en houdt van snel beslissen?” Onze discussie over de opbrengst van Artifical Intelligence en Education: algemeenheden die soms oppervlakkig zijn, details die slecht generaliseerbaar zijn. Vanmiddag een jurk gekocht voor Anne! Verder zeer ontspannen rondgereisd door het French Quarter. Morgen naar Minneapolis.

"""
Dit schreef ik op 14 januari 2009. Het is nog onverkort waar! Proberen vast te houden. 
 
De toestand van in de ban zijn van iets is een toestand van verlaagd bewustzijnsniveau. Je laat je uitsluitend door de buitenwereld meeslepen, schakelt alle interne controle uit. Zoeken, Google Earth, etc. De computer is werkelijk een middel om in zo'n toestand te geraken. Hoe noemen we die toestand: een soort zoektrance. De trance van het zoeken. Een soort afwachting van wat komen gaat van buiten. Misschien moeten we het de sudokutoestand noemen, inderdaad behoorlijk kut. OK, we willen niet in de sudokutoestand geraken. We willen de wil niet uitschakelen. We willen op een hoger bewustzijnsniveau. Niet dat vegetatieve. Op het niveau van zelfbewustzijn, van waardering en liefde. Van ontspanning ook. Het niveau van de strijd voor het goede leven. Dit is een ontdekking. Dit moeten we vasthouden. Beelden brengen je gemakkelijk in de sudokutoestand. Zo min mogelijk beelden dus. Wel letters en muziek. 
De podcast is af en hier te beluisteren: https://u.pcloud.link/publink/show?code=0ZwCdxXZWXVcibw3YDun2vpd8vnH5BOOm7LX. Het ziet er allemaal ok uit, hopelijk valt het en beetje in de smaak. Ben er niet helemaal ontevreden over, toch goed dat ik uiteindelijk heb besloten om psalm 73 er helemaal uit te halen. Nog wel wat losse eindjes, maar nou ja. Hopelijk is de boodschap duidelijk, nog een keer samengevat in de afsluiting. Liederen zijn mooi, Candide wat mij betreft over de top maar Mirjam vond dat leuk.

Prachtige zomergasten avond met Rober Vermeiren, kinderpsychiater bij het LUMC. Indringende en ontroerende beelden van een suïcidale jonge vrouw van 24 die euthanasie kreeg en afscheid nam van haar vriendinnen, van een fotografe met ernstige anorexia, en van Grets Thunberg als voorbeeld van een puber met autisme. Hij sprak er met grote warmte over. Erg mooie en ontroerende avond. 
Hoe verder? <p>
Een rustige nieuwjaarswisseling thuis. De kinderen bleven op, maar hebben het laatste uurtje wel op de bank en op schoot geslapen. Het vuurwerk buiten was indrukwekkend en heel hard. Berend liep steeds met zijn handen voor zijn oren. Hij wilde geen sterretjes vasthouden. Eerder op de avond enkele uren doorgebracht bij een vriendin van Gerry, Hermine Dijkstra. Woont in een prachtig huis op de hoek van de Amstel en de Sarphatistraat, bij de Hoge Sluis tegenover het Amstel Hotel. Een prachtige kamer met open haard waar dokter Mezger in de vorige eeuw praktijk hield voor gasten van het Amstel Hotel. Hij resideerde ook in Domburg. Zijn bezoek aan die badplaats wordt beschreven in het boek over Mondriaan, dat Cathrien heeft. Op de gang bij Hermine hing een poster van het Scheepvaartmuseum met op de voorgrond het VOC-schip. Daaromheen getekend allerlei bootjes, onder andere een vlot met een blote dame erop. Het viel Berend op: “Die dame ligt er sexy bij, ze denkt dat dat het strand is!”. Ontwakend besef van de zinnen?<p>
Proberen in dit dagboek weer eens de Freud-manier te volgen: elke dag iets opschrijven.
Vandaag: bestand in Bosnië voor vier maanden. Zal het standhouden? In Joego-Slavië is nu al zo’n drie jaar oorlog. In Tsjetsjenië (een afvallige republiek van Rusland in de Kaukasus) wordt ieder opgeroepen met wapens naar de hoofdstad Grozny te komen.<p>  
Goede voornemens:<p>
Zie 19 december: een aantal dingen proberen zo min mogelijk te doen. Bij het werken aan de zinvolle dingen een beetje tempo proberen te ontwikkelen. Verder niet steeds zo serieus! En zelf je stemming bepalen. Belangrijke beslissing: solliciteren naar een 0.4 tijdelijke hoogleraarspositie op de VU, lerarenopleiding.
Het is nu 17:11, uitzicht over het IJ waar op dit moment geen bootjes varen. Vandaag het nieuwe jaar goed begonnen met een bezoek aan Cathrien en Jochem. De kleine Mercia is werkelijk iets gegroeid en heeft al allerlei gezichtsuitdrukkingen, inclusief een grote glimlach, die elkaar vrij willekeurig lijken af te wisselen. Er wordt veel tijd besteed aan drinken. Mercia begint goed te groeien, er is sinds de geboorte, bijna drie weken geleden, 250 gram bij gekomen, volgens de autoriteiten bovengemiddeld. Ze begint ook al iets gerichter om zich heen te kijken. 

Het nieuwe jaar is begonnen zonder grote rampen. Wel een aanslag in Istanbul, een nachtclub, 39 doden. Is natuurlijk vreselijk maar we kijken er nog nauwelijks van op.

Gisteravond onze eerste jaarwisseling op de Christoffelkruidstraat. Dirk en Elzemien en Daan en Marijke waren hier. Prima ontspannen avond met het woordenboekspel, altijd leuk. 
"""'t Schrijven van half 10 nog niet gelukt. Brieven van oom Jan Hendrik en tante Jelly uit de jaren dertig en veertig gelezen en moeder gebeld. De brieven bevatten leuke passages: over de zaak (diefstallen en ongelukken), een radio die vader en moeder van oom JH kochten, de geboorte van Dirk de Grooth en Jan Willem, Meindert en Gretha als kleine kinderen.

Moeder klonk zoals steeds opgewekt. Meindert had de garagedeur in de grondverf gezet. Verder gezeur over de bedden boven. Ze gaan er nu echt uit. Moeder heeft wat dat betreft haar zin niet gekregen. 

Vanochtend Ina op bezoek. Vertelde dat Ton en zij uit elkaar gegroeid waren. Ze bleek Ton nog behoed te hebben voor zitten blijven door hem na een fatale onvoldoende overgehaald te hebben een brief naar de docent te schrijven met het oog op een herkansing. Ze heeft er veel aan gedaan maar toch niet kunnen voorkomen dat Ton zich meer en meer afsloot. Ton is zeer gesloten. Een Van Remmen kwaal. Vanavond praten ze met elkaar. 'k Hoop dat Ina hem het een en ander duidelijk kan maken. 't Is zo'n pittige tante, eigenlijk heel geschikt voor Ton. Vanmiddag een vanouds gezellig bezoek aan de fam. Boelens gebracht. Deze week afspraak maken voor voorjaarstripje.
Cathrien is erg druk in de weer met de "Here God". Gisteravond: Hoeveel handen heeft God? Ik: Veel. Cathrien: Misschien wel 23! Later: waarom krijg je een steen als je dood bent? Ik: Als herinnering. De mensen gaan dan naar de steen en denken aan je. C: Ze denken dan ook veel aan de Here God. Wat is er onder de steen van opa? Ik: Nu niets meer. C: Wat was er dan eerst? Ik (na enig nadenken): Ook niets. C: Als je dood bent zet ik bloemen bij je steen. Als ik dood ben, zet jij dan bloemen bij mijn steen? Ik zeg dat God de wacht houdt bij alle lieve mensen. C: Ook bij mensen die niet lief zijn? Ook bij mensen die oorlog maken? Ik: Ja, zelfs bij die mensen. Vandaag is Tom gedoopt. Ik vertel dat de voorganger hier "priester" genoemd wordt. C: Wij noemen hem gewoon dominee, hè?

Een vreemde gewaarwording: de goede aanpak bestaat o.a. uit woorden en zinnen die je tegen jezelf zegt. Die woorden of zinnen werken een tijdje positief uit en verliezen dan hun kracht. Gek genoeg vergeet je ze dan en moet je weer opnieuw gaan zoeken. Vandaar: op één kaartje een soort standaard opschrijven van werkzame woorden of zinnen. Ter herinnering. 

<<ximg width:80% "/Dagboek/20061001 Dagboek.png">>
<<ximg width:80% "/Dagboek/20061001 Mail Cathrien.png">>
"""Deze dag is tot nu toe de minst interessante geweest: heel vroeg op, vliegen met vertraging tot 13.00 uur van New Orleans naar Minneapolis. Koffer ergens onderweg blijven staan, waarschijnlijk in St. Louis, waar we in verband met een defect van vliegtuig moesten wisselen. Hier in Minneapolis is weinig te beleven. Denk al met heimwee terug naar New Orleans en zie uit naar San Francisco, ‘t is hier ook koud. Dit hotel, de Thunderbird Inn, heeft als thema Indianen gekozen. Overal totempalen, etc. De maaltijd was veel te overdadig, niet erg geraffineerd. Morgen gaan we MECC-school bekijken. Lichtpunt: flink stuk gelezen vandaag in The Counterlife van Roth. Wordt boeiend. Met name de situatie in Israel wordt heel goed beschreven vanuit het standpunt van de militante Zionisten en het standpunt van de ongelovige Jood. Citaat van Tsjechov: als in het eerste bedrijf van een toneelstuk een pistool aan de muur hangt, dan wordt er in het derde bedrijf geschoten. Hoezeer slaat dat op de situatie van nu: militante Kahane-aanhanger schiet eerst Palestijn dood en daarna, als de menigte aggressief wordt, per ongeluk een 15-jarig meisje dat hij moest beschermen.
17:35 uur.  Poes zit op schoot te spinnen (en springt er, alsof ik een  foto wil maken, net af, terwijl ik dit opschrijf) en ik begin aan de wekelijkse bijdrage aan dit dagboek of wel weekboek. De routine zit er nu aardig in. Ik zat van de week op de fiets te bedenken dat angst voor veel gedrag van mensen (inclusief dat van mezelf) verantwoordelijk gesteld kan worden. Angst kan ertoe leiden dat iemand onbeweeglijk wordt. Letterlijk in de zin van thuis blijven en voor de t.v. gaan zitten en agressief reageren op elke poging van anderen om de passiviteit te doorbreken (het rinkelen van de telefoon is al genoeg). Onbeweeglijkheid ook in figuurlijke zin: vasthouden aan oude meningen, niet willen veranderen, overmatige starheid, etc. Fascisme, een vijandige houding tegenover andere bevolkingsgroepen, etc., het kan allemaal worden herleid tot angst. Is angst gerechtvaardigd? Dat lijkt me moeilijk te  ontkennen. De samenleving boezemt allerlei soorten van angst in. Bladen als De Telegraaf met opgeklopte misdaadverhalen dragen hiertoe bij evenals politici als Reagan met hun verhalen over de zich bewapenende vijand. Het nationaal-socialisme creëerde destijds een beeld van de Joden dat inhield dat ze de westerse economie en cultuur bedreigden. Mensen zijn snel geneigd zoiets zonder bewijs voetstoots te geloven. Mensen laten zich gemakkelijk angst aanjagen. Ook cijfers over werkloosheid, ontslagen, bedrijfssluitingen en faillissementen zullen veel mensen beangstigen. De werkenden omdat ze bang zijn hun baan te verliezen. De werklozen omdat ze bang zijn niet meer in het arbeidsproces te kunnen terugkeren. Passiviteit kan het gevolg zijn maar ook je afkeren van de maatschappij (de hele klerezooi kan me gestolen worden). 

Hoe komt het dat mensen zich zo gemakkelijk laten beangstigen? Wal
"""Weekend in Ermelo verliep niet vlekkeloos. Ik was behoorlijk gedeprimeerd door Guus Mannaerts’ aankondiging per 1 maart te vertrekken, door een suizend oor. Wat Guus betreft: 2 kanten aan de zaak: (1) hij kiest voor zekerheid als hem die geboden wordt; (2) hij laat het project onafgemaakt in de steek en laat ons ermee zitten. ‘t Laatste stemt mij zeer bezorgd. Enfin, niet nu.
Cathrien was ook niet al te soepel. Ze is op een leeftijd gekomen dat je haar oud en wijs genoeg acht om zich te kunnen “gedragen”. Dat verandert onze houding tegenover haar enorm. Ze krijgt standjes, wordt recalcitrant, etc. Ze is toch nog erg jong!
Moeder maakte ook niet een al te beste indruk. Erg krom, het eten wat rommelig. Slecht geslapen, om half 4 vannacht nog een pil genomen en daardoor vanochtend pas om 8 uur wakker. Symptomatisch? De kerkdienst heeft haar goed gedaan. Ook het feit dat Vaders graf nu af is. ‘t Ziet er erg mooi uit. Thole was nog niet tevreden.

Hoe moet het verder? Vanavond een column voor Didactief afgemaakt op de VU en verstuurd. Zie wel weer tegen de week op. Aanvraag, Edinburgh paper, college voorbereiden. Woensdag valt geheel uit. Geen zorgen voor de dag van morgen
"""
Vandaag wordt Sara 20 jaar! Helaas kunnen we haar geen dikke kus geven want ze zit in Suriname. Heeft daar al weer een week werken als verpleeghulp in het Diaconnessenhuis achter de rug. Als ik het wel heb gingen ze dit weekend een tripje maken. Nou ja, haar drie studiegenoten zullen er met Sara wel een gezellige dag van maken. 
  
Gisteren hadden we de reünie van het lab van Sipke. Een zeer geanimeerde borrel en maaltijd. Iedereen in goede doen, behalve Floor van der Ham die een breekbare indruk maakte. Leuke voordrachtjes van Ko, Hans de Swart en Piet van Wieringen. 
  
Deze week zijn we opgeschrikt door het slechte nieuws over Joziens gezondheid. Ze heeft twee verdachte plekken in haar hoofd, vermoedelijk secondaire haarden. Nader CT onderzoek van thorax en buik heeft nog geen andere problemen aan het licht gebracht. 
  
We zijn de trotse bezitters geworden van een nieuwe auto, een Ford Mondeo Stationwagon, voormalige auto van Ton en Veronique. Kan hier mooi in Amsterdam nog even afgedragen worden. 
  
De balans tussen discipline en liefde, het is geloof ik te moeilijk voor mij. 
In Egmond, koud voorjaar maar nu gelukkig wel wat zon. Zo dadelijk een eind lopen en dan de accu's op een houten bankje zetten zodat ze niet al te zeer afkoelen waardoor de stroom 's nachts uitvalt. Gisteravond leesclub over het boek Al het Blauw van de Vlaamse schrijver Paul Terrin. Anne vond de hoofdpersoon iets weg hebben van De Vreemdeling van Camus. Interessante parallel. Hopelijk de laatste leesclub via Zoom. Iedereen heeft een afspraak voor de eerste vaccinatie.
<<ximg "/Dagboek/20070211 Dagboek.png">>
Even bijschrijven. We zitten in Egmond, het weer is mooi, boven 20°, maar ook wolken en buien. In de Tour gaan ze beginnen aan de laatste week, de Pyreneeën in. Ik heb de laatste opdracht voor de ICO cursus Learning and Instruction afgemaakt. Op voorstel van Caroline zet ik er nu een punt achter. Toch even slikken maar wel verstandig. 

Nog even een paar foto´s van de laatste tijd. Een heel lollige van Els en Ada vanochtend. 

|<<ximg width:75% "/Foto's/20210711 Els en Ada.jpg">>|

Het ochtendritueel in Egmond

|<<ximg width:% "/Foto's/IMG_20210628_085115.jpg">>|<<ximg width:% "/Foto's/IMG_20210628_090147.jpg">>|<<ximg width:% "/Foto's/IMG_20210628_092157.jpg">>|<<ximg width:% "/Foto's/IMG_20210628_092228_1.jpg">>|

Een dagje oppassen op Els en Ada

|<<ximg width:% "/Foto's/IMG_20210701_121309.jpg">>|<<ximg width:% "/Foto's/IMG_20210701_171357.jpg">>|<<ximg width:% "/Foto's/IMG_20210701_171910.jpg">>|

Een mooie wandeling: de Abdijwandeling, door Egmond-Binnen, Heiloo (Kapel van O.L.V. ter Nood), Bakkum en achter het Mooyeveld langs weer terug naar het afgebrande restaurant. 

|<<ximg width:% "/Foto's/IMG_20210705_162135.jpg">>|<<ximg width:% "/Foto's/IMG_20210705_162523.jpg">>|<<ximg width:% "/Foto's/IMG_20210705_153934.jpg">>|
Gisteren is onze Sara 30 geworden. Ze heeft het  gezellig met Toon gevierd. Vanavond komt de hele mispoche hier eten. Gisteren hebben Cathrien en Jochem naar een nieuwe auto gezocht. Mercia was hier een Berend heeft ook nog op haar gepast. Ik kon er helaas niet bij zijn omdat ik de hele dag moest zingen in Den Haag. Het jaarlijkse Choral Festival met een andere dirigent. Ik ben met Petra meegereden omdat onze auto niet start. Was leuk in weer even op de vroege zaterdagochtend door de Frans van Mierisstraat te lopen. Zo'n straat, dat mis ik toch het meeste. Annemarijke stapte net naar buiten. Gaat niet zo goed met Henk, problemen met de blaas en de knie. 
Verder met het verslag.
Zaterdagmiddag weer naar Amsterdam. Daar overnacht en zondagavond de dodenherdenking bijgewoond. We kwamen nog een aantal bekenden tegen die we het nieuws van Ma's overlijden konden meedelen. Boekje afgemaakt en via de telefoon overlegd met Richard.

Maandag 5 mei rond 12 uur weer naar Deventer. 's Middags in de kerk nog een keer gespeeld en geoefend met Geert en Anne in het voorlezen.

De avondwake begon om 19.00 uur. We brachten al vroeg de kist naar de kerk. De kist werd opgesteld bij het doopfont. Berend en ik waren rechts- en linksvoor de dragers. We hielden de kist goed op de schouder en grepen ondertussen elkaars hand vast. Janny en Jan arriveerden al vroeg. Joan en Dick waren er, net als Tjeerd en Kathleen. Ook drie collega's van Anne: Karen, Marie-Jeanne en Nettie. Mooie dienst. teksten werden goed gelezen door Geert en Anne. Cathrien las verrassend helder de voorbede voor. Mijn Sarabande ging niet goed maar klonk wel behoorlijk. Ontroerend moment: Pa die met de voorganger en alle kleinkinderen een kruisje met Ma's naam naar de bidkapel bracht. Na afloop heel veel handen schudden, zo'n 300 mensen, meest Deventenaren. De kist weer meegenomen naar de Parkweg, waar we nog een glas dronken. Ik sliep bij Pa op de kamer. Niet al te best geslapen maar toch goed om Pa enige steun te kunnen bieden.
"""Sara is ziek. Ze heeft sinds gisterochtend 38.5 koorts. Ze drinkt goed, slaapt redelijk en huilt tussendoor. Misschien heeft ze oorpijn. Moeilijk na te gaan. We hebben haar nu een finimal-tabletje gegeven. Je bent het helemaal niet van haar gewend. Hopelijk kikkert ze gauw weer op. Cathrien wordt opeens een stuk wijsneuziger. Ik zei gisteren bij het slapen gaan: Je bent toch papa’s grote meid! Waarop Cathrien: en Jaapje is Bartie’s grote meid. Als dat geen analogieredenering is! Ze heeft ook een nieuw woord voor ochtendjas bedacht: handdoekjas. Ze is zeer in haar sas met haar kamertje beneden.

Gisteravond moeder gebeld. Ze praat druk maar zegt dat ze zich wel moe van binnen voelt. Ze bouwt snel spanning op. Als ze ‘s nachts wakker ligt gaat ze tegen vaders foto praten die naast haar op het nachtkastje staat. Ze wil in huis het nodige veranderen. T.V. naar de voorkamer. Tafel in achterkamer en meubels eruit. Verder om huis wat bomen weg, mede ten gerief van de buren. Nu begint voor haar de moeilijke tijd en is het een kwestie van erop of eronder. Ik verwacht erop. Als ze haar zenuwen tenminste de baas kan blijven. Er zullen nog meer moeilijke momenten komen. Oom Wim ernstig ziek, tante Janny met een kwetsbaar hart, etc.
<<ximg "/Dagboek/20070812 Dagboek.png">>
Vandaag een lichtelijk chaotische, maar ook gezellige verjaardag van Mercia. Vijf jaar! Chaotisch vanwege de tv die aanstond met beelden van de Formule 1 grand prix in Abu Dabi, waar Max Verstappen voor het eerst wereld kampioen werd. Mercia zelf raakte er niet door afgeleid, te druk in de weer met haar nieuwe speelgoed. O.a. een gevulde naaidoos van Anne en een grote kist met kabouterhoutjes. 

<<ximg width:400px "/Foto's/20211212 Mercia jarig 1.jpg">>
<<ximg width:400px "/Foto's/20211212 Mercia jarig 2.jpg">>
!!! Negende vakantiedag

Eerste dag in Bocca di Lupo! Altijd even wennen aan het nieuwe huisje en de nieuwe omgeving. Maar er ontstaat hier meteen al een nieuwe routine: ´s ochtends even lopen naar Loretello, dan oefeningen in het zwembadje en planken, en dan aankleden en ontbijten op het terras. Al weer heerlijk! We hebben vandaag een rustige dag bij het nieuwe huisje doorgebracht. Lunchen of avondeten bij La Grotta of in Nidastore lukte niet, helemaal volgeboekt. Daarom aan het eind van de middag nog een borreltje gedronken bij het terrasje van ~MangiaMarche. Daar zat een zeer spraakzame Italiaan die van alles vertelde over de omgeving en adviseerde om naar Corinaldo en naar Pergola te gaan. Wat we natuurlijk meteen in het programma hebben opgenomen. Vanaf het terras zie je in verte ons huisje liggen.

|<<ximg width:300px "/Foto's/2021 Italië/0912 Lunch op het terras.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0912 Uitzicht op Bocca di Lupo.jpg">>|
|borderless|k

Foto uitzicht op ons huisje

's Avonds gegeten bij Ippocastani (de paardenkastanjes), een soort agriturismo waar moeder heerlijk kookt. Erg lekkere maaltijd! 

<<ximg width:300px "/Foto's/2021 Italië/0912 Cena bij Ippocastani.jpg">>
"""Eerste dienst van de studentenekklesia. Cathrien en ik samen erheen. Cathrien wilde wel in het “schooltje” en slikte na enig inpraten haar tranen weg. Omdat we wat laat arriveerden was er geen plaats meer beschikbaar bij de zijdeur. Huub nam me mee naar de voorste rij waar ik met angst en beven afwachtte. En jawel hoor, al spoedig verried een luid gehuil op de gang Cathrien’s gemoedstoestand. Hij opent de mond van weerloze kinderen, zei Huub later. Door mijn plaats op de voorste rij kon ik niet zo snel te hulp schieten. Op een zeker moment verscheen Jaap Malkus met Cathrien op de arm in de kerk. Ik erheen en Cathrien overgenomen. Samen naar de gaanderij waar we Huubs preek aangehoord hebben. Cathrien kan niet echt zachtjes praten. Als je maar gedurig op haar in blijft fluisteren houdt ze redelijk haar mond. Kreten als “duim” en “pink” zijn niet te vermijden. Uiteindelijk hebben we de hele dienst uitgezeten. Cathrien kreeg voor het eerst een stukje brood bij de communie. Zij is wel gevoelig voor een beetje symboliek.

Vanmiddag het feest van John en Katy. Anne-Carien en Cathrien zijn er naartoe geweest, terwijl ik koortsachtig het programma om Italiaanse woordjes te leren op de Olimarck probeerde te krijgen (gelukt). Vanavond gegeten bij Ulli en Paul Grossmann.
"""Zijn is de ziel, is luisteren, is wijken,
Is kind worden en naar de sterren kijken,
En daarheen langzaam worden opgelicht.
Ed Hoornik ([[Ed Hoornik - Hebben en zijn]])

‘t Vlot niet zeer met het schrijven. Weer eens proberen ‘t een beetje bij te houden. Vanmiddag was het opeens een beetje voorjaar. Zon en geen koude wind. “‘k Hou niet van de wind”, zegt Cathrien. Je krijgt op zo’n moment een enorme behoefte aan veranderen. A.C. neust rond op zoek naar een geschikt benedenhuis. Ze heeft F.v.M.str. 125 (?) op het oog. Daar woont nu een oude dame. Tuin op het zuiden. Ik krijg visioenen van een andere baan in Zoetermeer of Enschede. Twee sollicitaties. Als het in Zoetermeer door mocht gaan zeg ik meteen ja. In Twente ligt het veel moeilijker. ‘t Is een UHD plaats, o.k. Maar de plaats en de vakgroep?? Ben gaan solliciteren i.v.m. pogingen om op de VU een UHD-plaats te bereiken. Lukt het op de VU niet en in Twente wel dan ben ik bijna genoodzaakt om te gaan. Dat zal een moeilijke beslissing worden. Nu eerst maar weer de week in.
"""
Even iets opschrijven. Vandaag Cathrien en Jochem geholpen met het schuren van de kastdeuren. Vanavond nog even met Janny gebeld. Hoe ze zich voelt : 60-40. Ene dag 60, andere dag 40. Wat moet je ervan vinden. 
Gister hebben we een bezoek gebracht aan het Holocaust Namenmonument. Heel indrukwekkend. Ook de stenen opgezocht met de namen van de moeder en vader van Mieke. Je ziet ook namen van kinderen van 15, 13, 7, 6, 3 jaar, zelfs 4 maanden. Dit is allemaal heel verbijsterend.

<<ximg width:400px "/Dagboek/202111 Namen Monument.jpg">>

|<<ximg width:400px "/Dagboek/202111 Moeder Mieke.jpg">>|<<ximg width:400px "/Dagboek/202111 Vader Mieke.jpg">>|

<<ximg width:800px "/Dagboek/20211113  Barmhartigheid.jpg">>

Ik vond het verhaal terug van Meyer Barmhartigheid, geboren op 28 november 1907: https://www.amsterdam.nl/stadsarchief/themasites/razzia/meijer-barmhartigheid/
Vanavond een erg mooie aflevering van Zomergasten gezien met de schrijver Alfred Birney. Een echt ideale Zomergast. Verrassende fragmenten, o.a. het laatste, het nummer Machine Gun van Jimi Hendrix, inderdaad het ultieme anti oorlogslied. Maar ook het jongetje met de steen aan het begin en de dode man met de steen aan het eind. Er was een bijzonder goede verstandhouding met Janine Abbring, die uitstekend in vorm was. Birney heeft ook wel wat meegemaakt. Een gewelddadige vader die tijdens de politionele acties landgenoten heeft gemarteld en ook gedood. En daarover maar bleef praten tegen zijn kinderen.
Hoe houd je het gewenste niveau? Ik zoek voor mezelf steeds de hamvraag. De vraag die ik mezelf kan stellen en die me weer op het rechte spoor brengt. Zodat ik me niet langer met mezelf maar met anderen bezig kan houden. Snel, de tijd dringt! Wat ik kan: voor het komende half uur of uur bepalen wat het gaat inhouden. En dat plan vervolgens uitvoeren. Wat ik ook kan: de dag beginnen met een korte oriëntatie. Net als die halve uren/uren.
Gisteravond de leesclub met twee gasten: de vertaler en zijn vriend, vrienden van Joan. Van het boek, Plan D van Simon Urban, bleef niet veel over. Gisteren ook de boekenkast beneden uitgebreid met een nieuwe stelling, 8 meter erbij. Berend en Sietske kwamen nog langs met twee krukjes die ze mij Neef Louis hadden gekocht. Even een kopje thee gedronken. 
"""Het aangekondigde mooie weer was er vanochtend nog niet: voor het eerst regen zodat we niet gingen fietsen maar per auto naar Saasveld vertrokken. Daar een kleine rondwandeling gemaakt. Cathrien begroet al het vee in de omgeving. Ze heeft met name een zwak voor varkens. Na Saasveld een kopje koffie met krentewegge in Het Stift Weerselo gedronken en weer naar huis. Na de siësta een fietstocht naar de watermolens bij Hezingen. Ze werkten geen van beide. Erg mooi hoog en laag gebied daar. De zon begon te schijnen en het werd opeens warm zomerweer. Thuis in de tuin gegeten. Anne’s vakantieideaal, alles buiten doen, komt dichterbij. Vanavond Christie uitgelezen, een stukje voor Guus en Els gemaakt en aan een brief voor Tjeerd en Kathleen geschreven. Cathrien en Sara waren vandaag heel goed te pas. Sara lacht heel veel. Vanmiddag op tafel in het wipstoeltje zat ze steeds tegen de lamp boven de tafel te lachen. Cathrien kan zelf “poesje-mauw” (bandje met kinderliedjes) aanzetten. Ze is verder heel druk met Mina: Mina in het fietsstoeltje, Mina op de pot, Mina eten, etc. Naar bed gaan levert na de crisis van vorige week geen problemen op.
Alle verdedigingsmechanismen storten voortdurend als kaartenhuizen in elkaar. Voortdurend gevoel van onmacht en falen. Is er fysiek iets mis?? Steeds kleine irritaties met AC. Ongeduldig t.o.  de kinderen. Het wordt tijd voor een nieuwe verdedigingslinie. Het programma van afgelopen donderdag was te hoog gegrepen. Van belang is ontspannen, blijven praten (niet in jezelf opgesloten raken), alle aspiraties tijdelijk opgeven, behalve misschien artikel over diss. onderzoek. Geen dingen doen die afbreuk doen aan je eigen identiteit. Periode tussen slapen en waken niet te lang laten duren en vullen met vast programma: planning van wat er te doen is in eerste uur en rest van de dag. Alle angst van je af proberen te zetten. Is Gods nabijheid een steun? Wat betekenen de zinnen "Ver weg van U is het geen leven. U ontrouw zijn is niemand zijn. Bij U, mijn hoogste goed, mijn God, bij U ben ik geborgen."? Dat moet toch een tegenwicht vormen. Hoe dan ook, rationeel of niet. Ik ga ervan uit! En toch, en toch, en toch ...
N.a.v. het indrukwekkende Lolita van Nabokov: mensen zijn tot meer narigheid in staat dan ze zelf geneigd zijn om te denken. In feite wijzen de experimenten van Milgram ook in deze richting. Er is geen bodem die voorkomt dat je handelwijze daalt beneden alle peil. Hoe een weldenkend mens je ook moge zijn. Dit weekend was erg druk omdat A.C. ziek was en er naast de boodschappen ook nog enkele voorbereidingen voor de Kerst getroffen moesten worden (kerstboom kopen, kerstkaarten maken met aardappelstempels en "glittertjes". Het is allemaal goed gelukt, mede dankzij de aanwezigheid van Gerrie. Hoewel ik gisteravond moe was ben ik toch voor de t.v. blijven hangen om de nachtfilm te zien. Vanochtend was ik dus betrekkelijk gebroken en humeurig. Het lijkt een onbelangrijke faux pas maar ik vind het zelf heel onplezierig. Op zo'n moment is er dus geen ingebouwde veiligheidsklep die voorkomt dat het systeem zichzelf opblaast. Je hebt een levensplan nodig, zegt Adler. Inderdaad, een plan voor een "ideaal leven" waarin je naar je idealen leeft. Je moet je aan dat plan houden, zoveel mogelijk ontspannen en vrijwillig, maar als het moet met enige zelfkastijding. Mijn plan maak ik op basis van de Bijbel en de omgang met God.
"""Vandaag voor Cathrien en Sara gezorgd omdat Anne moest werken. Cathrien praat onafgebroken. Soms (aan tafel, in bad) vraagt ze: “Zul je praten?” Ze heeft echt een behoefte aan verbale communicatie. Doet het soms ook om tijd te rekken natuurlijk of om aandacht te krijgen die anders misschien naar Sara zou gaan. Er is wel degelijk sprake van enige jaloezie. Toch probeert Cathrien er meestal een “positieve” oplossing voor te vinden. Ze wil voortdurend Sara’s handje vasthouden, knuffelen, etc. Ze vraagt ook regelmatig aan mij: “Blijf je hier? Ga je niet weg?” Ze voelt zich toch niet 100% zeker. Ze speelt dat ze bang is in ‘t donker maar is het ook echt wel een beetje. Vanochtend tijdens Sara’s slaapje gestreken terwijl Cathrien in en uit het bed klom. Na de koffie naar het Stedelijk. Sara zit graag in de rugzak, kijkt veel rond en zegt af en toe wat. Cathrien houdt ervan om in de grote zalen van het museum rond te stappen.
Vanavond was bij Van Dis de biografe van Sartre aan het woord: Hij had één regel: ‘s morgens drie uur werken, ‘s avonds drie uur werken. Ook in het weekend en op vakantie. Goed systeem!
"""Afgelopen week wel goed aan het schrijven geweest. Nog teveel tijd verspild aan tv, inefficient werken, geklets. In Egmond lampjes opgehangen en bosje bloemen bij buren Jan en Wijnanda Burger gebracht. ‘s Avonds erg moe, verkeerd aangepakt. In hoeverre is dit interne geneuzel te rijmen met de echte existentiële problemen? Dinsdag op t.v. Feuerstein: Drie voorwaarden voor goed onderwijs:
1. Geloven in verandering! Intelligentie is veranderen.
2. Technieken.
3. Leeromgeving.
Intelligentie is veranderen! Inderdaad: de verlammende angst voor onbeweeglijkheid (bijv. niet bij tv of pc weg kunnen kunnen komen). In deze opvatting zijn intelligentie en luiheid tegenstrijdig.
Cathrien: ik vergeet alles en raak in de war. Eerst de feestdagen, nu weer een vulpen! Ze heeft sinds januari op school een vulpen. Is er erg trots op.
Geloven in verandering! Zelf veranderen. Niet vastroesten. Eigenlijk heel goed. Zo ook relatie met Anne bekijken. Haar ouders die zich onbeschaamd en onophoudelijk mengen in onze privacy, mijn privé leven. Vooral ook met geld. Anne die het geld aanpakt (net als ikzelf overigens) en vervolgens bedenkt dat ik dat afwijs. Zich geplaatst ziet tussen haar ouders en mij, vervolgens haar mond houdt en niet kiest.
<<ximg width:% "/Dagboek/20111218 Westervelde.jpg">>
Dat is een tijd geleden, maar wel aantekeningen op allerlei plaatsen, zelfs handgeschreven. We zitten in Westervelde bij de jufferen Lunsing, een gezellig hotel. Met z'n zevenen, inclusief Jochem en Lennart. Vrijdagmiddag via pa hier naartoe gereden. 's Avonds de kinderen van de trein in Assen gehaald.  Nog even wat gegeten en bij de haard gezeten. Zaterdagochtend een gezellig ontbijt in een van de kamers beneden. Daarna een stevige wandeltocht. Om 11 uur vertrokken en via zompige bospaden met een bocht langs het Fochteloër Veen naar Veenhuizen. Een heel bijzondere sfeer in deze voormalige strafkolonie (Hollands Siberië). Veel huizen en gestichten gebouwd tussen 1875 en 1925. Huizen met rechtschapen opschriften als Contrôle, Opvoeding, Bitter en Zoet, Helptelkander.

Mooie teksten, misschien bruikbaar in een eindrapport over de Instellingsaudit.

Vorig jaar zat ik erg in over de opheffing van het Onderwijscentrum. Daar ben ik nu echt overheen. Afgelopen woensdag hadden we een mooi afscheidsfeest met zo'n 80 deelnemers. De stemming was goed. Ik heb een goeie toespraak gehouden, Carmen heeft mij geprezen en de medewerkers van Carmen hebben haar geprezen. Mijn toepraak stop ik hierachter, en ook enkele reacties via de mail. Dit is tenslotte ook mijn succesmapje.
<<ximg width:% "/Historie/20111218 Joyce Brouwer.png">>
Vandaag een prachtige zomerse zondag. Berend en Sietske zitten in Egmond. Anne heeft een wandelnig door Het Twiske gemaakt, samen met Elzemien en een aantal vriendinnen. Sara, Els en Ada waren hier. Toon was uit jagen, op hun bovenwoning werd het een beetje warm. Je bent geneigd om je zorgen te maken als je Sara ziet wegfietsen met Ada voorop en Els achterop. Het oogt kwetsbaar maar dat is het vast niet.
We zijn terug bij af, een nieuwe strenge lockdown. Winkels en scholen dicht, max 2 bezoekers thuis en buiten. Met Kerst 4. Alle kerkdiensten afgelast tot 16 januari. Uit vrees voor de nieuwe omikronvariant. Jochem, Franca en Fred positief getest. Mercia's verjaardagsfeestje afgelast op het laatste moment. Mercia maakt er een knuffelfeestje van. 

<<ximg width:400px "/Foto's/20211219 Knuffelfeestje van Mercia.jpg">>

Mercia heeft ook al haar eigen zelftests gemaakt.

<<ximg width:400px "/Foto's/20211219 Zelftests van Mercia.jpg">>

Afgelopen donderdag waren Els en Ada hier. Ada liep voor het eerst zelfstandig en triomfantelijk!

<<ximg width:400px "/Foto's/20211216 Ada loopt.jpg">>

Voorlezen valt gelukkig nog steeds goed in de smaak.

<<ximg width:400px "/Foto's/20211212 Voorlezen.jpg">>
<<ximg "Pensionado/Geheugen/Dagboek/20061119 Dagboek.png">>
!!! Zestiende vakantiedag

Vandaag een bonus uitstapje naar Bologna, blijkt een half uurtje sporen te zijn vanuit ons onverwachte oord Argelato. We hebben een rondwandeling bij de hand die ons eerst naar een zaak voert waar iedereen koffie drinkt. Dat klopt ook op deze corona zondag waardoor het niet echt een genot is om hier te zitten. We zijn de stadsdrukte geheel ontwend! Vervolgens duiken we de voormalige Joodse wijk in waar nu veel restaurants en winkels met etenswaren zijn. 

In de Santa Maria della Vita zien we een bijzondere beeldengroep, een Bewening. Van de website https://uitdekunstmarina.nl/tag/santa-maria-della-vita/ Neem ik het volgende over:

//De belangrijkste bezienswaardigheid is de laat 15e eeuwse terracotta beeldengroep van Niccolò dell’Arca. Een expressieve bewening, waarbij de beeldhouwer alle registers van verdrietige emoties heeft open getrokken. Als je goed naar de verbijsterde, door verdriet overmande figuren kijkt, kun je bijna horen hoe hoe ze het uitschreeuwen. Letterlijk en figuurlijk ongehoord voor een kunstwerk uit de 15e eeuw. Het suggereren van dergelijke gemoedstoestanden geschilderd op het platte vlak is al knap, maar het driedimensionaal uitbeelden van dergelijke emoties was volkomen nieuw in die dagen.

Van links naar rechts: Jozef van Arimathea met hamer en nijptang, waarmee hij zojuist de spijkers uit Jezus handen en voeten heeft verwijderd. Direct naast hem staat Maria, de moeder van de zonen van Zebedeus (Jacobus de Meerdere en Johannes de Evangelist); ontzet knijpt zij in haar bovenbenen. Aan haar rechterzijde staan de handenwringende Madonna en Johannes, die sprakeloos zijn hand in een traditioneel gebaar van treurnis voor de mond geslagen heeft. Maria Cleophas probeert met haar handen tevergeefs het kwaad en onrecht af te weren en over Maria Magdalena de boetvaardige zondares, lijkt een stormwind te razen. Zij geeft in een welhaast macabere dans uiting aan haar verdriet. In schril contrast met deze dynamische figuren ligt daar heel sereen en verstild de gekruisigde op een met fraaie textiel bekleed bed.

Bijbelvasten onder de lezers zullen één figuur missen. De grote afwezige is Nicodemus, de ongelovige die hielp bij het overbrengen van het lichaam naar het graf. Volgens de overlevering droeg zijn beeld de gelaatstrekken van Giovanni Il Bentivoglio, een hoge piet in Bologna, wiens beeld na inname van de stad door Paus Jullius II in 1506 werd vernietigd om de herinnering aan deze voormalige signore (alleenheerser) van de stad, uit te wissen.//

<<ximg width:400px "/Foto's/2021 Italië/0919 Expressieve beeldengroep.jpg">>

Een tweede kop koffie op een rustiger plaats. De twee torens zijn inderdaad behoorlijk hoog en behoorlijk uit het lood. Dan komen we aan op het Piazza San Stefano, inderdaad erg mooi en heel levendig. In een complex van kerken en kerkjes, de Sette Chiese, waan je je weer in de middeleeuwen. Gezellig geluncht op het plein. Daarna nog naar de enorm grote San Domenico gelopen waar we niet in konden. Met de trein terug. Al met al toch een heel mooie zondag in Bologna. Nog veel meer om te zien. Na het smakelijke diner nog twee afleveringen Downton Abbey op onze comfortabele hotelkamer.

|<<ximg width:400px "/Foto's/2021 Italië/0919 Per trein naar Bologna.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0919 Twee torens.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0919 Piazza San Stefano.jpg">>|
|<<ximg width:400px "/Foto's/2021 Italië/0919 Sette Chiese.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0919 Lunch.jpg">>|<<ximg width:400px "/Foto's/2021 Italië/0919 Hotelkamer Argelato.jpg">>|
|borderless|k
"""
Nog even opschrijven wat we vrijdag 31 maart hebben gedaan. 's Ochtends om 10 uur eerst koorrepetitie in St. Mark's Church. Even onwennig in de nieuwe omgeving. Wel een knus kerkje, alles heel kleinschalig. Om 13 uur met de bus naar Siena. Eerst even rondgekeken en om 4 uur repetitie in de zeer kleine Anglicaanse kerk. Valse piano. Om 17 uur het "concert" waarbij nauwelijks mensen aanwezig waren. Natuurlijk ons vaste publiek (Simone, Mente, Hetty, vriendin van Elly, Anne-Carien) en verder af en toe enkelen die even binnen wipten maar ook snel weer verdwenen. Zingen ging redelijk, af en toe schoten we eruit. De akoestiek was eigenlijk wel ok. Om kwart over zeven weer met de bus naar huis. Uiteindelijk uitgestapt bij het station en met een groepje gegeten in de volksbuurt bij de Mercato Centrale. Met Petra en Mente en Cécile en Nelleke. 

Vanochtend om 9.15 repetitie in St. Mark's Church. Om half 11 de Eucharist. Gezongen samen met het lokale koortje. Enige opwinding in de kerk want Camilla Parker
"""Zaterdagavond geen aantekeningen gemaakt, dan nu: 5 voor 6 in de ochtend. Saar huilt, Anne gaat haar eruit halen. Ze slaapt nu steeds door van 12 tot ± ½ 6. Geworstel met artikel voor themanummer is voorbij (hoop ik). Nu verder met Fokkema en de vakgroep. Moet niet al te veel werk zijn. Kaart van tante Antje: is de bloemenbon wel aangekomen? 12:05 Saar in bed. Artikel Fokkema en de vakgroep af! Morgen weer volgens urenschema. Nog opnemen: SF's stelling: wat je kunt uitleggen moet je ook uitleggen.
21.00 uur. Cathrien 4 jaar! Vandaag bezoek gehad van Gerrie en Kitty, en Joke van E. en Saskia. Vanmiddag Sam & Marga en de kinderen. Marga opnieuw in verwachting! Sam ziet nog niet direct mogelijkheden voor een nieuwe baan hoewel hij er wel zin in heeft, zeker na z'n cursus management. Van de vrienden sluiten zij toch het meeste aan bij onze aanpak van de kinderen. 't Zou ideaal zijn wanneer zij de zorg voor onze kinderen op zich konden nemen, mochten wij ooit onder de tram geraken. Kitty gaf een poëziealbum cadeau met een mooi gedicht van haarzelf voorin. Ze probeert altijd een persoonlijk cadeau te geven. 

De vakantie zit er nu definitief op. Gaan we het anders doen in de komende tijd? Twee dingen: nog meer plannen en evalueren, m.n. werkoverleg. Toch ook wat strakker leiden misschien. Zakelijker. Verder proberen een eigen lijn uit te stippelen. Aan welk probleem werk je nu eigenlijk in de cognitieve &psi;? Dat ook verder door studie uitdiepen. Meer studeren, d.w.z. lezen en schrijven dus. Plannen werkt angst tegen en brengt rust. Je blijft anderen voor en wordt niet zo gauw door de gebeurtenissen overvallen. Geldt ook voor thuis. Wat willen we het komende jaar doen met Cathrien, Sara, Berend, het huis?
!!! Elfde vakantiedag
De ochtend begint met appjes naar onze jarige Cathrien, 32 jaar! Na een frisse duik van Anne en ik even naar Anghiari voor brood. Er blijkt een loopje te starten op het plein. Gezellige drukte. Na het ontbijt van we gezamenlijk naar Anghiari om het stadje wat beter te bekijken. Erg mooi middeleeuws met steile straatjes. 

|<<ximg "/Foto's/20170702 Ger Anne Sara.jpg"  width:400px>>|<<ximg "/Foto's/madonna_del_parto1.jpg" width:400px>>|

Op het plein koffie gedronken en de drukte van de hardloopwedstrijd gadegeslagen. Na lunch en siësta naar Monterchi gereden en daar de Madonna in Parto bewonderd. 


Daarna op het pleintje boven gezellig geborreld. 's Avonds in Anghiari gegeten. Een goed bestede eerste vakantiedag voor Ger en Sara. 
"""Hoe pak je het aan? Tijd onverbiddelijk benutten! Vanuit de gedachte dat deze dag de laatste of, ook goed, de eerste dag van je leven is. Leven in vreugde is beter dan leven in verdriet, zegt Abel Herzberg. Met welk instrumentarium kun je de horror vacui aan:
Verleidingen en afleidingen onderkennen en uit de buurt houden.
Plannen.
Niet alleen plannen maar ook nagaan waarom planning niet wordt gehaald. Niet teveel tegelijk plannen. Zoveel als je kunt onthouden. Langere lijsten hebben echt geen zin en werken achteraf heel frustrerend. Dus plannen, maar heel spaarzaam.
Waardevolle oriëntatiepunten in het oog houden.
Lezen wat zinvol is, niet wat zinloos is. Doen wat zinvol is, niet wat zinloos is.
Berend had het vanochtend opeens over delicatessen. “Wat is dat”, vroeg ik. Berend: “Zo’n dik boek” (omspant met zijn hand een grote afstand).
17:15 uur. Zo gaat het met goede voornemens. Ze uitspreken is nog niet hetzelfde als ze uitvoeren. Enfin, misschien kan het een gewoonte voor het eind van de zondagmiddag worden, na een uurtje Italiaans, terwijl jij een dutje doet en Kocsis Zoltán via de walkman Chopin speelt. De poes loopt onrustig heen-en-weer. Haar fijne neus ruikt de kip die in de keuken op het vuur staat. Dit hoewel kamer- en keukendeur vanwege het koude weer gesloten zijn. Even een woordje over de winter. 14 dagen vorst nu, zojuist is de Elfstedentocht, die voor woensdag op het programma stond, afgelast. Bij de melkboer zei zaterdag een mevrouw: "Het is altijd prettig wanneer men weer begint te praten over de Elfstedentocht want dan is de dooi in aantocht". Vanochtend was het in de kerk zo koud dat Huub Oosterhuis met de jas aan en das om achter de microfoon stond.  

Hoe staat het met de zwangerschap? Goed, lijkt het. Je kunt er al iets van zien, al heeft dat naar het lijkt lang op zich laten wachten. Je hebt zelfs het hartje horen kloppen, na het incident donderdag toen je opeens enig bloed hebt verloren. Gelukkig zonder verdere gevolgen. Komt het door het bad dat je woensdag avond voor het eerst sinds maanden hebt genomen? (Zie 2 januari) Verder komt de normale eetlust weer terug en mag ik weer een sigaartje roken. Ik neem me voor om meer te gaan lezen over de komst van de kleine, vanochtend begonnen in "Een beetje zwanger ".  

Hoe staat het met het proefschrift? Hoofdstuk 3 is af, een begin gemaakt met hoofdstuk 5. Ik mis nog het overzicht over de resultaten en een idee van de reikwijdte van de uitkomsten buiten het onderzoek heb ik ook nog niet. Geeft het onderzoek aanwijzingen over het leren informatie zoeken in het algemeen? Je hoort van diverse kanten dat het van belang is om kinderen zelf gegevensbestanden samen te laten stellen: ze leren de grondbeginselen van ordening en begripsvorming. Dat zit niet in mijn aanpak. Een gemis? Verder is het de vraag of het onderzoek iets zegt over problemen oplossen of gegevens opzoeken in het langetermijngeheugen. Donderdag moet ik de cognitieve sectie verslag doen van mijn bevindingen. Ik neem dinsdag de hele dag om hoofdstuk vijf af te maken en de grote lijnen op papier te zetten.  

Een probleem: hoe doe je zes dingen tegelijk: proefschrift, project (computerkant, onderzoek Paul, contact Ministerie), publiceren (implementatiepaper, dat er overigens leuk uit gaat zien, moet deze week af! Brief aan CDA), onderwijs (tentamens, pabo-docenten), Unesco, lezen en op de hoogte blijven. Ik kan het alleen maar door rigoureus te plannen en alles in te delen. Bezwaar: onverwachte zaken gooien de boel in de war, en bezorgen je een slecht humeur. De dagindeling van dit moment voldoet goed: 8.00 uur tot 10.30 uur klus A , 10.30 uur tot 13.30 uur lopende zaken, 13.30 uur tot 15.00 uur klus B, 15.00 uur tot 17.00 uur klus C. Je kunt zo drie dingen van enige omvang per dag doen. Haastwerk doorkruist dit echter (zoals nu het implementatiehoofdstuk).  

Een belangrijke gebeurtenis van dit moment: het aanstaande vertrek van Tjeerd en Kathleen, morgen avond om 10.30 uur uur. De familie Ferrier zal het moeilijk hebben met het afscheid van Kathleen. Voor twee jaar voorlopig. Ik vind het geweldig om te zien dat Tjeerd zo'n duidelijke bestemming in zijn leven heeft gevonden zo gelukkig is met Kathleen. Ze zullen een goede tijd daar hebben en veel leren. We zullen ze erg missen. Proberen contact te houden per brief.
"""Het is moeilijk om iets over Sara op te schrijven omdat ze eigenlijk altijd goed gemutst is. Ze protesteert alleen als de fles naar haar idee te snel leeg is (en dat gebeurt vaak). Ik laat haar ‘s ochtends in bad altijd even zitten. Je moet haar goed vasthouden want ze glijdt dikwijls weg. Als ze “zit” kijkt ze heel triomfantelijk rond en begint dikwijls met een van haar handjes vrolijk in het water te slaan. Tijdens het aankleden wordt ze meestal ongeduldig omdat ze zin in de fles krijgt. Saar zit nu heel goed in het klaptafelstoeltje. Ze kruipt nog niet maar trekt wel een been onder zich.
Cathrien begon vrijdagavond opeens te zeuren bij het naar bed gaan dat ze een papieren luier aan wilde. Ik werd daarop heel boos en zei dat ze niet van die hysterische scènes moest maken als ze iets wilde. Gisteravond vroeg ze heel netjes: Papa mag ik een papieren luier aan? Ik zei ja maar voegde eraan toe dat we niet elke avond een papieren luier kunnen betalen. Vanavond haalde ik dus een katoenen luier uit de kast. Cathrien wilde gaan huilen maar probeerde zich toch te beheersen. Ik heb haar een tijdje op schoot genomen en toen ging het snel over.
De derde dag

In deze veertigdagentijd zijn wij onderweg naar de ‘derde dag’, de dag van de opstanding.

Carel ter Linden schrijft over deze ‘derde dag’ in zijn boek ‘Bijbelse miniaturen’ (Uitgeverij De Arbeiderspers 2018, p. 206) het volgende:

'Die drie dagen moet je niet te letterlijk nemen. Dat is een veelvoorkomende bijbelse uitdrukking voor een beslissende wending ten goede. Zo’n wending vraagt echter een hardnekkige weigering van ons mensen om het kwaad in ons leven en in deze wereld het laatste woord te gunnen. En dat is soms een heel proces. Dat gaat, zouden wij zeggen, niet van de ene dag op de andere, daar is meer voor nodig. Een ‘derde dag’.'

Een mooie uitdaging, zeker in deze bizarre coronatijden!

Een fysieke opstanding uit de dode blijft in ons persoonlijk leven echter een ver-van-ons-bed-show. Toegankelijk en aansprekend vinden wij dan ook de betekenis die Claartje Kruijff aan het opstandingsverhaal geeft in haar boek ‘Leegte achter de dingen. Mijn zoektocht naar een betekenisvol leven’ (Ambo/Anthos 2018, p. 152). Zij schrijft:

'Dat vind ik zo bevrijdend aan kerken en gemeenschappen waar op een open en vrijzinnige manier mag worden gesproken, gedacht en geloofd. Omdat er ruimte is voor allerlei perspectieven kunnen deze verhalen misschien juist nieuwe betekenis en diepte krijgen. Ik ontdekte dat dat onwaarschijnlijke paasverhaal een diepzinnig verhaal is dat gaat over het geheim van leven. Leven en dood hangen veel nauwer samen dan ik dacht. Dood was voor mij het eindpunt van het leven maar langzamerhand heb ik een ander besef. Tijdens het leven moet je loslaten en sterf je op allerlei manieren. En hopelijk sta je steeds weer op en begin je opnieuw. En zo begint de diepte van het paasmysterie tot mij te spreken.'

Je hoeft volgens Claartje Kruijff – in eigen woorden – niet lichamelijk dood te zijn om je tijdens leven toch in een ‘doodse’ situatie te bevinden. De Bijbel stelt ons gelukkig steeds weer in het vooruitzicht dat wij het vertrouwen mogen hebben dat ooit die ‘derde dag’ aanbreekt. Een dag om op te staan en het leven opnieuw aan te durven. Er is – zoals wij ook deze dagen vaak horen – licht aan het einde van de tunnel.

Op naar Pasen!

Sanne, Guus & Fien Boelens

Een mooie, diepzinnige tekst van Guus en Sanne Boelens. Geldt zeker ook voor mij. Ik ben op dit moment gewoon een beetje paranoïde. Denk van kritische opmerkingen van Anne meteen dat ze tegen mij als persoon zijn gericht, terwijl dat niet het geval is. Van een mail van bestuursleden van de Ekklesia dat die gericht is op het onderuit halen van mijn notitie. Terwijl dat vast niet het geval is. De bodem van vertrouwen is weg. Hoe krijg ik die terug, dat is de vraag om over na te denken in deze slapeloze nacht.
Eigenlijk zijn de berichten heel positief. Aadje krijgt zuurstof via een CPAP apparaat, voegt een beetje druk toe. Niet steeds, ze heeft ook al een paar keer aan de borst gedronken, maar dan is ze daarna wel weer behoorlijk uitgeteld. Kinderarts is heel tevreden. Eigenlijk was de start van Aadje helemaal niet slecht: apgar score van 8, niet buiten bewustzijn geweest, goede kleur, gezonde weerstand (dus niet apathisch) bij inbrengen tube. Arts verwacht geen blijvende schade. Proces gaat traag, twee stappen vooruit en een stap terug. Ze is het rustigst als ze tegen Saar of Toon aanligt (Toon kan dat wel twee uur volhouden). Hartverscheurend, dat wel... Saar is rustig en vol vertrouwen, dus zijn wij dat ook!
"""
Gisteravond een gezellig etentje ter gelegenheid van ons 40-jarig huwelijk. Ruim 60 gasten. Inclusief de nieuwe vriend van Petra, Victor de orthopeed die haar heeft geopereerd na haar bekkenfractuur. Mieke natuurlijk, ook Ton en Nanja, heel erg leuk. Verder natuurlijk Florence en Alfred, Bartie, Albert en Marion, Aad en Pauline, Maarten en Tientje, de ouders van de aanhang, leesclub en Sam en Marga. Riekeld het gesproken, Ton Klein heel leuk, Sam en vooral Marga die Vittoria, Vittoria zong, heel energiek. De kinderen hadden een mooi lied. We hadden een tafelschikking gemaakt, en een wisseling halverwege de maaltijd. Beviel  allemaal goed, iedereen was enthousiast aan het eind van de avond. Ook onze nieuwe buren, Afra, Ewakd en Margriet. Allemaal heel hartverwarmend. 
Vandaag begonnen aan het voorzitterschap van het bestuur van de Ekklesia. Hopelijk gaat dat goed lopen. Veel te doen. 

Vanmiddag waren Sara, Els en Ada even hier. Toon met broer en vader naar Rotterdam. Els was in een vrolijke stemming, zelfs wel uitgelaten. Ze is met Anne nog even naar de trampoline geweest om te springen. Ada was een beetje ziekjes, lekker veel hangen, maar ook nog flink rondgelopen hier in huis. Toen Els en Anne naar de trampoline waren ben ik een beetje piano gaan spelen. Ada ging rustig aan de gang in het speelhoekje en Sara kon even een blik in de krant werpen. Toch leuk om te zien hoe Ada rustig zichzelf kan vermaken. Ze staat op het punt om te gaan lopen, het is vooral een kwestie van nog niet durven. Als ze eenmaal de stap heeft gezet dan zal het snel gaan, denk ik. 

Kaartjes gekocht om met Els en Mercia op zaterdag 5 februari naar een kindervoorstelling met klassieke muziek in het Bimhuis te gaan. Hopelijk gaan ze ervan genieten.

Deze week jaargesprekken met Mirjam en Alex, COBEX (dinsdagochtend) en bestuur Warm Welkom (dinsdagavond). 
Het luik is opengegaan en ik bevind me in een vrije val.

1. A.C. na nachtje in Deventer (pa aan de telefoon om AC’s komst aan te kondigen: “Je vrouwtje zit in de trein, vol verhalen.”) weer geheel volgepropt met het Van Remmen virus. Heel moeilijk om de draad weer op te pakken. Na incident: ik zou gaan hardlopen in het Vondelpark. Berend zou eerst mee op de in-line skates, maar zou later op het speelplaatsje te willen achterblijven. Zo gezegd, maar niet zo gedaan. Buiten gekomen wilde hij toch mee. O.K. maar niet aan AC gezegd. Rondje Vondelpark gelopen en meer op de schaatsen meegetrokken. Ging heel goed. Terug gekomen bleek AC geheel overstuur. Excuses gemaakt maar dat hielp niet. Uitermate gereserveerde en arrogante houding, met name tegenover Herman Divendal, niet alleen de vader van Saar die Cathrien van de schaatsles kent en die bij ons kwam spelen, maar ook de broer van Joost! Hij kwam Saar halen en dronk even een kopje thee. Zeer geïnteresseerd in een Werkschrift-aflevering met verhalen van en over de 60 jaar geworden Ton van der Stap. AC stelde zich pijnlijk gereserveerd op. Gisteravond zei ze dat ze voor ons clubje koos. Daar ben ik heel blij mee maar haar gedrag verraadt voortdurend dat ze niet kiest, niet wil kiezen.

2. AC ontdekt op Cathriens achterhoofd opeens een kaal plekje, precies op haar kruin. Wat betekent dit?? Sara en Cathrien hebben vrijdag slaande ruzie gehad en elkaar de haren uit het hoofd getrokken. Is dat de oorzaak? Of heeft het iets te maken met de intensieve luizenbestrijding dit najaar, compleet met gifbehandelingen? Of is er nog meer aan de hand?

3. Over Marcus Aurelius in de Volkskrant: “De beste manier om je op iemand te wreken is niet te worden zoals hij”. Het beeld dat de Franse schrijver Grimal van Marcus Aurelius geeft is aanzienlijk positiever dan dat van De Creszenzo, die schrijft: “Hij had een ontrouwe echtgenote en een misdadige zoon, die vermoedelijk niet van hem zelf was. Werd in 121 geboren, op veertigjarige leeftijd keizer, en stierf in 181 aan de pest op een krijgstocht vlakbij het huidige Belgrado. Hij was een trieste keizer, van het ware stoïcisme had hij vooral de strenge moraal behouden. Overtuigd dat elke gebeurtenis was door de goden, aanvaardt de goed Marcus elke tegenslag met christelijke berusting. Wat een verschil met de moraal van Lucretius die, omdat hij meent dat het leven een zuiver toevallig wonder is, probeert het zo goed mogelijk te leven, door te profiteren van de gunstige momenten. Marcus Aurelius markeert niet alleen het einde van het stoïcisme, maar ook dat van het Griekse denken: het christendom nadert onverbiddelijk en zal eeuwenlang zijn wet voorschrijven.”

Over het verschil tussen de Stoa en het Epicurisme:
“Wie zijn tegenwoordig de stoïcijnen en de epicuristen? Hoe kan je ze herkennen? Hoe zien ze eruit? Het is niet zo heel moeilijk. De stoïcijn is een individu dat hardnekkig gelooft in zijn morele zending: hij moet die vervullen.... Het gaat erom te  lijden uit naam van iets dat een morele betekenis heeft. Allen die in de Eeuwige, onverbreekbare, Grote Liefde geloven, zijn stoïcijnen. Het is duidelijk dat ze hem nooit vinden, maar dat weerhoudt hen er niet van verwoed te blijven zoeken zonder compromissen aan te gaan. Hun motto is: ‘Alles of Niets’.
Christenen, echte christenen, zijn stoïcijnen. Ze hebben als doel het Paradijs en willen dat bereiken door loutering van het vlees en verheffing van de geest. Tot hun favoriete slogans horen: ‘We zijn geboren om te lijden’ en ‘De eersten zullen de laatsten zijn’.
Marxisten zijn stoïcijnen: het doel van hun leven is Rechtvaardigheid voor Allen, niemand uitgezonderd. 
De epicurist is heel andere koek: omdat hij bewust is van de vluchtigheid van het leven, stelt hij zich kleine doelen die binnen een korte tijd bereikbaar zijn.
Een epicurist is iemand die bij voorkeur stemt op een partij die hem geen Rechtvaardigheid, Vrijheid en Geluk belooft, maar een geleidelijke verbetering van zijn leven, door middel van een politiek van kleine stapjes.
Een epicurist is iemand die blijft samenleven met een partner op wie hij niet echt verliefd meer is, maar met wie hij een modus vivendi heeft bereikt van wederzijdse verdraagzaamheid.
De voordelen en de nadelen van deze zijnswijzen zijn gelijkelijk verdeeld over de twee gedachtestromen. Over het algemeen zijn epicuristen serener, meer in vrede met de wereld, bijna altijd opgewekt. De stoïcijnen zijn daarentegen goede werkers: ook als ze kaartspelen, doen ze dat met veel inzet. De epicurist minacht de politiek en zal zelden slagen als grootindustrieel: hij heeft het privé-leven hoger in zijn vaandel staan dan de maatschappij. Om Pirelli te worden moet Pirelli een stoïcijn zijn geweest: een epicurist was in zijn plaats tevreden geweest met een bandenzaakje.
Het zou geen slecht idee zijn als partners, voor ze trouwden, in plaats van op het sterrenbeeld te letten, zich op de hoogte stelden van de mate van stoïcisme of epicurisme van de toekomstige gade.” (pp. 377-378)
Kun je ook allebei tegelijk zijn? Ama et fac quod vis (Augustinus).
22.25 uur. De eerste herfstdag, het eerste weekend in Ermelo met Cathrien. Vanmiddag een wandelingetje met z'n vijven gemaakt. Dat was een goede ervaring. Opa is zo mogelijk nog trotser op z'n kleindochter dan ikzelf ben. Ze overstelpt hem dan ook met haar stralende lachjes met kuiltjes in beide wangen. "Ich bin vergnügt mit meinem Glück" zingt Elly Ameling in de koptelefoon. Dat geeft mijn gevoel goed weer. Cathrien is een klein wondertje van liefde. Ze kijkt zo vol vertrouwen en nieuwsgierigheid de wereld in. Elke dag breidt ze haar wereld een klein stukje uit. In mijn agenda heb ik genoteerd: maandag 8 juli: Cathrien uit couveuse: zelf voeden! Woensdag 10 juli: sap, wortels, pyjama's, onderbroeken. Donderdag 11 juli: Anne naar huis! Vrijdag 12 juli: Wanneer naar buiten? Welke prikken gehad? Zondag 14 juli: Cathrien naar huis! Dinsdag 30 juli: Cathrien draait zich op de rug. Woensdag 31 juli: Cathrien lacht voor het eerst. Maandag 26 augustus: Cathrien kijkt naar haar handje en zegt: "eu". Maandag 2 september: Cathrien raakt opgewonden als je "urre" zegt. Probeert te imiteren. Kijkt langdurig naar haar handje en beweegt daarbij haar vingers. Woensdag 4 september: Cathrien gaat zitten in badje. Massage zonder speentje! Zondag 15 september: Cathrien speelt met "babygymnastiek" van Jozien. Steekt handjes als vuistjes naar voren. Grijpt handjes in elkaar.
23.30 uur in bed, spannende aflevering van De Octopus. Moeilijk om een goede lijn te bepalen t.o. Sara en Cathrien. Sara kan zeer recalcitrant zijn. Ik word dan ook krotaf en een beetje bokkig. Ze merkt het wel. Bij Cathrien  gaat het weer heel anders. Die kan blijven doorzeuren zodat je je geduld verliest. Toch is ze in het algemeen ontzettend lief en gezellig, ook tijdens het klussen. 
!!! Vierde vakantiedag
Zondag goed begonnen met een wandelingetje. Beneden in het dal aangekomen bij de baden, waar je zo in kunt duiken, 39°! Daarna ontbeten en aangekleed. Flink gelezen in Stone over Michelangelo. Toch wel meeslepend verhaal. 

In de middag omhoog gelopen richting kasteel Fighine. Aan het begin van de grindweg stond dat de afstand 3 km was. Toen we eenmaal boven waren bleek er opnieuw nog  2.5 km voor ons te liggen. Dat was toch een beetje te veel van het goede. 
Tweede Kerstdag, 15:48 uur. Het wordt al weer donker, het is stil, Anne doet boven een dutje. Eigenlijk een beetje eenzaam. Cathrien en Jochem blijven thuis vanwege de corona. Jochem een Franca waren besmet, in feite zitten ze nog in quarantaine. Anne heeft vanochtend voor ze gekookt. We hebben de maaltijd naar ze toegebracht en in de gang een praatje gemaakt, een beenknuffel voor de kinderen. De stemming was gelukkig positief. Daarna een wandeling gemaakt door het toch wel zeer lelijke Noord. Wat kun je dan verlangen naar een huisje in Garderen. Toch eens kijken of we dat niet iets kunnen huren. Nu verder met een mooi boek een genieten van de stilte. 

Gisteren heel gezellig gegourmet met Toon en Sara en de kinderen. Dat was wel een echte Eerste Kerstdag.

<<ximg width:400px "/Foto's/20211225 Gourmetten.jpg">>
Wat mij het meeste opviel in het interview met Anton Dreesmann: geen tijd voor twijfel aan eigen capaciteiten, zeer zelfbewust. Beetje hypomaan. Benijdenswaardige eigenschappen. Bij al z’n intelligentie en onwaarschijnlijke belezenheid maakt hij niet een zeer erudiete indruk. Varkenskop met vrolijke oogjes. Ik mis de bretels (hij zat in hemdsmouwen aan tafel) zei Anne terecht.

Nog 14 dagen keihard werken. Moet lukken.
"""
Ik wil vandaag geduldig zijn. Vannacht voor het eerst weer eens normaal geslapen. Vandaag wil ik mijn kamer zoveel mogelijk ingepakt hebben. Alle dozen goed gelabeld, bureaublad leeg, alle losse zaken uitgezocht en ingepakt. In Engeland groeiende woede bij jongeren over vertrek uit Europa. 
!!!Laatste vakantiedag

Om half 4 weer thuis! In totaal 3850 km gereden. Een ouderwetse fijne vakantie!
<style>body {font-family: 'Ubuntu'; line-height: 130%; }</style>Dankzij het teruggevonden kabeltje van de walkman naar de versterker kon vanmiddag de nieuwe plaat van Tjeerd en Kathleen (gekregen voor ceremoniemeesterschap) op een cassettebandje worden opgenomen. Zo luister ik nu naar de vrolijke muziek van Schütz terwijl ik mij zet aan het schrijven in dit dagboek. Wat wil je horen: enkele indrukken van dit moment of een overzicht van de hoogtepunten van de afgelopen week? Allebei kan ook. Ik nip aan mijn glaasje palinka en stel vast dat deze zondag tot de categorie zeer aangenaam behoort. Vanochtend zo waar een rondje hardgelopen in het Vondelpark (16'32”78), dat viel niet mee na de winterstop van enkele weken. Het Vondelpark lag er schitterend bij vanwege de pas gevallen sneeuw, windstilte en opgaande zon aan een wolkenloze lucht. Na ontbijt en het maken van een paar foto's van jouw zwellende gestalte met de auto naar Graft om daar een uurtje te gaan wandelen. Wat een mooi dorpje! Een oud stadhuisje uit 1632 of daaromtrent, alles wit besneeuwd. Je krijgt even zin om te verhuizen naar zo'n paradijselijk boerderijtje. Voor kinderen lijkt het daar wel een stuk aangenamer dan in de stad, zeker op zo'n moment. Maar ja, dagelijks de Coentunnel door om op de VU te komen is niet aangenaam. Frans Oudejans, die in De Rijp woont Gaat 's zomers wel eens op de fiets, een racefiets welteverstaan met volledige wieleruitrusting. De wandeling mocht niet te lang duren omdat we op tijd terug moesten zijn, niet voor de kerk zoals je zult denken, maar voor de Europese schaatskampioenschappen. In Zweden, waar de wedstrijd werd gehouden, voor het 12 tot 17 graden. Onze nationale trots, Hein Vergeer, won door op drie afstanden als eerste te finishen. Hoe lang is het geleden dat Ard Schenk zoiets presteerde. Hoe lang is het geleden dat we reusachtige tabellen bijhielden waarin alle rondetijden werden genoteerd? Na een uurtje Italiaans (nieuwe oefeningen voor het computerprogramma) het dagboek. Op zo'n zondag kun je een beetje tot jezelf komen. 

Dan nu de hoogtepunten van deze week.
Maandag overdag kwam Meindert met enkele collega's van de vakgroep Onderwijskunde uit Leiden op bezoek om te praten over hun en ons onderzoek op het gebied van rekenen. Het zit erin dat we kunnen samenwerken. Zij weten meer van rekendidactiek af en wij meer van de computer. Het lijkt erop dat we onze kennis kunnen combineren. Na afloop nog een tijdje met Frances gepraat. Zij kan soms met van die bliksemende ogen rondlopen, dat je denkt dat ze iedereen wel wat zou kunnen aandoen. Bleek dat Rita bij haar vertrek Frances geprest had om ook mee te gaan naar de bank. Gelukkig heeft Frances de avances afgeslagen. Mijn reactie was: volgens mij verveel je je naar korte tijd dood bij zo'n bank. Ik heb geprobeerd een beetje een peptalk te geven. Verwacht veel van het project dit jaar: goed rekenprogramma, overgang naar micro's, mooie samenvattingsfaciliteit etcetera. Het ligt mij niet erg maar ik geloof dat het hoort bij een projectleider om iedereen moed in te praten. Ga er meer een gewoonte van maken. Verder afgesproken om regelmatig over Frances' werk te overleggen. Ze verliest volgens mij snel het overzicht. 

Maandagavond Tjeerd en Kathleen op het vliegtuig gezet. De familie Ferrier gedroeg zich heel dapper. Ging allemaal heel snel en zonder veel (uiterlijke) hartstochten. Kathleen heeft een heel warm temperament en vloog iedereen dan ook krachtig om de hals. We zien ze in ieder geval weer, hoewel wij dan met z'n drieën zullen zijn zoals Kathleen zei, wat mij (en jou en Kathleen) wel ontroerde. Ook Tjeerd gaf mij een zoen, een nieuwe ervaring! Ze zijn nu met vakantie met hun hopelijk niet te kleine nieuwe tent, ons huwelijkscadeau.

Dinsdag de hele dag thuis aan hoofdstuk 5 gewerkt en toen zowaar afgekregen, mede dankzij de vierstruif van mevrouw Bischoff waarvan jij maandag een flink stuk uit Heerde meebracht

Woensdag de hele dag hoofdstuk 3 en hoofdstuk 5 ingetypt, idem 's avonds en 's nachts tot 4 uur! Ik dacht dat er geen eind aan kwam!

Donderdagochtend ingeleverd bij Fokkema en De Swart. Verhaal op de cognitieve sectie liep redelijk, concentratie of verschillen tussen A- en B-proefpersonen: aantonen dat A- en B-aanpak consistent is! Dit zaterdag met trillende vingers thuis gedaan. Lijkt dat B-proefpersonen beter bij hun aanpak blijven (over de vier taken die ze uitvoeren). A-proefpersonen wisselen vaker van strategie, de strategie is minder stabiel. Klopt met andere gegevens. Lijkt er steeds meer op dat A-aanpak echte beginnersaanpak is en B-aanpak expert aanpak. Dat zou een mooie resultaat zijn!

Donderdagavond eerst naar de vroedvrouw en jawel: het hartje van de kleine horen kloppen! Wat een wonder! Ik kan er nog steeds niet bij dat daar nu een klein zelfstandig wezentje aan het ontstaan is dat al met zijn/haar eigen hartje klopt! Na dit heuglijk gebeuren met Jozien en Tertius in de stad gegeten. Tertius vertelde van zijn school: een ouderwets gymnasium met plusminus 500 leerlingen. Zo te horen heeft hij het er erg naar zijn zin. Met de kwekerij was het het afgelopen najaar beter gegaan dan het jaar daarvoor. Tertius doktert aan een meerjarenplan.

Vrijdag een rommelige dag waarin zich de korte nachtrust van woensdag op donderdag deed gelden. Vrijdagavond borrel van Kees in Odeon ter gelegenheid van zijn benoeming tot notaris.

Zaterdag met veel vrees en beven de eerdergenoemde berekening van de standvastigheid van de A- en B-proefpersonen uitgevoerd met redelijke uitkomst. Verder geen schokkende gebeurtenissen.

De nieuwe week begint met daarin onder andere: implementatiehoofdstuk afmaken (niets aan gedaan deze week!), Unesco bezigheden, Pabo docenten aanstaande donderdag, dinsdagavond discussie binnen bestuur vereniging A.S.E. over vrouwenemancipatie. Ik hoop dat de week een beetje volgens plan verloopt, een plan dat ik nu ga maken.
"""De doop van Sara. Je voelt vaders afwezigheid heel sterk op zo’n dag. Huub Oosterhuis noemde vaders naam in zijn openingswoord. Het lied “Zij die stom zijn …” kon ik niet helemaal meezingen. De toespraak was heel mooi, om van buiten te leren. Ik weet dat dit mijn plaats is, de inspiratiebron waaruit ik wil putten. Hoe eenzijdig of eenkennig moet je daarin zijn/worden? Sara zag er prachtig uit in de doopjurk. Ze keek helder rond en huilde niet. Iedereen was er, behalve Harry. Verder ook Elzemien en Josien, en Herman Holtmaat! Het kinderkoortje zong heel enthousiast. Al met al een hartverwarmende dienst. Huub hield Sara na het dopen hoog in de lucht, een prachtig gebaar. Cathrien kon het allemaal goed volgen, mede dankzij Gerry’s aanwezigheid. Vanmiddag een gezellige bijeenkomst. Moeder dwingt nog steeds ieders respect af. De familie vertrok weer snel. Titia en Jan Willem moesten nog naar een zuster van T. Met de Van Remmens en Florence en Alfred en Huub nog even doorgepraat. Moeder was even aangedaan, misschien door de video van Janny’s feest, of omdat ze vaders zegelring aan Tammo gaf. Volhouden!
Eerste dag van Berend! Cathrien reageert toch weer anders dan toen Sara geboren werd. Toen concentreerde ze zich erg op de poppen en speelde alles na. Nu let ze veel meer op de baby zelf, wil hem uit de wieg halen, keutelt tegen hem, etc. Ze is echt de grote zus. Sara heeft nog niet erg in de gaten wat er gaande is, graait wel vrolijkk naar het kleine vriendelijke wezentje. Berend slaapt op 't ogenblik heel tevreden in zijn wiegje, maar, zoals moeder vanavond door de telefoon zei, "de honger moet nog komen". Dan gaan we hem pas echt leren kennen. Vanavond realiseerde ik me dat je bij een "zoon" toch weer aan andere verantwoordelijkheden denkt. Moet ik hem leren voetballen, etc. Hij zal toch ook weer ander speelgoed gaan krijgen. 'k Ben toch wel heel trots op kleine Berend, hoewel drie dochters natuurlijk ook hun charme gehad zouden hebben. De nieuwe pen schrijft heerlijk. 
Moet betalingen doen en belastingformulier invullen.  Toch nog even wat aantekeningen. A.C. klaagde gisteren weer over rugpijn en veel te hoge bloeddruk. Ze maakte inderdaad de laatste tijd een gestresste indruk. We zaten in de auto op weg naar het uitgestelde promotiediner van Emiel Felix die inmiddels in Vught woont. Ik reageerde in eerste instantie nogal geïrriteerd: heb je dan niets geleerd van de hernia in januari '92? Gaat het leven gewoon door op de oude verkeerde voet? Nu besef ik dat ik zelf ook weer terug gevallen ben. Na jan.  vorig jaar had ik me voorgenomen om veel meer de lakens uit te gaan delen thuis. Heb dat ook een tijdje gedaan. Nu gaat het weer als vroeger. Vandaag heb ik geprobeerd om de touwtjes weer wat steviger in handen te nemen.  Vanochtend aan tafel besproken wat we gingen doen en taken verdeeld. Ging allemaal heel ontspannen en vlot. Anne was er erg blij mee. Het liep in Egmond heel goed. Koude maar stralende dag. Iedereen kwam met rood verbrande koppen thuis. Deze week proberen om (1) Anne elke avond om 10 uur naar bed te krijgen, en (2) elke ochtend kwartier eerder op te staan (6 uur en ½7). 
Even verder over Moeder. De dokter reageerde nuchter: “Laten we eerst de stand van zaken opnemen.” Alle reflexen en vitale functies bleken in orde. Hij vroeg vervolgens hoe lang Moeder al alleen woont. Toen ze zei dat ze sinds Vaders dood, zeven jaar geleden, alleen woont was zijn reactie: “Waarom doet U dat?” Hij noemde het pension aan de overkant van de straat. “Waarom gaat U niet naar de overkant? Daar is het leuk.” Reactie van Moeder: “Ik was toch al onderweg naar de overkant?” Enfin, Moeder beschouwde dit als een vingerwijzing Gods en intussen is het zover dat ze op 1 maart verhuist. Tussen 1 maart en 1 mei moeten we de inboedel verdelen, voorzover ze die niet zelf meeneemt. Proberen de zaak voor de zomer te verkopen. Hoe is het mogelijk, zo snel allemaal. Moeder is helemaal verzoend met het idee, verheugt zich erover dat ze zich van nu af aan lekker gaat laten verwennen. Het echtpaar Kloots maakt een vriendelijke indruk. We kunnen niet veel anders dan deze stap aanmoedigen. 
We moeten de komende tijd een rondgang door het huis maken en de nagaan wat van onze gading is. De kinderen schreven meteen op een brief: koekoekklok en reesbaan. Eerst maar eens zien wat Moeder zelf meeneemt. Weemoed, afscheid, etc. Je kunt het ook zien als een laatste fase, die hopelijk nog een tijdje kan duren. Men vroeg zich woensdagavond af of Moeder wel voldoende vitaminen etc. binnenkreeg, de laatste tijd. Meer vitamine B12, dat is goed voor het zenuwstelsel. Wie weet, leeft ze in het bejaardentehuis helemaal op. 
Gisteravond leesclub over “Oorlog en Vrede” van Tolstoi. Helaas zelf niet gelezen. Wel opmerkelijk een stuk in HP/De Tijd over het leven van Tolstoi. “Uit zijn dagboeken blijkt dat Tolstoi leed aan een grenzeloos verlangen naar zelfvervolmaking. Al in zijn vroegste aantekeningen bindt hij de strijd aan met zijn zwakheden. En dat waren er nog al wat. Hij vond zichzelf aanstellerig, apathisch, bangelijk besluiteloos, hoogmoedig, ijdel, instabiel, lui, altijd in de contramine, een naäper, te zelfverzekerd, zinnelijk en nog goklustig ook. Om zijn ondeugden te bestrijden legde Tolstoj zich allerlei beperkingen op. Zijn leven lang bleeg hij in gevecht met zichzelf. In de loop der jaren zou hij—met meer of minder moeite—alles ontzeggen waar hij vroeger op gesteld was geweest. Bezit, vlees eten, roken, jagen. Alleen zijn lusten kon hij niet de baas.”
Hoewel het Onderwijscentrum op punt van omvallen staat voel ik me toch behoorlijk opgewekt vanwege de steun die we van veel kanten krijgen. Ik vraag me af of de decanen nog iets kunnen bereiken, denk het eigenlijk van niet. Afgelopen week in Lissabon geweest voor een vergadering van het EARLI bestuur. We hebben een goede basis gelegd voor mijn presidentschap dat in augustus begint: nieuw tijdschrift (electronisch, open access), lezingen, SIG coordinatoren meer betrekken.

Gister was een prachtige dag, boven 23 graden! Gister eerst naar Voorschoten om nog even stil te staan bij Meinderts verjaardag. 's Middags naar Egmond waar we nog net even van de zon konden genieten. Vanavond thuis gegeten,  gezellig met iedereen. Anne-Carien maakt zich zorgen of Manouk wel een blijvertje is. Vond haar nogal in gepeins verzonken vanavond. We zullen zien.
Net terug uit Ermelo, waar we Vaders 77e verjaardag hebben gevierd. Het weekend begon vrijdagavond al in Ermelo met dia's bekijken, eerst van ons uit Boedapest, daarna vier dozen van Vader van de vakantie van afgelopen zomer in Berchtesgaden. De reden van onze vroege komst was dat we zaterdagochtend bij het bezoek van de familie zouden helpen met het serveren van koffie en gebak. Het was leuk om Vader 's ochtends bij het ontbijt te kunnen feliciteren. Hij is met zijn 77 jaar nog heel vitaal en doet niet onder voor een 70-jarige. Dat geldt trouwens ook voor moeder. De koffievisite verliep heel genoeglijk: tante Aly en Oom omke, tante Jelly (om 12 uur met de roestige Renault van de trein gehaald), tante Frouke met Ankie, Oom Wim en tante Janny. Ik zat naast oom Wim en kon genieten van zijn krasse uitspraken zoals: "Ik heb nog geen bril, nog geen vals gebit, maar wel kleinkinderen." Iedereen leek in goede doen. Bij het vertrek om half drie stond er opeens een oud-leerling van de b.l.o.-school in Alphen aan den Rijn op de stoep die op de verjaardag van meester Beishuizen een hele busreis uit Wieringen had ondernomen. Aangezien hij nog enkele bezoekjes wilde afleggen en ook graag op 's Heerenloo naar de kerk zou gaan (hij had als pupil enkele jaren op Groot Emaus gewoond) bood moeder hem een slaapplaats voor de nacht aan hetgeen in dank werd aanvaard.
Om half vier verzamelde ieder zich in Harderwijk bij Jan en Janny. Er stond alweer een overheerlijke dis aangericht. Vader kreeg uit handen van Meindert twee boeken als cadeau overhandigd. En bedankte met een uitvoerige toespraak. Ik haf de walk-man meegenomen en probeerde van deze en gene enkele wederwaardigheden vast te leggen. Dat lukte wonderwel. Het bleek een goede manier om iedereen weer eens wat uitvoeriger te spreken: Mieke over haar wijk met 12 wijkverpleegsters en de drukte van huishouden plus baan (Meindert werkt 100%, Miek wil per 1 juni naar 80%), Janny over de succesvolle Filmnacht, Ton over zijn studie en verhuizing van de Amstelkade naar de Omval, Tammo over zijn studie aan de tudelft en zijn belangstelling voor hydromechanica, Thole, Corry en David over Davids plannen: I.V.O.-mavo of gewone MAVO. David is heel impulsief in zijn gedrag en bezint zich zekden op wat hij moet gaan doen. Ik heb beloofd om na te gaan of ik iets kan vinden over trainingsprogramma's voor impulsieve kinderen. Hij is ook nog wel heel erg kinderlijk in zijn doen.
Om 23 uur 30 gingen we voldaan weer naar Ermelo. Vanochtend Kees Keizer (de logerende oud-leerling) naar de Opstandingskerk op 's Heerenloo gebracht (en geconstateerd dat ons oude huis aan de Groene Allee 45 is afgebroken bij gebrek aan bestemming!), daarna naar de Immanuelkerk. Vanmiddag weer terug.
Over de week is verder weinig schokkend te melden. Maandag een effectieve M.T.-behandeling ondergaan. Op de VU zijn de plannen helaas niet allemaal uitgevoerd. Frances ziek. Michael Felt achter de broek gezeten om de aanpassingen voor de IBM PC klaar te hebben voor de Nationale Onderwijstentoonstelling waar we aanstaande donderdag acte de présence geven. Hoop dat het lukt. Verder het programmeerwerk van Henks onderzoek afgemaakt. Dinsdag een dagje op de BIO Mytylschool geweest om daar het een en ander te horen over educatieve computerprogramma's voor leerlingen in het speciaal onderwijs (met name motorisch gehandicapten) die in Engeland zijn gemaakt. Guus op het concentratieonderzoek gezet die daarmee vol ijver van start is gegaan. Er wordt dus wel hard gewerkt. Nog even met Fokkema gepraat over de ingeleverde hoofdstukken. Ik maakte me een beetje zorgen over de kwaliteit. Hij had nog niets gelezen maar meende dat, als de hoeveelheid nog niet genoeg was, er nog wat extra literatuurstudie moest worden gedaan. Het feest kan dus in ieder geval doorgaan. Hans de Swart is met vakantie. We hebben een afspraak gemaakt voor eind februari om twee hoofdstukken voor die tijd af te werken. Deze week moet het implementatiehoofdstuk af!! Vanavond een planning gemaakt, de keuken opruimen, een brief aan Jan Willem en Titia schrijven en naar Van Kooten en de Bie kijken.
"""Vanochtend met Cathrien naar het aquarium geweest. Ze vond de grote vissen wel een beetje griezelig. Liever de kleintjes. Bij een aquariumbak stond het water laag, met erboven waterplanten etc. “Hé, water”, riep Cathrien opeens. Buiten was het erg winderig. Toch nog even naar de ijsberen, de gorilla’s en de nijlpaarden. Cathrien vond het allemaal erg leuk en kwam opgewekt keuvelend thuis. Ze werd na het middagslaapje huilend wakker wat ik pas na een tijdje hoorde (babyfoon niet aan!). Ik was net met Sara bezig. Naar boven. Cathrien hevig overstuur. Onduidelijk wat er mis was. Beneden klaagde ze over oorpijn. Finimal-tabletje deed wonderen. Oorpijn zakte snel af. Nu is het 11 uur. Cathrien is erg onrustig, nog weinig geslapen. Werd huilend wakker met pijn aan haar hand (?). Misschien erop gelegen. Wat is er aan de hand, wat is de oorzaak? Ik houd het erop dat ze geschrokken is van de oorpijn (misschien in Artis opgedaan) en nu een beetje bangig is. Hopelijk kan ze de slaap vatten. Het is nu rustig. Er zijn weinig dingen die Cathrien nog niet kan zeggen. Ze gebruikt “geworden” goed, is steeds aan het “waarom”-men. Zegt soms “hoor” of “hè” aan het eind van een zin. Af en toe: “Weet je wat, …” en dan volgt een ontboezeming.
"""Voor het eerst na ± 30 jaar weer geschaatst.
23.15 uur. Een voorjaarsdag met bezoek aan Artis. Cathrien wordt ineens een stuk nieuwsgieriger. Wil in alle hokken en over alle randjes kijken. Er zat een groepje amateurschilders te werken bij de kooien van de tijgers en panters. Cathrien gaat met haar handen op haar rug naast een schilderende mevrouw staan om de kunst eens even af te kijken. Koninginnedag was gisteren (zaterdag). Anne kwam na een rondje hardlopen in het Vondelpark om &plusmn; 8.30 uur terug met een tas vol koopjes voor iedereen, jurken en broeken, etc.

Deze week zeer hard gewerkt aan  subsidieaanvraag voor Psychon. Ziet er goed uit. Ben benieuwd wat het wordt. Gister geweldige "weekendkoppijn". Dacht even dat de overspanning zou toeslaan. Vannacht ook veel koppijn en slecht geslapen. Vandaag over. Vanmiddag als een blok geslapen. Toch wel een beetje blijven uitkijken. Zou eigenlijk nog eens wat vaker moeten gaan hollen. 's Avonds als de kinderen in bed liggen of 's ochtends vroeg? Je merkt ook dat je tegen routine-activiteiten erg gaat opzien. Andries Sanders zei laatst: als je in gewone activiteiten energie moet gaan steken zit je fout. Klopt wel. Onderscheid maken bij plannen tussen wat routine is en wat extra effort vraagt. 
Vanochtend vroeg ik aan Cathrien: wil je me vandaag een beetje helpen (AC moest werken)? C. meteen: Ja hoor dat wil ik wel, met de kleintjes spelen en zo. Ze heeft vandaag voorbeeldig haar best gedaan. Het ging eigenlijk heel ontspannen. Saar was wel erg hangerig. Veel met duim en popje. Zou ze toch wat onder de leden hebben? Bij Berend moet je af e toe fysieke kracht gebruiken, bijv. om zinkzalf op zijn billen te smeren. 
Eerste lekkere lentedag in Egmond. Tot nu toe verloopt het voorjaar nogal frisjes. Maar vandaag dus echt aangenaam buiten. De mezen in het nestkastje vliegen af en aan om hun jongen van voedsel te voorzien. 

Afgelopen weekend zaten we met Sara en Toon, en Cathrien en Jochem en de kinderen in Diepenveen in het huis van Richard. Helaas waren Berend en Sietske niet van de partij vanwege de corona. Toch heel gezellig met de kleintjes die veel samen gespeeld hebben, vooral Els en Mercia. Zie de foto's.

<<ximg width:75% "/Foto's/1622410610566.jpg">>

<<ximg width:75% "/Foto's/1622410669472.jpg">>

<<ximg width:75% "/Foto's/1622410713069.jpg">>

<<ximg "/Dagboek/20070805 Dagboek.png">>
Alweer 2 keer 2 febr. geweest zonder vader. Donderdagavond in Ermelo met Jan en Janny. Moeder was heel goed op dreef. Nog weer een vaders laatste dag en nacht besproken.

Zondagmiddag. Sara zit in haar stoeltje aan tafel met waterpokken. Lekker aan het kletsen en met haar boekjes te rommelen. Berend ligt in de box, ook met waterpokken. Ook Berends humeur lijdt er nog niet onder. Hopelijk blijft het zo. Berend kraait vrolijk in de box, kan zeer enthousiast met zijn voetjes tegen het activity center schoppen. "Boekje lezen!" zegt Sara nu. Zo meteen verder schrijven.

't Is nu kwart voor 5. Berend even in bed gestopt maar na aanhoudend gebrul er maar weer uit gehaald. Zit nu in het stoeltje op het kastje in de keuken "Tatata" en "sprgr ..." te zeggen. Met zijn voeten fanatieke fietsbewegingen. De pompoen staat te pruttelen op het fornuis. Op de radio Guus Feijst die een uitvoering van het vioolconcert van Beethoven afkraakt in "Discotabel", het favoriete zondagmiddagprogramma. Sara geeft Poppejans neusdruppels, iets waaraan ze zelf een hartgrondige hekel heeft. Cathrien en Anne zijn met D&E naar een huisje in de duinen kijken dat te koop staat. 
"""
Gisteren de vijftiende Elstedentocht. Van de 16.000 deelnemers zijn er 10.000 aangekomen. De wedstrijd was heel spannend. Van de weeromstuit gaan we vandaag nog een tochtje maken. Wellicht bij Driehuizen. Twee regels vandaag: blijf met jezelf in gesprek en verleen sociale ondersteuning.
<style>body {font-family: 'Ubuntu'; line-height: 130%; }</style>22.30 uur. Helaas, meer dan twee maanden is het dagboek dicht gebleven. Nu maar weer met frisse moed verder. De voorspelling op de vorige bladzijde is al uitgekomen: Joke van Eekeres woont sinds 14 dagen in Amsterdam en wel bij ons op de zolderverdieping. Saskia slaapt op het blauwe kamertje, Joke op de grote kamer. Tot nu toe lijkt alles goed te gaan. Ze zijn allebei erg rustig en sluipen op de tenen door het huis. De stemming klaart dacht ik al behoorlijk op, hoewel dat bij Joke moeilijk te peilen is. Ze is opgewekt maar ik kan niet nagaan of ze soms een vrolijke stemming forceert. Hoe dan ook: ik hoop dat ze gauw weer een beetje de oude wordt. 

De afgelopen week vrij genomen om aan het kamertje te werken wat zowaar gelukt is. Op een paar kleinigheden na...
!!! Tweede vakantiedag

Om half zes aangekomen bij Casa Crocetti, 1568 km gereden. Goeie reis, geen problemen, wel lekker gaar. Vanavond gegeten bij Dei Priori, vanouds lekker en ook goed bezet. Ouders en zoon bleken de coronacrisis goed overleefd te hebben. Moeder zwaait nog steeds de pollepel  in de keuken, vader en zoon bedienen. Zoon lijkt misschien iets te goeiig om de zaak echt over te kunnen nemen. Maar het eten en de sfeer waren weer prima. Concert bleek niet in de kerk maar bij de kerk,  lekkere schreeuwende muziek met een dj. Maar om 8 uur 's avonds nog niet veel publiek. 
Zondagochtend in Competa. Half 8 en nog donker. Althans zo lijkt het. Grappig artikel in de Volkskrant van gisteren. Over het feit dat je als man meer met de vuist op tafel moet slaan. dat vrouwen dat eigenlijk ook verwachten. Dat lesbische relaties op een gegeven moment stoppen met sex terwijl dat in homorelaties niet of minder voorkomt. 

Gisteren een prima eerste wandeling gemaakt. Landschap is hier minder afwisselend dan op Sicilië,  plaatsjes wat moderner en spierwit. Eten prima en weer zeer aangenaam: 23° en zon. 
""" Wegens grote hilariteit bij de uitvoering hierbij een conference voor Harry’s 50ste verjaardag.

Het geestelijk leven van Harry, drie telefoongesprekken

Thole: 	Ja hallo, met Thole Beishuizen.
Jos: 	Hallo Thole, met Jos hier. Hoe gaat het bij jullie?
Thole: 	Goed met ons, en met jullie?
Jos: 	Eh prima, wat ik vragen wilde: Doen we nog iets met Harry’s 50ste verjaardag?
Thole: 	Dat hebben we aan de Waal geregeld. Wij maken een lied over onze vakanties aan de Waal. En voor jou hebben we een wat steviger onderwerp uitgekozen: Harry’s geestelijk leven.
Jos: 	Wat zeg je? Berend, wees even stil, ik kan oom Thole niet verstaan.
Thole: 	Zijn GEESTELIJK LEVEN! Zijn rondreis langs de vrijzinnigen, de humanisten, enzovoorts.
Jos:	Hoe houden we dat een beetje luchtig?
Thole:	Nou ja, misschien kun je iets over zijn zondagsschool activiteiten doen. Hij heeft daar toch van die aardige vrijzinnige alleenstaande dames ontmoet? 
Jos:	Was dat met die strandwandelingen?
Thole:	Nee, die strandwandelingen komen in het lied over Harry’s hobbies.
Jos:	Wat kunnen we dan over de zondagsschool vertellen?
Thole:	Nou ja, hij heeft daar geprobeerd om het geestelijk leven van kinderen een beetje op te vijzelen door verhalen uit de Bijbel uit te werken in een les. Het verhaal wordt voorgelezen. Dan volgen vragen voor een groepsgesprek.
Jos:	Een goed idee... Ik zoek zelf juist zoiets voor onze kinderen. Waarom is hij daar niet mee doorgegaan?
Thole:	Hij denkt er nu geloof ik weer een beetje anders over. Bel Janny nog maar eens op. Tot zondag!
Jan:	Met Klein.
Jos:	Dag Jan. Met Jos in Amsterdam. Ik zou jullie nog even bellen in verband met Harry’s 50ste verjaardag.
Jan:	Ik geef je Janny even.
Janny:	Hallo kleine broer. Hoe is het bij jullie?
Jos:	Hier gaat het best, maar ik bel je over Harry’s 50ste verjaardag.
Janny:	O ja. Dat hebben we al piekfijn voor je geregeld. Jij maakt een geestig en luchtig sketchje over Harry’s geestelijk leven.
Jos:	Iets luchtigs over Harry’s geestelijk leven... Heb jij nog een suggestie?
Janny:	Nou ja, je weet vast wel iets. Harry heeft toch actief het humanisme uitgedragen. Hij heeft humanistisch vormingsonderwijs op de basisschool gegeven. Over onderwerpen als agressie en ruzie wist hij die kinderen heel goed aan de praat te krijgen.
Jos:	Hoe maak ik daar iets luchtigs van?
Janny:	Weet je wat? Doe iets over zijn cursus uitvaart begeleiden. Dat heeft hij toch ook bij de humanisten gedaan? Kun je daar niet iets geinigs mee doen? Iets met hoge hoeden. Of nee .... een lied op de wijs van de tophit van Mieke Telkamp: (zingt:) Waarheen leidt de weg ...
Jos:	Ik geloof dat ik Meindert nog even bel. Tot zondag!
Janny:	Tot zondag!
Meindert:	Met Beishuizen.
Jos:	Ha Meindert, met Jos. Ik wilde even iets vragen in verband met Harry’s 50ste verjaardag. Weet jij hoe het daar op dit moment mee staat?
Meindert:	Heel goed, het hoofdonderzoek loopt prima. We hebben de scholen verdeeld. Leuk om weer eens regelmatig leerlingen op een basisschool van nabij te volgen.
Jos:	Ja, dat kan ik mij voorstellen. Maar het ging even over Harry. Heb jij nog een suggestie voor een sketchje over Harry’s geestelijk leven?
Meindert:	Ik geloof dat wij een taart maken, Mieke is al druk in de weer. Wat doen jullie?
Jos:	Wij zullen een luchtig sketchje maken over Harry’s geestelijk leven. Heb jij nog een suggestie?
Meindert:	Nou ja, ik herinner me natuurlijk veel voorvallen van vroeger. De geboorte van Harry viel in de laatste oorlogswinter. We beleefden spannende tijden in Sneek. Maar het voert misschien iets te ver om helemaal terug te gaan naar dat moment. Misschien moet je juist vertrekken vanuit Harry’s huidige geestelijk leven: zijn ambities om schrijver te worden. Harry heeft een boodschap en zoekt naar de juiste vorm om die boodschap te vertellen, dat is zijn geestelijke worsteling.
Jos:	Wilde hij vroeger niet zendeling worden?
Meindert:	Ja, precies! Aan die roeping is hij steeds gevolg blijven gegeven. Hij is een roepende in de woestijn van de postmoderne mens. Sartre! Camus! Kierkegaard!
Jos:	Het moest wel een beetje luchtig blijven...
Meindert:	Benadruk in ieder geval, dat Harry’s omzwervingen ten doel hebben om de juiste vorm te vinden voor zijn boodschap aan de mensheid. De boodschap verandert niet, het is een kwestie van zoeken naar de juiste vorm. Maak daar maar een vrolijk liedje op.
Jos:	Iets met kannibalen en een man met een witte helm in de kookpot. Ik denk er nog even over na. Tot zondag!
Meindert:	Tot zondag!
"""Een rustige zondag na het feestmaal bij de benedenburen. Vanochtend een rondje hard gelopen in het Vondelpark, daarna ontbijt en Sara in bad gedaan. 
"""
‘s Avonds opruimen en de volgende dag voorbereiden. Dat blijkt moeilijker dan ik dacht. Ik zal het opnieuw gaan  proberen. 
 
Een schokkend weekendje, vond ik. Vrijdagavond bij Meindert en Mieke gegeten. Allemaal heel feestelijk en gezellig, tot Meindert begon aan zijn rampzalige kamikaze actie. Klacht over zijn indruk dat Mieke de zwarte piet van het mislukken van de Israel reis met Jan Willem en Titia kreeg toebedeeld. Maar hij had zich zelf ook vreselijk geërgerd aan Jan Willems gedrag. Precies vader. Een soort Festen in Beizenproporties. Jan Klein zag zich, bij afwezigheid van Jan Willem, genoodzaakt diens positie toe te lichten. Wat weer felle reacties van Mieke opriep. Harry en ik vonden het allemaal niet erg verheffend en op ons verzoek werd de discussie gestopt. Ik ging met een zware kater weg, maar Anne vond dat weer een beetje overdreven. Goed dat de zaak is uitgesproken. Dat is ook weer waar. 
 
Anne-Carien en ik zijn in grote pedagogische zorgen beland nu Cathrien opeens verliefd is geraakt en meteen de indruk wekt voor de rest van haar leven in de zevende hemel te gaan wonen. Je raadt nooit waar en hoe ik het tweetal voor het eerst aantrof: In het krakerscafé Vrankrijk, vorige week vrijdag om half 2 's nachts, nogal in elkaars armen. Ik ben eerst maar eens een biertje gaan drinken, om een beetje overzicht over de situatie te krijgen. Cathrien was met een paar klasgenoten naar dit etablissement getrokken. Een beetje een donker hol, geen reclame of ramen aan de straat. Gevuld met goedmoedige zombies, die we vroeger enigszins generaliserend "langharig werkschuw tuig" noemden. Een vredelievend sfeertje, maar wel erg donker en een beetje duister. Eigenlijk twee ruimtes: de barruimte en een dansvloer. Op de dansvloer twee vriendinnen van Cathrien. Ernaast een stel in innige omhelzing, waarvan ik eerst nog even dacht: "Het zal je dochter maar wezen", om vervolgens te constateren dat het wel degelijk Cathrien zelf was met een donkerharige krullenbol. Tsja, toen dus eerst een biertje. We hadden afgesproken dat ik Cathrien en haar vriendinnen Laura en Santje zou ophalen om half 2. Ze wilden eigenlijk tot 4 uur blijven, waar dat vonden wij een beetje te gortig. Na enig aandringen zijn we op de fiets huiswaarts gegaan, in een betrekkelijk zwijgzame stemming, behalve toen Cathrien op de brug van de Prinsengracht bijna een hek ramde. Cathrien bleek inderdaad een aardig aantal glazen bier op te hebben. Santje bleef bij Cathrien slapen. Ik bracht Laura even naar haar huis, hier vlakbij, en had dus de gelegenheid om even wat meer over de krullenbol te weten te komen. Hij bleek ook op het Ig te zitten (gelukkig...), maar een zittenblijver, opnieuw in de derde klas. En nu is het dus aan, hand in hand op het schoolplein, en mailen. Chatten hebben we verboden, vanwege de telefoonrekening... Gister stuurde Cathrien een mailtje, terwijl ik naast de computer iets met de printer deed. Uiteraard hield ik discreet mijn ogen op de printer gericht, maar Anne die erbij kwam staan, begon meteen gezellig mee te lezen. De jongeman bleek depressief en werd door Cathrien in alle toonaarden getroost en opgemonterd... 
 
Cathrien was vanochtend heel opgetogen over het bezoek aan de disco. Ik wil eigenlijk nog wel even over het uitstapje met haar praten. Ik veroordeel haar gedrag niet hoewel ik dat gevoos in het openbaar niet erg jofel vind. Wat ik wil zeggen is dat je geleidelijk aan moet werken aan de invulling van je eigen identiteit. Daarmee bedoel ik niet zoiets als je eigen karakter of je diepste zelf ontdekken. Iedereen heeft zijn sterke en zwakke kanten, en het is handig als je jezelf op dat punt leert kennen en accepteren. En je houding bepaalt. Bijvoorbeeld door je jezelf niet bloot te stellen aan verleidingen waaraan je geen weerstand kunt bieden. Aan je eigen identiteit werken is zoiets als keuzes maken. Kiezen voor een bepaalde manier van leven, bijvoorbeeld je beroep, maar ook je interessegebieden, je vrienden, je omgang met je vrienden, je uiterlijk, je levensovertuiging. Daarin moet je werken aan je eigen stijl. Dat is leuk om te doen. Experimenteren hoort daarbij. Onderzoek alle dingen en behoud het goede, zoals Paulus al zei. Dat café vond ik een bepaalde vriendelijke maar ook onbekende sfeer uitstralen. Er zat ook een zeker nihilisme in, wat ik niet echt aantrekkelijk vind. Probeer te bedenken wat je wel en niet wilt. Laat je niet meeslepen in avonturen waarvan je achteraf spijt krijgt. Doe niet uitsluitend mee omdat je er koste wat kost bij wilt horen. Kies je eigen stijl. Zoiets. 
Erg leuk om alle oude dagboekfragmenten bij elkaar te brengen. We zitten nu op 360 aantekeningen. Hoeveel is het totaal?

[[woensdag 8 augustus 2001]]

Zo is het gewoon. Waardoor wil ik zondag 7 maart 2021 onthouden?

*Hoofdstuk in Bakewell gelezen
*Hoofdstuk in Radetzkymars gelezen
*Review weggestuurd
*Stuk Sietske gelezen en van commentaar voorzien
<<pdf "/Dagboek/20170507 Dagboek.pdf">>

[[https://docs/google.com/viewer?url=https://filedn.com/lEFtF675HQD86Dw6hctjb9S/Dagboek/20170507 Dagboek.pdf]]

Wat superhandig, deze Dagboek-knop. Gaat zeker helpen om vaker aantekeningen in het dagboek te maken. Wat hebben we de afgelopen week gedaan. Gezellige week in De Steeg doorgebracht, in hotel Rhederoord. Het hotel is een 19e eeuws landhuis met mooie hoge vertrekken. We hadden de kamer met het kleine balkon, midden op de eerste verdieping. Zie de foto en ook het uitzicht op de voorbijlopende herten.

|<<ximg width:75% "/Foto's/IMG_20210804_092550.jpg">>|<<ximg width:100% "/Foto's/DSC07075 (2).JPG">>|

Doesburg was een ontzettend leuk stadje. Veel mooie straatjes en gebouwen. 

|<<ximg width:% "/Foto's/IMG_20210803_131318.jpg">>|<<ximg width:% "/Foto's/DSC07055.JPG">>|
22.30 - Tijd om beneden af te sluiten. Berend krijgt nog een fles boven. Dan snel naar bed. Morgen om 6 uur weer op. Afgelopen week goed gelukt om de discipline erin te houden. In 't weekend ging het minder goed. Sara was gisteren erg ziek. Gisteravond 40.3. Mede dankzij de azijnsokken was de koorts vanochtend weer gezakt. Nu nog erg hoesten. Op dit moment nog onrustig (via de babyfoon). Ben benieuwd hoe het vannacht zal gaan.

Cathrien kreeg vanmiddag haar eerste en enige vioolles van Wenneke Savenije. Situatie was niet echt geschikt. Cathrien wilde niet veel aannemen van Wenneke. Ik ga informeren of de Suzuki-methode voor kinderen van haar leeftijd al iets is. Op Sara's kamer lag nog het dikke "Handboek voor Ouders" i.v.m. Sara's koorts. Toen Cathrien het zag liggen en ik op haar vraag uitlegde wat voor boek het was ging ze erin zitten lezen. Ze zocht naar treinen omdat Christien onder een Japanse trein was gekomen en toch niet dood was. Cathrien wordt weer wat groter en begint wat "spatjes" te krijgen. Ze moet af en toe ferm toegesproken worden. Ook moet je steeds meer uitkijken met praten over de kinderen waar ze bij zijn. Ton van der Stap vanochtend: "God, dat is de bodem van je ziel." Mooie gedachte ter aanvulling op mijn toespraak.
Geslaagd bezoek aan Tjeerd en Kathleen. Nog niet helemaal begrepen wat Tjeerd nu precies doet. Hij gaat naar Hongarije. Projecten op het terrein van kerk en onderwijs coördineren. Geen belangrijk nieuws. Joe Slovo is overleden. Hij was de leider van de communisten in Zuid-Afrika. Concentreerde zich op de organisatie en de strategie van het verzet binnen het ANC. Was de meest populaire blanke onder de zwarten. Joodse familie die uit Litouwen was gevlucht vanwege de pogroms. Orthodoxe Moskou-communist door de jaren heen. Kreeg daardoor onenigheid met zijn vrouw, die door een aanslag van de Zuid-Afrikaanse geheime dienst om het leven kwam. Dochters hadden grote aanpassingsproblemen in Londen. Hij heeft later zijn vrouw gelijk gegeven en afstand gedaan van zijn pro-Moskou opvattingen. Tragische levensgeschiedenis.

Wat wordt het bijzondere van deze dag? Dat ik mij een mening vorm over de selectieproblemen aan de Universiteit. Daar nu mee aan de slag.
Zondagochtend. Gisteren ijzel, waardoor we niet naar Deventer konden om Mercia te laten zien. Wel even naar Cathrien en Jochem geweest. Mercia kijkt al veel bewuster uit haar ogen. Ze wil steeds haar hoofdje optillen. 

<<ximg "/Foto's/201701 Mercia bij Anne over de schouder.jpeg"  width:350px >>

Sara heeft er weer een week Oncologie op zitten. Gaat haar niet in de kouwe kleren zitten. Ze was gisteren bij Cathrien wat stilletjes, is daar blijven eten. 

Sietske zit in haar nieuwe huis op het Smaragdplein. Heel mooi plekje, prima huisje. Berend heeft zijn stageverslag ingeleverd en begint volgende week aan zijn stage bij de GGD in Den Haag. 

Vandaag afscheidsdienst voor Céline Meulman, morgen de begrafenis op Zorgvlied. 

<<pdf "/Teksten/20170117 Toespraak Huub Oosterhuis.pdf">>
<<ximg "Pensionado/Geheugen/Dagboek/20061008 01 Dagboek.png">>
<<ximg "Pensionado/Geheugen/Dagboek/20061008 02 Dagboek.png">>
Lunch bij een Italiaan op Royal Street in New Orleans, French Quarter. Fantastisch weer, erg druk op straat, iedereen in zomerse kleren, jazzbandjes op straat, enorm gesnater overal. Ik ben hier vanwege de AERA conferentie en de bijeenkomst van de WERA. Vanochtend een presentatie gehouden over Inne's onderzoek naar leiderschapsstijlen in communities. Ging prima, dankzij mijn prezi. Deze keer echt een succes. Even goed om in een andere wereld te zijn, kikkert mij enorm op. \n\nVannacht een rare nachtmerrie gehad. Voorbereiding op presentatie, zoals vanmorgen. Ik woon alleen in een benedenwoning, rijtje van langwerpige huizen met een verdieping aan de Ferdinand Bolstraat? Ik ga het huis uit, loop naar het conferentiegebouw. Bedenk dat ik iets vergeten ben, kom terug en mijn hele huis is weg. Ik loop het hele rijtje langs, kijk overal door het raam naar binnen, nergens mijn huis. Ik begin in paniek te raken, kijk op mijn horloge en zie dat het al half 11 is, mijn presentatie begint! Komt opeens uit een van de andere huizen Pascal Wilhelm. Hij ziet mijn paniek en probeert mij gerust te stellen. Hij gaat niet mee zoeken, alsof hij weet dat ik matteklap ben. Anne-Carien doet op de achtergrond mee. Iedereen is verlegen met de situatie. Ik word wakker met hoofdpijn en het vage gevoel dat ik een herseninfarct heb. Wat overigens niet het geval is. Misschien is het jetlag.
"""
Op 3 januari 2017 schreef ik: "Kun je jezelf hullen in vriendelijkheid? Ik ga het eens proberen. Word je wel een saaie Piet van. Maar beter een vriendelijke saaie Piet, dan een brommende onberekenbare Piet".  Daar verlang ik hevig naar. Na de zoveelste ruzie met Anne de laatste tijd. Nu weer over haar gedoe met de planten gisteravond tijdens het etentje met de vrienden.  Dan moet je wel het kruis van je brommende onberekenbaarheid op je nemen en dat helemaal zelf dragen. De Harry in je is niet voor gemeenschappelijk gebruik. Ik zou moeten worden als Berend: altijd vriendelijk. En zou langzaam je dood tegemoet. Maar dan moet je ook je angsten voor je houden. Je moet alles voor je houden. 

Interessante Kohnstammlezing dit jaar: [[Paul Verhaeghe]]
"""12.12 uur: Saartje sabbelt nog wat na op haar laatste voeding. Ze heeft gepoept: niet helemaal normaal van kleur, dik en dun door elkaar. Ze spuugde ook nog al. Ze heeft ook flink gelachen. Vandaag onze eerste volle dag in Ootmarsum. Vanochtend tot 8 uur uitgeslapen! Na uitvoerig zondagochtend ontbijt Sara op tafel in bad gedaan, Cathrien erna, die wilde er niet meer uit. Daarna een fietstochtje naar Vasse. Enige festiviteiten daar: boerenkapel, koffie met krentewegge, boerenkarren uitgestald. Teruggefietst en de hele familie na de lunch in bed. Vanmiddag per auto naar Ootmarsum en daar rondgekeken. Cathrien vrolijk zingend en overal opklimmend. Ze was vanmiddag erg vrolijk, vanochtend op de fiets niet zo. De wind? ‘t Is hier heerlijk stil, weinig wind, echt om uit te rusten.
Morgenvroeg naar het dorp voor wat boodschappen. Verder weer lekker fietsen of bij huis rondscharrelen, afhankelijk van het weer. ‘t Is altijd een hele overgang, van hard werken naar vakantie. Tot nu toe lukt het aardig goed.
"""Vandaag een prachtige zondag, zonnig en rond de 15 graden. Mooie fietstocht naar het Twiske en weer terug gemaakt. Vanochtend gehoord in de kerk:

Klimmende zon, licht dat ons laadt met licht.
Liefde die liefde wekt, vuur dat ons loutert.
Voer ons de dood voorbij. Stem die ons roept.
Bron. Hart. Begin en einde. Onze Vader. 

Het deed mij denken aan de bekende woorden van Gerrit Achterberg:

Aan het roer dien avond stond het hart
en scheepte maan en bosschen in zich in
en zeilend over spiegeling
van al wat het geleden had 
voer het met wind en schemering
 om boeg en tuig voorbij de laatste stad.

''Sara''
Vanochtend las Sara het verhaal uit het evangelie voor over “geen zorgen voor de dag morgen”. Op mijn vraag naar de betekenis zei Sara: “Als je bijvoorbeeld vandaag iets fijns hebt, een partijtje of zo, en morgen iets naars, bijvoorbeeld dat je naar zwemles moet, dan moet je niet de hele dag aan dat nare denken, want dan is het vandaag ook niet leuk. Je moet gewoon alleen aan het fijne denken, dan valt het misschien morgen ook wel mee”. Ze heeft het heel goed begrepen.

''Berend''
Vanochtend heeft Berend in de kerk met brood en wijn meegeholpen. Hij moest de beker vasthouden en liep met Huub mee naar boven. Het ging allemaal heel goed. Vanavond hadden we het aan tafel over wat je later wilt worden. Berend wil archeoloog worden of politie. Later zei hij: “Als jij later een oud mannetje bent geworden, dan vind ik op het strand misschien wel de vliegmoer van het karretje terug”.  Hij bedoelde de vleugelmoer van het fietskarretje die we van ‘t zomer verloren hebben op het strand.

''Cathrien''
Op de vraag, wat wil je later worden, zei Cathrien: “Schrijfster, boswachter, of kunstenaar”.